add setBotCommand

This commit is contained in:
mrbesen 2020-11-21 22:50:01 +01:00
parent b7315a1766
commit 812d3f8df1
Signed by: MrBesen
GPG Key ID: 596B2350DCD67504
2 changed files with 56 additions and 8 deletions

View File

@ -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<String, String> cmds) {
//build json obj
JSONArray arr = cmds.entrySet().stream().map(e -> new JSONObject().put("command", e.getKey()).put("description", e.getKey())).collect(new Collector<JSONObject, JSONArray, JSONArray>() {
@Override
public Supplier<JSONArray> supplier() {
return JSONArray::new;
}
@Override
public BiConsumer<JSONArray, JSONObject> accumulator() {
return JSONArray::put;
}
@Override
public BinaryOperator<JSONArray> combiner() {
return (a,b) -> { b.forEach(a::put); return b; };
}
@Override
public Function<JSONArray, JSONArray> finisher() {
return a -> a;
}
@Override
public Set<Characteristics> characteristics() {
Set<Characteristics> 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

View File

@ -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);
}
}