При изменении сообщения отправляется новое, если старое удалил пользователь. До этого изменения бот просто зависал, если пользователь удалял последнее сообщение от бота.
This commit is contained in:
parent
f80f73f2a5
commit
06d1262c8b
2
pom.xml
2
pom.xml
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<groupId>dev.struchkov.godfather</groupId>
|
<groupId>dev.struchkov.godfather</groupId>
|
||||||
<artifactId>telegram-bot</artifactId>
|
<artifactId>telegram-bot</artifactId>
|
||||||
<version>0.0.8</version>
|
<version>0.0.9</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>dev.struchkov.godfather</groupId>
|
<groupId>dev.struchkov.godfather</groupId>
|
||||||
<artifactId>telegram-bot</artifactId>
|
<artifactId>telegram-bot</artifactId>
|
||||||
<version>0.0.8</version>
|
<version>0.0.9</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>telegram-core</artifactId>
|
<artifactId>telegram-core</artifactId>
|
||||||
|
@ -45,6 +45,8 @@ public class TelegramSender implements Sending {
|
|||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(TelegramSender.class);
|
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 final AbsSender absSender;
|
||||||
private Map<Long, Integer> map = new HashMap<>();
|
private Map<Long, Integer> map = new HashMap<>();
|
||||||
|
|
||||||
@ -62,27 +64,44 @@ public class TelegramSender implements Sending {
|
|||||||
isNotNull(telegramId, boxAnswer);
|
isNotNull(telegramId, boxAnswer);
|
||||||
try {
|
try {
|
||||||
if (boxAnswer.isReplace() && map.containsKey(telegramId)) {
|
if (boxAnswer.isReplace() && map.containsKey(telegramId)) {
|
||||||
final EditMessageText editMessageText = new EditMessageText();
|
replaceMessage(telegramId, boxAnswer);
|
||||||
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);
|
|
||||||
} else {
|
} else {
|
||||||
final SendMessage sendMessage = new SendMessage();
|
sendMessage(telegramId, boxAnswer);
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
|
} 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) {
|
} catch (TelegramApiRequestException e) {
|
||||||
log.error(e.getApiResponse());
|
log.error(e.getApiResponse());
|
||||||
} catch (TelegramApiException e) {
|
} catch (TelegramApiException e) {
|
||||||
|
Loading…
Reference in New Issue
Block a user