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) {