diff --git a/src/main/java/de/mrbesen/telegram/TelegramAPI.java b/src/main/java/de/mrbesen/telegram/TelegramAPI.java index cd08580..34a9bc5 100644 --- a/src/main/java/de/mrbesen/telegram/TelegramAPI.java +++ b/src/main/java/de/mrbesen/telegram/TelegramAPI.java @@ -31,9 +31,15 @@ import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; -import java.util.LinkedList; -import java.util.List; -import java.util.Scanner; +import java.util.*; +import java.util.function.BiConsumer; +import java.util.function.BinaryOperator; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collector; + +import static java.util.stream.Collector.Characteristics.IDENTITY_FINISH; +import static java.util.stream.Collector.Characteristics.UNORDERED; public class TelegramAPI implements Runnable { @@ -239,6 +245,47 @@ public class TelegramAPI implements Runnable { return null; } + /** + * is always async + * @param cmds cmdname -> description + */ + public void setBotCommand(Map cmds) { + //build json obj + JSONArray arr = cmds.entrySet().stream().map(e -> new JSONObject().put("command", e.getKey()).put("description", e.getKey())).collect(new Collector() { + @Override + public Supplier supplier() { + return JSONArray::new; + } + + @Override + public BiConsumer accumulator() { + return JSONArray::put; + } + + @Override + public BinaryOperator combiner() { + return (a,b) -> { b.forEach(a::put); return b; }; + } + + @Override + public Function finisher() { + return a -> a; + } + + @Override + public Set characteristics() { + Set c = new HashSet<>(); + c.add(IDENTITY_FINISH); + c.add(UNORDERED); + return c; + } + }); + + //commit + Task t = new Task("setBotCommand", "commands=" + arr.toString(), null); + async.enque(t); + } + public void sendTypedMessage(final String msg, final TUser user, final int seconds) { new Thread(new Runnable() { @Override diff --git a/src/main/java/de/mrbesen/telegram/commands/CommandManager.java b/src/main/java/de/mrbesen/telegram/commands/CommandManager.java index 570ab7b..32048ee 100644 --- a/src/main/java/de/mrbesen/telegram/commands/CommandManager.java +++ b/src/main/java/de/mrbesen/telegram/commands/CommandManager.java @@ -35,7 +35,7 @@ public class CommandManager { try { if(cmdhand instanceof JSONCommandHandler) { result = ((JSONCommandHandler) cmdhand).onCommand(sender, cmd, args, json); - } else if( cmdhand instanceof CommandHandler){ + } else if( cmdhand instanceof CommandHandler) { result = ((CommandHandler) cmdhand).onCommand(sender, cmd, args); } if(result) @@ -53,13 +53,14 @@ public class CommandManager { } public void registerCommand(ICommandHandler handler) { - registerCommand(null, handler); - } - - public void registerCommand(String cmd, ICommandHandler handler) { if(handler == null) { throw new NullPointerException("handler is not allowed to be null"); } handlerlist.add(handler); } + + @Deprecated + public void registerCommand(String cmd, ICommandHandler handler) { + registerCommand(handler); + } }