From 1e7b3f479431e3e94bdbeda67b3f367e6ef89a60 Mon Sep 17 00:00:00 2001 From: mrbesen Date: Sat, 16 Jan 2021 14:53:13 +0100 Subject: [PATCH] neues event setzten (ohne casten), neue events(UserSendPhoto, UserSendDocument) --- .../java/de/mrbesen/telegram/TelegramAPI.java | 34 +++++++++---------- .../telegram/commands/FeedbackCommand.java | 4 +-- .../java/de/mrbesen/telegram/event/Event.java | 14 +------- .../mrbesen/telegram/event/EventManager.java | 10 +++--- .../telegram/event/events/MessageEvent.java | 18 ++++++++++ .../event/events/UserCallbackEvent.java | 24 ++++--------- .../event/events/UserSendAudioEvent.java | 18 +++++----- .../event/events/UserSendDocumentEvent.java | 17 ++++++++++ .../event/events/UserSendMessageEvent.java | 17 ++-------- .../event/events/UserSendPhotoEvent.java | 25 ++++++++++++++ .../de/mrbesen/telegram/objects/TAudio.java | 7 ++-- .../mrbesen/telegram/objects/TDocument.java | 6 +--- .../de/mrbesen/telegram/objects/TFile.java | 2 +- .../mrbesen/telegram/objects/TPhotoSize.java | 12 ++----- .../mrbesen/telegram/objects/TSendable.java | 12 +++---- 15 files changed, 116 insertions(+), 104 deletions(-) create mode 100644 src/main/java/de/mrbesen/telegram/event/events/MessageEvent.java create mode 100644 src/main/java/de/mrbesen/telegram/event/events/UserSendDocumentEvent.java create mode 100644 src/main/java/de/mrbesen/telegram/event/events/UserSendPhotoEvent.java diff --git a/src/main/java/de/mrbesen/telegram/TelegramAPI.java b/src/main/java/de/mrbesen/telegram/TelegramAPI.java index 7cc08c1..f3d1ca3 100644 --- a/src/main/java/de/mrbesen/telegram/TelegramAPI.java +++ b/src/main/java/de/mrbesen/telegram/TelegramAPI.java @@ -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)) { diff --git a/src/main/java/de/mrbesen/telegram/commands/FeedbackCommand.java b/src/main/java/de/mrbesen/telegram/commands/FeedbackCommand.java index e4b36a8..8570016 100644 --- a/src/main/java/de/mrbesen/telegram/commands/FeedbackCommand.java +++ b/src/main/java/de/mrbesen/telegram/commands/FeedbackCommand.java @@ -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)); diff --git a/src/main/java/de/mrbesen/telegram/event/Event.java b/src/main/java/de/mrbesen/telegram/event/Event.java index c7674c1..ed31bed 100644 --- a/src/main/java/de/mrbesen/telegram/event/Event.java +++ b/src/main/java/de/mrbesen/telegram/event/Event.java @@ -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 { } diff --git a/src/main/java/de/mrbesen/telegram/event/EventManager.java b/src/main/java/de/mrbesen/telegram/event/EventManager.java index c3cbf0a..84ea9a0 100644 --- a/src/main/java/de/mrbesen/telegram/event/EventManager.java +++ b/src/main/java/de/mrbesen/telegram/event/EventManager.java @@ -6,17 +6,17 @@ import java.util.function.Consumer; public class EventManager { - private HashMap, ArrayList>> listeners = new HashMap<>(); + private HashMap, ArrayList>> listeners = new HashMap<>(); public EventManager() {} - public void registerEvent(Class eventtype, Consumer handler) { + public void registerEvent(Class eventtype, Consumer handler) { if (handler == null) { throw new NullPointerException(); } //get list - ArrayList> list = listeners.get(eventtype); + ArrayList> 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> listner = listeners.get(e.getClass()); + ArrayList> listner = listeners.get(e.getClass()); if(listner != null) { for (Consumer listn : listner) { try { diff --git a/src/main/java/de/mrbesen/telegram/event/events/MessageEvent.java b/src/main/java/de/mrbesen/telegram/event/events/MessageEvent.java new file mode 100644 index 0000000..33d8a5e --- /dev/null +++ b/src/main/java/de/mrbesen/telegram/event/events/MessageEvent.java @@ -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(); + } +} diff --git a/src/main/java/de/mrbesen/telegram/event/events/UserCallbackEvent.java b/src/main/java/de/mrbesen/telegram/event/events/UserCallbackEvent.java index d643bb1..d2e7b0d 100644 --- a/src/main/java/de/mrbesen/telegram/event/events/UserCallbackEvent.java +++ b/src/main/java/de/mrbesen/telegram/event/events/UserCallbackEvent.java @@ -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; - } } diff --git a/src/main/java/de/mrbesen/telegram/event/events/UserSendAudioEvent.java b/src/main/java/de/mrbesen/telegram/event/events/UserSendAudioEvent.java index d4c580c..4d448c8 100644 --- a/src/main/java/de/mrbesen/telegram/event/events/UserSendAudioEvent.java +++ b/src/main/java/de/mrbesen/telegram/event/events/UserSendAudioEvent.java @@ -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)); } } diff --git a/src/main/java/de/mrbesen/telegram/event/events/UserSendDocumentEvent.java b/src/main/java/de/mrbesen/telegram/event/events/UserSendDocumentEvent.java new file mode 100644 index 0000000..1113d7e --- /dev/null +++ b/src/main/java/de/mrbesen/telegram/event/events/UserSendDocumentEvent.java @@ -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)); + } +} diff --git a/src/main/java/de/mrbesen/telegram/event/events/UserSendMessageEvent.java b/src/main/java/de/mrbesen/telegram/event/events/UserSendMessageEvent.java index d9f96db..6f9bb3d 100644 --- a/src/main/java/de/mrbesen/telegram/event/events/UserSendMessageEvent.java +++ b/src/main/java/de/mrbesen/telegram/event/events/UserSendMessageEvent.java @@ -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); } } diff --git a/src/main/java/de/mrbesen/telegram/event/events/UserSendPhotoEvent.java b/src/main/java/de/mrbesen/telegram/event/events/UserSendPhotoEvent.java new file mode 100644 index 0000000..9522bf9 --- /dev/null +++ b/src/main/java/de/mrbesen/telegram/event/events/UserSendPhotoEvent.java @@ -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); + } + } +} diff --git a/src/main/java/de/mrbesen/telegram/objects/TAudio.java b/src/main/java/de/mrbesen/telegram/objects/TAudio.java index f820d8d..94a4700 100644 --- a/src/main/java/de/mrbesen/telegram/objects/TAudio.java +++ b/src/main/java/de/mrbesen/telegram/objects/TAudio.java @@ -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; - } } diff --git a/src/main/java/de/mrbesen/telegram/objects/TDocument.java b/src/main/java/de/mrbesen/telegram/objects/TDocument.java index 7512dd3..44bc617 100644 --- a/src/main/java/de/mrbesen/telegram/objects/TDocument.java +++ b/src/main/java/de/mrbesen/telegram/objects/TDocument.java @@ -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}; } } diff --git a/src/main/java/de/mrbesen/telegram/objects/TFile.java b/src/main/java/de/mrbesen/telegram/objects/TFile.java index 0521815..8a4bf49 100644 --- a/src/main/java/de/mrbesen/telegram/objects/TFile.java +++ b/src/main/java/de/mrbesen/telegram/objects/TFile.java @@ -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); diff --git a/src/main/java/de/mrbesen/telegram/objects/TPhotoSize.java b/src/main/java/de/mrbesen/telegram/objects/TPhotoSize.java index 0a54ae2..1d24a92 100644 --- a/src/main/java/de/mrbesen/telegram/objects/TPhotoSize.java +++ b/src/main/java/de/mrbesen/telegram/objects/TPhotoSize.java @@ -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; - } } diff --git a/src/main/java/de/mrbesen/telegram/objects/TSendable.java b/src/main/java/de/mrbesen/telegram/objects/TSendable.java index 6011aff..321b74e 100644 --- a/src/main/java/de/mrbesen/telegram/objects/TSendable.java +++ b/src/main/java/de/mrbesen/telegram/objects/TSendable.java @@ -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); } }