diff --git a/src/main/java/de/mrbesen/telegram/AsyncHandler.java b/src/main/java/de/mrbesen/telegram/AsyncHandler.java index 0cb2769..a17eeab 100644 --- a/src/main/java/de/mrbesen/telegram/AsyncHandler.java +++ b/src/main/java/de/mrbesen/telegram/AsyncHandler.java @@ -9,7 +9,7 @@ public class AsyncHandler { private List fasttasks = new LinkedList<>(); private List slowtasks = new LinkedList<>(); - + private AsyncHandlerThread[] asynchandlerthread; private static final String THREADPREFIX = "AsyncTgHandler-"; @@ -18,19 +18,22 @@ public class AsyncHandler { this(api, 2); } - //allow as many as threadCount threads to handle Async Tasks + // allow as many as threadCount threads to handle Async Tasks public AsyncHandler(TelegramAPI api, int threadCount) { + if (threadCount < 2) { + threadCount = 2; + } asynchandlerthread = new AsyncHandlerThread[threadCount]; asynchandlerthread[0] = new AsyncHandlerThread(fasttasks, THREADPREFIX + "Fast-0", api); - for(int i = 1; i < threadCount; ++i) { + for (int i = 1; i < threadCount; ++i) { asynchandlerthread[i] = new AsyncHandlerThread(slowtasks, THREADPREFIX + "Slow-" + i, api); } } public void stop() { - for(AsyncHandlerThread t : asynchandlerthread) { + for (AsyncHandlerThread t : asynchandlerthread) { t.stop(); } } @@ -42,7 +45,7 @@ public class AsyncHandler { public void enque(Task t, boolean isSlowMethod, boolean priority) { List tasks = isSlowMethod ? slowtasks : fasttasks; - if(priority) { + if (priority) { synchronized (tasks) { tasks.add(0, t); tasks.notifyAll(); @@ -85,7 +88,9 @@ public class AsyncHandler { public static abstract class Callback { public Callback next = null; + public abstract K call(T j) throws Throwable; + @SuppressWarnings("unchecked") public K callObj(Object j) throws Throwable { return call((T) j); diff --git a/src/main/java/de/mrbesen/telegram/TelegramAPI.java b/src/main/java/de/mrbesen/telegram/TelegramAPI.java index a81227d..cb3124d 100644 --- a/src/main/java/de/mrbesen/telegram/TelegramAPI.java +++ b/src/main/java/de/mrbesen/telegram/TelegramAPI.java @@ -190,10 +190,10 @@ public class TelegramAPI implements Runnable { int idx = errdesc.lastIndexOf(" "); try { timeout = Integer.parseInt(errdesc.substring(idx))+1; - System.out.println("timeout read: " + timeout); + log.log("timeout read: " + timeout); } catch(NumberFormatException | StringIndexOutOfBoundsException e ) {} try { - System.out.println("Got 429 -> sleep for " + timeout + " seconds"); + log.log("Got 429 -> sleep for " + timeout + " seconds"); Thread.sleep(timeout * 1000); } catch(InterruptedException e) {} diff --git a/src/main/java/de/mrbesen/telegram/commands/FeedbackCommand.java b/src/main/java/de/mrbesen/telegram/commands/FeedbackCommand.java index ff92325..efcccfd 100644 --- a/src/main/java/de/mrbesen/telegram/commands/FeedbackCommand.java +++ b/src/main/java/de/mrbesen/telegram/commands/FeedbackCommand.java @@ -20,7 +20,7 @@ public class FeedbackCommand implements JSONCommandHandler { protected final TInlineKeyboardMarkup cancelMarkup = TInlineKeyboardMarkup.makeSingleButton("❌ cancel", CANCELFEEDBACK); protected final Map awaitingFeedback = new TreeMap<>(); //maps users chat id -> message that said "please send feedback" TODO: make persistent? - protected final Map awnser = new TreeMap<>(); // chatid -> [chatid, messageid] to awnser to; next message from key will be fwd to value[0] and reply to value[1] + protected final Map answer = new TreeMap<>(); // chatid -> [chatid, messageid] to answer to; next message from key will be fwd to value[0] and reply to value[1] protected final TelegramAPI api; protected final List admins; protected final static String CANCELFEEDBACK = "cancelfeedback", REPLYFEEDBACK = "replyFeedback "; @@ -41,7 +41,7 @@ public class FeedbackCommand implements JSONCommandHandler { removeMsg(sender.getID(), null); awaitingFeedback.put(sender.getID(), null); MessageBuilder mb = new MessageBuilder(); - mb.setAsync().setReciver(sender).setMarkup(cancelMarkup).setText("Your next Message will be forwarded to the admins.") + mb.setAsync().setReciver(sender).setMarkup(cancelMarkup).setText("Your next message will be forwarded to the admins.") .setCallback(new AsyncHandler.Callback() { @Override public Object call(TMessage msg) { @@ -71,10 +71,10 @@ public class FeedbackCommand implements JSONCommandHandler { } return true; } else { //reply to a message - Long[] rplymsg = awnser.remove(user.getID()); + Long[] rplymsg = answer.remove(user.getID()); if(rplymsg != null) { if(admins.contains(user.getID())) { - System.out.println("admin awnsered feedback!"); + System.out.println("admin answered feedback!"); //admin to user -> copy text send as new msg from bot to disguise admin TInlineKeyboardMarkup mu = new TInlineKeyboardMarkup(1); mu.addCallbackButton("↩ reply", buildRplyCallback(user.getID(), msg.getMessageID()), 1); @@ -83,7 +83,7 @@ public class FeedbackCommand implements JSONCommandHandler { .setReplyTo(Math.toIntExact(rplymsg[1])).setText(msg.getText()).setMarkup(mu); api.sendMessage(mb.build()); } else { - System.out.println("user awnsered feedback!"); + System.out.println("user answered feedback!"); //user to admin -> fwd message TMessage.forwardAsync(api, rplymsg[0], msg); @@ -142,7 +142,7 @@ public class FeedbackCommand implements JSONCommandHandler { ex.printStackTrace(); } if(msgid > -1) { - awnser.put(e.getUser().getID(), new Long[]{chatid, msgid}); + answer.put(e.getUser().getID(), new Long[]{chatid, msgid}); api.answerCallbackQuery(e.getID(), "Write a Message", true); } return true;