diff --git a/pom.xml b/pom.xml index 2eb18d7..97f39f0 100644 --- a/pom.xml +++ b/pom.xml @@ -34,4 +34,8 @@ 1.2.17 + + 1.8 + 1.8 + \ No newline at end of file diff --git a/src/de/mrbesen/telegram/MessageBuilder.java b/src/de/mrbesen/telegram/MessageBuilder.java index 18aba70..a48524a 100644 --- a/src/de/mrbesen/telegram/MessageBuilder.java +++ b/src/de/mrbesen/telegram/MessageBuilder.java @@ -1,5 +1,8 @@ package de.mrbesen.telegram; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + import de.mrbesen.telegram.objects.TReplyMarkup; public class MessageBuilder { @@ -22,7 +25,11 @@ public class MessageBuilder { if(txt.isEmpty()) { throw new IllegalArgumentException("text is not allowed to be empty"); } - text = txt; + try { + text = URLEncoder.encode(txt, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } return this; } diff --git a/src/de/mrbesen/telegram/TelegramAPI.java b/src/de/mrbesen/telegram/TelegramAPI.java index bc60dc2..dcaaedf 100644 --- a/src/de/mrbesen/telegram/TelegramAPI.java +++ b/src/de/mrbesen/telegram/TelegramAPI.java @@ -245,7 +245,7 @@ public class TelegramAPI implements Runnable { if(text.startsWith("/" )) { text = text.substring(1);//remove '/' isCommand = true; - cmdmgr.onCommand(text, msg.getFrom()); + cmdmgr.onCommand(text, msg.getFrom(), json.getJSONObject("message")); } 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 08b629c..b1dde41 100644 --- a/src/de/mrbesen/telegram/commands/CommandHandler.java +++ b/src/de/mrbesen/telegram/commands/CommandHandler.java @@ -1,5 +1,7 @@ package de.mrbesen.telegram.commands; +import org.json.JSONObject; + import de.mrbesen.telegram.objects.TUser; public interface CommandHandler { @@ -9,8 +11,9 @@ public interface CommandHandler { * @param sender * @param cmd * @param args + * @param json * @return */ - public boolean onCommand(TUser sender, String cmd, String[] args); + public boolean onCommand(TUser sender, String cmd, String[] args, JSONObject json); } diff --git a/src/de/mrbesen/telegram/commands/CommandManager.java b/src/de/mrbesen/telegram/commands/CommandManager.java index 8524891..35ee22e 100644 --- a/src/de/mrbesen/telegram/commands/CommandManager.java +++ b/src/de/mrbesen/telegram/commands/CommandManager.java @@ -1,5 +1,7 @@ package de.mrbesen.telegram.commands; +import org.json.JSONObject; + import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; @@ -13,10 +15,13 @@ public class CommandManager { public CommandManager() { } - public void onCommand(String line, TUser sender) {//called by the api (/-prefix already removed) + public void onCommand(String line, TUser sender, JSONObject json) {//called by the api (/-prefix already removed) line = line.trim(); String[] split = line.split(" ",2); String cmd = split[0].toLowerCase(); + if(cmd.contains("@")) { + cmd = cmd.substring(0, cmd.indexOf('@')); + } boolean result = false; if(cmd.matches(CMDPATTERN)) { String[] args = new String[0]; @@ -27,7 +32,7 @@ public class CommandManager { // System.out.println("cmd " + cmd + " args: " + args.length); for(CommandHandler cmdhand : handlerlist.get(cmd)) { try { - result = cmdhand.onCommand(sender, cmd, args); + result = cmdhand.onCommand(sender, cmd, args, json); if(result) break; } catch(Throwable t) { diff --git a/src/de/mrbesen/telegram/objects/JSONBased.java b/src/de/mrbesen/telegram/objects/JSONBased.java index 72c9879..729d90c 100644 --- a/src/de/mrbesen/telegram/objects/JSONBased.java +++ b/src/de/mrbesen/telegram/objects/JSONBased.java @@ -43,6 +43,7 @@ public class JSONBased { public enum Member { // ===== MESSAGE ==== + chat,//Chat forward_from_message_id,//int forward_signature,//String forward_date,//long diff --git a/src/de/mrbesen/telegram/objects/TMessage.java b/src/de/mrbesen/telegram/objects/TMessage.java index 2d3b033..c3158d7 100644 --- a/src/de/mrbesen/telegram/objects/TMessage.java +++ b/src/de/mrbesen/telegram/objects/TMessage.java @@ -13,6 +13,7 @@ public class TMessage extends JSONBased { private long date = -1; private TUser forward_from = null; //optional private String text = null;//optional + private int chatid = 0; protected TelegramAPI api; @@ -50,6 +51,7 @@ public class TMessage extends JSONBased { this.api = api; message_id = json.getInt("message_id"); date = json.getLong("date"); + chatid = ((JSONObject) get(Member.chat)).getInt("id"); if(json.has("from")) from = api.getUser(json.getJSONObject("from")); @@ -58,7 +60,11 @@ 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}; + 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}; + } + + public int getChatID() { + return chatid; } public TUser getFrom() { diff --git a/src/de/mrbesen/telegram/objects/TUser.java b/src/de/mrbesen/telegram/objects/TUser.java index 53b4278..7a06000 100644 --- a/src/de/mrbesen/telegram/objects/TUser.java +++ b/src/de/mrbesen/telegram/objects/TUser.java @@ -18,7 +18,6 @@ public class TUser { private boolean isBot = false; private TelegramAPI api = null; - TUser(int chatid, String uname, TelegramAPI api) { this.id = chatid; diff --git a/src/de/mrbesen/test/commands/InlineKeyboardTC.java b/src/de/mrbesen/test/commands/InlineKeyboardTC.java index 97396e7..fe41d80 100644 --- a/src/de/mrbesen/test/commands/InlineKeyboardTC.java +++ b/src/de/mrbesen/test/commands/InlineKeyboardTC.java @@ -1,5 +1,7 @@ package de.mrbesen.test.commands; +import org.json.JSONObject; + import de.mrbesen.telegram.commands.CommandHandler; import de.mrbesen.telegram.objects.TInlineKeyboardMarkup; import de.mrbesen.telegram.objects.TUser; @@ -7,7 +9,7 @@ import de.mrbesen.telegram.objects.TUser; public class InlineKeyboardTC implements CommandHandler { @Override - public boolean onCommand(TUser sender, String cmd, String[] args) { + public boolean onCommand(TUser sender, String cmd, String[] args, JSONObject ignored) { if(cmd.equals("inlinekb")) { sender.sendMessage("Links zu antippen:", new TInlineKeyboardMarkup(2) diff --git a/src/de/mrbesen/test/commands/ReplyKeyboardRemoveTC.java b/src/de/mrbesen/test/commands/ReplyKeyboardRemoveTC.java index 05785d8..95a211d 100644 --- a/src/de/mrbesen/test/commands/ReplyKeyboardRemoveTC.java +++ b/src/de/mrbesen/test/commands/ReplyKeyboardRemoveTC.java @@ -1,5 +1,7 @@ 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; @@ -7,7 +9,7 @@ import de.mrbesen.telegram.objects.TUser; public class ReplyKeyboardRemoveTC implements CommandHandler { @Override - public boolean onCommand(TUser sender, String cmd, String[] args) { + public boolean onCommand(TUser sender, String cmd, String[] args, JSONObject ignored) { if(cmd.equals("replykbrm")) { sender.sendMessage("Entferne TReplyKeyboard", new TReplyKeyboardRemove()); diff --git a/src/de/mrbesen/test/commands/ReplyKeyboardTestCase.java b/src/de/mrbesen/test/commands/ReplyKeyboardTestCase.java index 2395133..2fe2e46 100644 --- a/src/de/mrbesen/test/commands/ReplyKeyboardTestCase.java +++ b/src/de/mrbesen/test/commands/ReplyKeyboardTestCase.java @@ -1,6 +1,8 @@ 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; @@ -8,7 +10,7 @@ import de.mrbesen.telegram.objects.TUser; public class ReplyKeyboardTestCase implements CommandHandler { @Override - public boolean onCommand(TUser sender, String cmd, String[] args) { + public boolean onCommand(TUser sender, String cmd, String[] args, JSONObject ignored) { if(cmd.equals("replykb")) { sender.sendMessage("Buttons zum Antippen:", new TReplyKeyboardMarkup(2) diff --git a/src/de/mrbesen/test/commands/SimpleTestCase.java b/src/de/mrbesen/test/commands/SimpleTestCase.java index b85e0c3..27848b1 100644 --- a/src/de/mrbesen/test/commands/SimpleTestCase.java +++ b/src/de/mrbesen/test/commands/SimpleTestCase.java @@ -1,12 +1,14 @@ package de.mrbesen.test.commands; +import org.json.JSONObject; + import de.mrbesen.telegram.commands.CommandHandler; import de.mrbesen.telegram.objects.TUser; public class SimpleTestCase implements CommandHandler { @Override - public boolean onCommand(TUser sender, String cmd, String[] args) { + public boolean onCommand(TUser sender, String cmd, String[] args, JSONObject ignored) { if(cmd.equals("test")) { sender.sendMessage("HI"); return true;