From a8011462f32c2fb43946a36cf377c95fc125ded0 Mon Sep 17 00:00:00 2001 From: mrbesen Date: Mon, 25 Feb 2019 02:51:17 +0100 Subject: [PATCH] longpolling --- src/main/java/de/mrbesen/telegram/TelegramAPI.java | 13 +++++++++++-- .../mrbesen/telegram/commands/CommandManager.java | 10 ++++++++-- .../java/de/mrbesen/telegram/objects/TUser.java | 4 ---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/mrbesen/telegram/TelegramAPI.java b/src/main/java/de/mrbesen/telegram/TelegramAPI.java index ab2139b..d95593e 100644 --- a/src/main/java/de/mrbesen/telegram/TelegramAPI.java +++ b/src/main/java/de/mrbesen/telegram/TelegramAPI.java @@ -44,6 +44,15 @@ public class TelegramAPI implements Runnable { private String apikey; private Thread thread; private boolean run = true; + private boolean longpolling = false; + public boolean isLongpolling() { + return longpolling; + } + + public void setLongpolling(boolean longpolling) { + this.longpolling = longpolling; + } + private String helpmessage = "generic helppage\nuse TelegramAPI.setHelpText(java.lang.String) to change this."; //stats @@ -51,7 +60,7 @@ public class TelegramAPI implements Runnable { protected long start = 0; private LinkedList users = new LinkedList<>(); - private CommandManager cmdmgr = new CommandManager(); + private CommandManager cmdmgr = new CommandManager(this); private EventManager evntmgr = new EventManager(); //async @@ -239,7 +248,7 @@ public class TelegramAPI implements Runnable { private void fetchUpdates() { try { - processUpdates(request("getUpdates", "offset=" + msg_offset, false)); + processUpdates(request("getUpdates", "offset=" + msg_offset + "&timeout=" + (longpolling ? updateInterval : 1), true)); } catch (IOException e) { log.log("error getting updates.", e); } diff --git a/src/main/java/de/mrbesen/telegram/commands/CommandManager.java b/src/main/java/de/mrbesen/telegram/commands/CommandManager.java index b55d7df..03254ed 100644 --- a/src/main/java/de/mrbesen/telegram/commands/CommandManager.java +++ b/src/main/java/de/mrbesen/telegram/commands/CommandManager.java @@ -1,18 +1,24 @@ package de.mrbesen.telegram.commands; +import org.apache.logging.log4j.message.TimestampMessage; + import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; import de.mrbesen.telegram.objects.TMessage; import de.mrbesen.telegram.objects.TUser; +import de.mrbesen.telegram.*; public class CommandManager { private final static String CMDPATTERN = "^[\\w-]+$"; + private final TelegramAPI api; private Multimap handlerlist = ArrayListMultimap.create();//list of all registered CommandHandler - public CommandManager() { } + public CommandManager(TelegramAPI a) { + api = a; + } public void onCommand(String line, TUser sender, TMessage json) {//called by the api (/-prefix already removed) line = line.trim(); @@ -46,7 +52,7 @@ public class CommandManager { } //do smth. with result if(!result) { - sender.sendHelpPage(); + TUser.sendMessage(api, json.getChatID(), api.getHelpMessage(), null, 0, true, null); } } diff --git a/src/main/java/de/mrbesen/telegram/objects/TUser.java b/src/main/java/de/mrbesen/telegram/objects/TUser.java index 7c15e7f..39a4e7d 100644 --- a/src/main/java/de/mrbesen/telegram/objects/TUser.java +++ b/src/main/java/de/mrbesen/telegram/objects/TUser.java @@ -67,10 +67,6 @@ public class TUser { return uname; } - public void sendHelpPage() { - sendMessage(api.getHelpMessage()); - } - public boolean sendMessage(String text) { return sendMessage(text, null); }