From 06d1262c8b8296c6b1de04200b4de753745c9bab Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Fri, 27 May 2022 10:50:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=20=D0=B8=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D0=BD=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D0=B5,=20=D0=B5=D1=81=D0=BB=D0=B8=20=D1=81=D1=82=D0=B0=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C.=20=D0=94=D0=BE=20=D1=8D=D1=82=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D0=BE=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D1=81=D0=B0=D0=BB,=20=D0=B5=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=20=D1=83=D0=B4=D0=B0=D0=BB=D1=8F=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD=D0=B5=D0=B5=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82?= =?UTF-8?q?=20=D0=B1=D0=BE=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- telegram-core/pom.xml | 2 +- .../telegram/listen/TelegramSender.java | 57 ++++++++++++------- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/pom.xml b/pom.xml index 124ae87..46736c1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ dev.struchkov.godfather telegram-bot - 0.0.8 + 0.0.9 pom diff --git a/telegram-core/pom.xml b/telegram-core/pom.xml index b17b9de..2622ad6 100644 --- a/telegram-core/pom.xml +++ b/telegram-core/pom.xml @@ -5,7 +5,7 @@ dev.struchkov.godfather telegram-bot - 0.0.8 + 0.0.9 telegram-core diff --git a/telegram-core/src/main/java/dev/struchkov/godfather/telegram/listen/TelegramSender.java b/telegram-core/src/main/java/dev/struchkov/godfather/telegram/listen/TelegramSender.java index 424402d..878fe0b 100644 --- a/telegram-core/src/main/java/dev/struchkov/godfather/telegram/listen/TelegramSender.java +++ b/telegram-core/src/main/java/dev/struchkov/godfather/telegram/listen/TelegramSender.java @@ -45,6 +45,8 @@ public class TelegramSender implements Sending { private static final Logger log = LoggerFactory.getLogger(TelegramSender.class); + private static final String ERROR_REPLACE_MESSAGE = "Bad Request: message to edit not found"; + private final AbsSender absSender; private Map map = new HashMap<>(); @@ -62,27 +64,44 @@ public class TelegramSender implements Sending { isNotNull(telegramId, boxAnswer); try { if (boxAnswer.isReplace() && map.containsKey(telegramId)) { - final EditMessageText editMessageText = new EditMessageText(); - editMessageText.setChatId(String.valueOf(telegramId)); - editMessageText.setMessageId(map.get(telegramId)); - editMessageText.enableMarkdown(true); - editMessageText.setText(boxAnswer.getMessage()); - editMessageText.setReplyMarkup(convertInlineKeyBoard((InlineKeyBoard) boxAnswer.getKeyBoard())); - absSender.execute(editMessageText); + replaceMessage(telegramId, boxAnswer); } else { - final SendMessage sendMessage = new SendMessage(); - sendMessage.enableMarkdown(true); - sendMessage.setChatId(String.valueOf(telegramId)); - sendMessage.setText( - sendPreProcessing != null - ? sendPreProcessing.pretreatment(boxAnswer.getMessage()) - : boxAnswer.getMessage() - ); - sendMessage.setReplyMarkup(convertKeyBoard(boxAnswer.getKeyBoard())); - - final Message execute = absSender.execute(sendMessage); - map.put(telegramId, execute.getMessageId()); + sendMessage(telegramId, boxAnswer); } + } catch (TelegramApiRequestException e) { + log.error(e.getApiResponse()); + if (ERROR_REPLACE_MESSAGE.equals(e.getApiResponse())) { + sendMessage(telegramId, boxAnswer); + } + } catch (TelegramApiException e) { + log.error(e.getMessage()); + } + } + + private void replaceMessage(@NotNull Long telegramId, @NotNull BoxAnswer boxAnswer) throws TelegramApiException { + final EditMessageText editMessageText = new EditMessageText(); + editMessageText.setChatId(String.valueOf(telegramId)); + editMessageText.setMessageId(map.get(telegramId)); + editMessageText.enableMarkdown(true); + editMessageText.setText(boxAnswer.getMessage()); + editMessageText.setReplyMarkup(convertInlineKeyBoard((InlineKeyBoard) boxAnswer.getKeyBoard())); + absSender.execute(editMessageText); + } + + private void sendMessage(@NotNull Long telegramId, @NotNull BoxAnswer boxAnswer) { + final SendMessage sendMessage = new SendMessage(); + sendMessage.enableMarkdown(true); + sendMessage.setChatId(String.valueOf(telegramId)); + sendMessage.setText( + sendPreProcessing != null + ? sendPreProcessing.pretreatment(boxAnswer.getMessage()) + : boxAnswer.getMessage() + ); + sendMessage.setReplyMarkup(convertKeyBoard(boxAnswer.getKeyBoard())); + try { + final Message execute = absSender.execute(sendMessage); + + map.put(telegramId, execute.getMessageId()); } catch (TelegramApiRequestException e) { log.error(e.getApiResponse()); } catch (TelegramApiException e) {