From ecc78ffb0a7de4a8118248194aa9b6c6e0dcc9a7 Mon Sep 17 00:00:00 2001 From: mrbesen Date: Fri, 8 Feb 2019 06:14:11 +0100 Subject: [PATCH] changed CommandHandler Structure --- src/de/mrbesen/telegram/TelegramAPI.java | 2 +- .../mrbesen/telegram/commands/CommandHandler.java | 4 +--- .../mrbesen/telegram/commands/CommandManager.java | 15 +++++++-------- .../telegram/commands/ICommandHandler.java | 5 +++++ .../telegram/commands/JSONCommandHandler.java | 7 +++---- src/de/mrbesen/telegram/objects/TAudio.java | 2 -- src/de/mrbesen/telegram/objects/TMessage.java | 1 + .../test/commands/ReplyKeyboardRemoveTC.java | 2 -- .../test/commands/ReplyKeyboardTestCase.java | 2 -- src/de/mrbesen/test/commands/SimpleTestCase.java | 1 + 10 files changed, 19 insertions(+), 22 deletions(-) create mode 100644 src/de/mrbesen/telegram/commands/ICommandHandler.java diff --git a/src/de/mrbesen/telegram/TelegramAPI.java b/src/de/mrbesen/telegram/TelegramAPI.java index d5863b8..2ba1132 100644 --- a/src/de/mrbesen/telegram/TelegramAPI.java +++ b/src/de/mrbesen/telegram/TelegramAPI.java @@ -321,7 +321,7 @@ public class TelegramAPI implements Runnable { if(text.startsWith("/" )) { text = text.substring(1);//remove '/' isCommand = true; - cmdmgr.onCommand(text, msg.getFrom(), json.getJSONObject("message")); + cmdmgr.onCommand(text, msg.getFrom(), msg); } else { Event e = null; if(getMsg().has(Member.audio)) { diff --git a/src/de/mrbesen/telegram/commands/CommandHandler.java b/src/de/mrbesen/telegram/commands/CommandHandler.java index 8c2bb65..6068fe5 100644 --- a/src/de/mrbesen/telegram/commands/CommandHandler.java +++ b/src/de/mrbesen/telegram/commands/CommandHandler.java @@ -1,10 +1,8 @@ package de.mrbesen.telegram.commands; -import org.json.JSONObject; - import de.mrbesen.telegram.objects.TUser; -public interface CommandHandler { +public interface CommandHandler extends ICommandHandler{ /** * Should return true, if the command is handled correctly, false if the help menu should be displayed diff --git a/src/de/mrbesen/telegram/commands/CommandManager.java b/src/de/mrbesen/telegram/commands/CommandManager.java index c66c742..b55d7df 100644 --- a/src/de/mrbesen/telegram/commands/CommandManager.java +++ b/src/de/mrbesen/telegram/commands/CommandManager.java @@ -1,21 +1,20 @@ package de.mrbesen.telegram.commands; -import org.json.JSONObject; - import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; +import de.mrbesen.telegram.objects.TMessage; import de.mrbesen.telegram.objects.TUser; public class CommandManager { private final static String CMDPATTERN = "^[\\w-]+$"; - private Multimap handlerlist = ArrayListMultimap.create();//list of all registered CommandHandler + private Multimap handlerlist = ArrayListMultimap.create();//list of all registered CommandHandler public CommandManager() { } - public void onCommand(String line, TUser sender, JSONObject json) {//called by the api (/-prefix already removed) + public void onCommand(String line, TUser sender, TMessage json) {//called by the api (/-prefix already removed) line = line.trim(); String[] split = line.split(" ",2); String cmd = split[0].toLowerCase(); @@ -30,12 +29,12 @@ public class CommandManager { } //call // System.out.println("cmd " + cmd + " args: " + args.length); - for(CommandHandler cmdhand : handlerlist.get(cmd)) { + for(ICommandHandler cmdhand : handlerlist.get(cmd)) { try { if(cmdhand instanceof JSONCommandHandler) { result = ((JSONCommandHandler) cmdhand).onCommand(sender, cmd, args, json); - } else { - result = cmdhand.onCommand(sender, cmd, args); + } else if( cmdhand instanceof CommandHandler){ + result = ((CommandHandler) cmdhand).onCommand(sender, cmd, args); } if(result) break; @@ -51,7 +50,7 @@ public class CommandManager { } } - public void registerCommand(String cmd, CommandHandler handler) { + public void registerCommand(String cmd, ICommandHandler handler) { if(cmd == null) { throw new NullPointerException("cmd is not allowed to be null"); } diff --git a/src/de/mrbesen/telegram/commands/ICommandHandler.java b/src/de/mrbesen/telegram/commands/ICommandHandler.java new file mode 100644 index 0000000..b766612 --- /dev/null +++ b/src/de/mrbesen/telegram/commands/ICommandHandler.java @@ -0,0 +1,5 @@ +package de.mrbesen.telegram.commands; + +public interface ICommandHandler { + +} diff --git a/src/de/mrbesen/telegram/commands/JSONCommandHandler.java b/src/de/mrbesen/telegram/commands/JSONCommandHandler.java index 4abdf58..a1b7129 100644 --- a/src/de/mrbesen/telegram/commands/JSONCommandHandler.java +++ b/src/de/mrbesen/telegram/commands/JSONCommandHandler.java @@ -1,10 +1,9 @@ package de.mrbesen.telegram.commands; -import org.json.JSONObject; - +import de.mrbesen.telegram.objects.TMessage; import de.mrbesen.telegram.objects.TUser; -public interface JSONCommandHandler extends CommandHandler { +public interface JSONCommandHandler extends ICommandHandler { /** * Should return true, if the command is handled correctly, false if the help menu should be displayed @@ -14,6 +13,6 @@ public interface JSONCommandHandler extends CommandHandler { * @param json * @return */ - public boolean onCommand(TUser sender, String cmd, String[] args, JSONObject json); + public boolean onCommand(TUser sender, String cmd, String[] args, TMessage json); } diff --git a/src/de/mrbesen/telegram/objects/TAudio.java b/src/de/mrbesen/telegram/objects/TAudio.java index ac2866f..f820d8d 100644 --- a/src/de/mrbesen/telegram/objects/TAudio.java +++ b/src/de/mrbesen/telegram/objects/TAudio.java @@ -2,8 +2,6 @@ package de.mrbesen.telegram.objects; import org.json.JSONObject; -import de.mrbesen.telegram.objects.JSONBased.Member; - public class TAudio extends TDocument { private int duration; diff --git a/src/de/mrbesen/telegram/objects/TMessage.java b/src/de/mrbesen/telegram/objects/TMessage.java index 7e40f57..0f1c0c9 100644 --- a/src/de/mrbesen/telegram/objects/TMessage.java +++ b/src/de/mrbesen/telegram/objects/TMessage.java @@ -72,6 +72,7 @@ public class TMessage extends JSONBased { if(json.has("text") ) text = json.getString("text"); + allowedmembers = new Member[] {Member.forward_from_message_id, Member.forward_signature, Member.forward_date, Member.reply_to_message, Member.edit_date, Member.media_group_id, Member.author_signature, Member.author_signature, Member.audio, Member.document, Member.game, Member.photo, Member.sticker, Member.video, Member.voice, Member.video_note, Member.caption, Member.contact, Member.location, Member.venue, Member.new_chat_members, Member.left_chat_members, Member.new_chat_title, Member.new_chat_photo, Member.delete_chat_photo, Member.group_chat_created, Member.supergroup_chat_created, Member.channel_chat_created, Member.migrate_from_chat_id, Member.migrate_to_chat_id, Member.pinned_message, Member.invoice, Member.successful_payment, Member.connected_website, Member.chat}; } diff --git a/src/de/mrbesen/test/commands/ReplyKeyboardRemoveTC.java b/src/de/mrbesen/test/commands/ReplyKeyboardRemoveTC.java index dd1e80e..05785d8 100644 --- a/src/de/mrbesen/test/commands/ReplyKeyboardRemoveTC.java +++ b/src/de/mrbesen/test/commands/ReplyKeyboardRemoveTC.java @@ -1,7 +1,5 @@ package de.mrbesen.test.commands; -import org.json.JSONObject; - import de.mrbesen.telegram.commands.CommandHandler; import de.mrbesen.telegram.objects.TReplyKeyboardRemove; import de.mrbesen.telegram.objects.TUser; diff --git a/src/de/mrbesen/test/commands/ReplyKeyboardTestCase.java b/src/de/mrbesen/test/commands/ReplyKeyboardTestCase.java index d591f96..2395133 100644 --- a/src/de/mrbesen/test/commands/ReplyKeyboardTestCase.java +++ b/src/de/mrbesen/test/commands/ReplyKeyboardTestCase.java @@ -1,8 +1,6 @@ package de.mrbesen.test.commands; -import org.json.JSONObject; - import de.mrbesen.telegram.commands.CommandHandler; import de.mrbesen.telegram.objects.TReplyKeyboardMarkup; import de.mrbesen.telegram.objects.TUser; diff --git a/src/de/mrbesen/test/commands/SimpleTestCase.java b/src/de/mrbesen/test/commands/SimpleTestCase.java index c043e62..7a6e4ea 100644 --- a/src/de/mrbesen/test/commands/SimpleTestCase.java +++ b/src/de/mrbesen/test/commands/SimpleTestCase.java @@ -3,6 +3,7 @@ package de.mrbesen.test.commands; import org.json.JSONObject; import de.mrbesen.telegram.commands.CommandHandler; +import de.mrbesen.telegram.commands.ICommandHandler; import de.mrbesen.telegram.objects.TUser; public class SimpleTestCase implements CommandHandler {