neues event setzten (ohne casten), neue events(UserSendPhoto, UserSendDocument)
This commit is contained in:
parent
d359b89851
commit
1e7b3f4794
|
@ -8,9 +8,7 @@ import de.mrbesen.telegram.commands.CommandManager;
|
|||
import de.mrbesen.telegram.commands.FeedbackCommand;
|
||||
import de.mrbesen.telegram.event.Event;
|
||||
import de.mrbesen.telegram.event.EventManager;
|
||||
import de.mrbesen.telegram.event.events.UserCallbackEvent;
|
||||
import de.mrbesen.telegram.event.events.UserSendAudioEvent;
|
||||
import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
||||
import de.mrbesen.telegram.event.events.*;
|
||||
import de.mrbesen.telegram.log.Log;
|
||||
import de.mrbesen.telegram.log.Log4JLog;
|
||||
import de.mrbesen.telegram.log.SimpleLog;
|
||||
|
@ -43,7 +41,7 @@ public class TelegramAPI implements Runnable {
|
|||
private static final String API_URL_DEFAULT = "https://api.telegram.org/bot";
|
||||
private static final String TOKENREGEX = "^\\d{4,10}:[\\w-]{12,64}$";
|
||||
private static final int TELEGRAMFILESIZELIMIT = 20000000;//20MB filesize https://core.telegram.org/bots/api#sending-files
|
||||
public static final String APIVERSION = "3.9";//Feb 29, 2020
|
||||
public static final String APIVERSION = "3.10";//Jan 16, 2021
|
||||
|
||||
private int msg_offset = 0;
|
||||
private int updateInterval = 60;
|
||||
|
@ -508,7 +506,7 @@ public class TelegramAPI implements Runnable {
|
|||
}
|
||||
|
||||
/**
|
||||
* seconds to wait for longpolling or milliseconds to wait petween shortpolling
|
||||
* seconds to wait for longpolling or milliseconds to wait between shortpolling
|
||||
* @param d
|
||||
*/
|
||||
public void setUpdateInterval(int d) {
|
||||
|
@ -575,26 +573,28 @@ public class TelegramAPI implements Runnable {
|
|||
}
|
||||
} else {
|
||||
Event e = null;
|
||||
if(getMsg().has(Member.audio)) {
|
||||
e = new UserSendAudioEvent(getUser(), new TAudio((JSONObject) getMsg().get(Member.audio)));
|
||||
} else if(getMsg().has(Member.video)) {
|
||||
if(msg.has(Member.audio)) {
|
||||
e = new UserSendAudioEvent(msg);
|
||||
} else if(msg.has(Member.video)) {
|
||||
|
||||
} else if(getMsg().has(Member.document)) {
|
||||
} else if(msg.has(Member.document)) {
|
||||
e = new UserSendDocumentEvent(msg);
|
||||
} else if(msg.has(Member.photo)) {
|
||||
e = new UserSendPhotoEvent(msg);
|
||||
} else if(msg.has(Member.invoice)) {
|
||||
|
||||
} else if(getMsg().has(Member.invoice)) {
|
||||
} else if(msg.has(Member.location)) {
|
||||
|
||||
} else if(getMsg().has(Member.location)) {
|
||||
} else if(msg.has(Member.video_note)) {
|
||||
|
||||
} else if(getMsg().has(Member.video_note)) {
|
||||
} else if(msg.has(Member.game)) {
|
||||
|
||||
} else if(getMsg().has(Member.game)) {
|
||||
} else if(msg.has(Member.contact)) {
|
||||
|
||||
} else if(getMsg().has(Member.contact)) {
|
||||
|
||||
} else if(getMsg().has(Member.sticker)) {
|
||||
} else if(msg.has(Member.sticker)) {
|
||||
|
||||
} else {
|
||||
e = new UserSendMessageEvent(getMsg());
|
||||
e = new UserSendMessageEvent(msg);
|
||||
//call feedback cmd first
|
||||
if(!disableFeedback) {
|
||||
if (feedbackCmd.onMsg((UserSendMessageEvent) e)) {
|
||||
|
|
|
@ -57,9 +57,9 @@ public class FeedbackCommand implements JSONCommandHandler {
|
|||
|
||||
public boolean onMsg(UserSendMessageEvent e) {
|
||||
TUser user = e.getUser();
|
||||
TMessage msg = e.getMessage();
|
||||
TMessage msg = e.getMsg();
|
||||
if (awaitingFeedback.containsKey(user.getID())) { //user send a feedback
|
||||
removeMsg(user.getID(), e.getMessage());
|
||||
removeMsg(user.getID(), e.getMsg());
|
||||
if(isFeedback(msg.getText())) {
|
||||
//fwd to admins
|
||||
admins.forEach(a -> TMessage.forwardAsync(api, a, msg));
|
||||
|
|
|
@ -1,17 +1,5 @@
|
|||
package de.mrbesen.telegram.event;
|
||||
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public class Event {
|
||||
|
||||
private TUser user;
|
||||
|
||||
public Event(TUser u) {
|
||||
user = u;
|
||||
}
|
||||
|
||||
public TUser getUser() {
|
||||
return user;
|
||||
}
|
||||
public interface Event {
|
||||
|
||||
}
|
||||
|
|
|
@ -6,17 +6,17 @@ import java.util.function.Consumer;
|
|||
|
||||
public class EventManager {
|
||||
|
||||
private HashMap<Class<? extends Event>, ArrayList<Consumer<? super Event>>> listeners = new HashMap<>();
|
||||
private HashMap<Class<? extends Event>, ArrayList<Consumer<? extends Event>>> listeners = new HashMap<>();
|
||||
|
||||
public EventManager() {}
|
||||
|
||||
public void registerEvent(Class<? extends Event> eventtype, Consumer<? super Event> handler) {
|
||||
public <T extends Event> void registerEvent(Class<T> eventtype, Consumer<T> handler) {
|
||||
if (handler == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
|
||||
//get list
|
||||
ArrayList<Consumer<? super Event>> list = listeners.get(eventtype);
|
||||
ArrayList<Consumer<? extends Event>> list = listeners.get(eventtype);
|
||||
if (list == null) {
|
||||
//create and add list
|
||||
list = new ArrayList<>();
|
||||
|
@ -29,9 +29,9 @@ public class EventManager {
|
|||
}
|
||||
|
||||
public Event callEvent(Event e) {
|
||||
if(e == null) return e;
|
||||
if(e == null) return null;
|
||||
|
||||
ArrayList<Consumer<? super Event>> listner = listeners.get(e.getClass());
|
||||
ArrayList<Consumer<? extends Event>> listner = listeners.get(e.getClass());
|
||||
if(listner != null) {
|
||||
for (Consumer listn : listner) {
|
||||
try {
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package de.mrbesen.telegram.event.events;
|
||||
|
||||
import de.mrbesen.telegram.event.Event;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class MessageEvent implements Event {
|
||||
|
||||
@Getter
|
||||
private TMessage msg;
|
||||
|
||||
public TUser getUser() {
|
||||
return msg.getFrom();
|
||||
}
|
||||
}
|
|
@ -1,37 +1,27 @@
|
|||
package de.mrbesen.telegram.event.events;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.mrbesen.telegram.event.Event;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public class UserCallbackEvent extends Event {
|
||||
public class UserCallbackEvent extends MessageEvent {
|
||||
|
||||
@Getter
|
||||
private final String data;
|
||||
private final TMessage msg;
|
||||
private final String id;
|
||||
@Getter
|
||||
private final String ID;
|
||||
|
||||
public UserCallbackEvent(TUser u, String data, String id, TMessage msg) {
|
||||
super(u);
|
||||
super(msg);
|
||||
this.data = data;
|
||||
this.msg = msg;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public TMessage getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public String getData() {
|
||||
return data;
|
||||
this.ID = id;
|
||||
}
|
||||
|
||||
public JSONObject asJSON() {
|
||||
return new JSONObject(data);
|
||||
}
|
||||
|
||||
public final String getID() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,17 @@
|
|||
package de.mrbesen.telegram.event.events;
|
||||
|
||||
import de.mrbesen.telegram.event.Event;
|
||||
import de.mrbesen.telegram.objects.JSONBased;
|
||||
import de.mrbesen.telegram.objects.TAudio;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import lombok.Getter;
|
||||
|
||||
public class UserSendAudioEvent extends Event {
|
||||
public class UserSendAudioEvent extends MessageEvent {
|
||||
|
||||
@Getter
|
||||
private TAudio audio;
|
||||
|
||||
public UserSendAudioEvent(TUser u, TAudio a) {
|
||||
super(u);
|
||||
audio = a;
|
||||
}
|
||||
|
||||
public TAudio getAudio() {
|
||||
return audio;
|
||||
public UserSendAudioEvent(TMessage msg) {
|
||||
super(msg);
|
||||
audio = new TAudio(msg.get(JSONBased.Member.audio));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package de.mrbesen.telegram.event.events;
|
||||
|
||||
import de.mrbesen.telegram.objects.JSONBased;
|
||||
import de.mrbesen.telegram.objects.TDocument;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import lombok.Getter;
|
||||
|
||||
public class UserSendDocumentEvent extends MessageEvent {
|
||||
|
||||
@Getter
|
||||
private TDocument document;
|
||||
|
||||
public UserSendDocumentEvent(TMessage msg) {
|
||||
super(msg);
|
||||
document = new TDocument(msg.get(JSONBased.Member.document));
|
||||
}
|
||||
}
|
|
@ -1,23 +1,10 @@
|
|||
package de.mrbesen.telegram.event.events;
|
||||
|
||||
import de.mrbesen.telegram.event.Event;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
|
||||
public class UserSendMessageEvent extends Event {
|
||||
public class UserSendMessageEvent extends MessageEvent {
|
||||
|
||||
private TMessage m;
|
||||
|
||||
public UserSendMessageEvent(TMessage m) {
|
||||
super(m.getFrom());
|
||||
this.m = m;
|
||||
}
|
||||
|
||||
public TMessage getMessage() {
|
||||
return m;
|
||||
}
|
||||
|
||||
public TUser getUser() {
|
||||
return m.getFrom();
|
||||
super(m);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package de.mrbesen.telegram.event.events;
|
||||
|
||||
import de.mrbesen.telegram.objects.JSONBased;
|
||||
import de.mrbesen.telegram.objects.TMessage;
|
||||
import de.mrbesen.telegram.objects.TPhotoSize;
|
||||
import lombok.Getter;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class UserSendPhotoEvent extends MessageEvent {
|
||||
|
||||
@Getter
|
||||
private TPhotoSize[] photos;
|
||||
|
||||
public UserSendPhotoEvent(TMessage msg) {
|
||||
super(msg);
|
||||
|
||||
JSONArray pics = msg.get(JSONBased.Member.photo);
|
||||
photos = new TPhotoSize[pics.length()];
|
||||
for (int i = 0; i < pics.length(); i++) {
|
||||
JSONObject pic = pics.getJSONObject(i);
|
||||
photos[i] = new TPhotoSize(pic);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +1,11 @@
|
|||
package de.mrbesen.telegram.objects;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class TAudio extends TDocument {
|
||||
|
||||
@Getter
|
||||
private int duration;
|
||||
|
||||
public TAudio(JSONObject o) {
|
||||
|
@ -10,8 +13,4 @@ public class TAudio extends TDocument {
|
|||
duration = o.getInt("duration");
|
||||
allowedmembers = new Member[] {Member.performer, Member.title, Member.mime_type, Member.file_size};
|
||||
}
|
||||
|
||||
public int getDuration() {
|
||||
return duration;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,10 +6,6 @@ public class TDocument extends TSendable {
|
|||
|
||||
public TDocument(JSONObject o) {
|
||||
super(o);
|
||||
allowedmembers = new Member[] {Member.thumb, Member.file_name, Member.mime_type, Member.file_size};
|
||||
}
|
||||
|
||||
public String getFile_id() {
|
||||
return file_id;
|
||||
allowedmembers = new Member[] {Member.file_id, Member.file_unique_id, Member.thumb, Member.file_name, Member.mime_type, Member.file_size};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package de.mrbesen.telegram.objects;
|
|||
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class TFile extends TDocument {
|
||||
public class TFile extends JSONBased {
|
||||
|
||||
public TFile(JSONObject json) {
|
||||
super(json);
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package de.mrbesen.telegram.objects;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class TPhotoSize extends TDocument {
|
||||
public class TPhotoSize extends TSendable {
|
||||
|
||||
@Getter
|
||||
private int width, height;
|
||||
|
||||
public TPhotoSize(JSONObject json) {
|
||||
|
@ -12,12 +14,4 @@ public class TPhotoSize extends TDocument {
|
|||
height = json.getInt("height");
|
||||
allowedmembers = new Member[] {Member.file_size};
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
package de.mrbesen.telegram.objects;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class TSendable extends JSONBased {
|
||||
|
||||
@Getter
|
||||
protected String file_id;
|
||||
@Getter
|
||||
protected int file_size;
|
||||
|
||||
public void set(Member mem, Object value ) {
|
||||
public void set(Member mem, Object value) {
|
||||
if(isAllowed(mem)) {
|
||||
if(value instanceof Integer)
|
||||
base_json.put(mem.name(), (int) value);
|
||||
|
@ -22,10 +26,6 @@ public class TSendable extends JSONBased {
|
|||
public TSendable(JSONObject o) {
|
||||
super(o);
|
||||
file_id = o.getString("file_id");
|
||||
}
|
||||
|
||||
public boolean upload() {
|
||||
|
||||
return false;
|
||||
file_size = o.optInt("file_size", -1);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue