From 69cb78ce5ca09e3110e3e19bcfce11c73304e5ae Mon Sep 17 00:00:00 2001 From: mrbesen Date: Sat, 2 Mar 2019 04:52:57 +0100 Subject: [PATCH] updateMarkup & lowinternet handleing --- .../java/de/mrbesen/telegram/AsyncHandler.java | 12 ++++++++++++ .../java/de/mrbesen/telegram/TelegramAPI.java | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/main/java/de/mrbesen/telegram/AsyncHandler.java b/src/main/java/de/mrbesen/telegram/AsyncHandler.java index 41ca8da..843fc15 100644 --- a/src/main/java/de/mrbesen/telegram/AsyncHandler.java +++ b/src/main/java/de/mrbesen/telegram/AsyncHandler.java @@ -1,5 +1,6 @@ package de.mrbesen.telegram; +import java.net.UnknownHostException; import java.util.LinkedList; import java.util.List; @@ -35,6 +36,7 @@ public class AsyncHandler implements Runnable { @Override public void run() { + int failed = 0; while(!tasks.isEmpty()) { Task current; @@ -55,6 +57,16 @@ public class AsyncHandler implements Runnable { callb = callb.next; // throw new Exception("Callbacktype missmatch! Got " + obj.getClass().getSimpleName() + " Wanted: " + wanted.getSimpleName() ); } + failed = 0; + } catch(UnknownHostException ex) {//host(api.telegram.org) is good -> bad inet + failed ++; + if(failed > 10) + try { + Thread.yield(); + Thread.sleep(1000);//wait 1 second + } catch(InterruptedException ignored) {} + //reenque + enque(current); } catch(Throwable t) { if(current.exceptionhandl == null) throw t; diff --git a/src/main/java/de/mrbesen/telegram/TelegramAPI.java b/src/main/java/de/mrbesen/telegram/TelegramAPI.java index 11a811d..65c6c0c 100644 --- a/src/main/java/de/mrbesen/telegram/TelegramAPI.java +++ b/src/main/java/de/mrbesen/telegram/TelegramAPI.java @@ -210,6 +210,22 @@ public class TelegramAPI implements Runnable { } } + public void updateMarkup(int chatid, int msg_id, TReplyMarkup rm, boolean async) { + try { + if(rm == null) return;//nope + + String q = "chat_id=" + chatid + "&message_id=" + msg_id + "&reply_markup=" + URLEncoder.encode(rm.toJSONString(), "UTF-8"); + + if(async) { + this.async.enque("editMessageReplyMarkup", q); + } else { + request("editMessageReplyMarkup", q); + } + } catch(IOException e) { + log.log("", e); + } + } + public void stop() { run = false; thread.interrupt();