diff --git a/pom.xml b/pom.xml
index 2ace676..47be3c7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
UTF-8
UTF-8
- 0.0.50
+ 0.0.51-SNAPSHOT
6.3.0
2.0.0
diff --git a/telegram-consumer/telegram-consumer-main/src/main/java/dev/struchkov/godfather/telegram/main/consumer/CallbackQueryConvert.java b/telegram-consumer/telegram-consumer-main/src/main/java/dev/struchkov/godfather/telegram/main/consumer/CallbackQueryConvert.java
index 1884a02..23d3a80 100644
--- a/telegram-consumer/telegram-consumer-main/src/main/java/dev/struchkov/godfather/telegram/main/consumer/CallbackQueryConvert.java
+++ b/telegram-consumer/telegram-consumer-main/src/main/java/dev/struchkov/godfather/telegram/main/consumer/CallbackQueryConvert.java
@@ -18,6 +18,7 @@ public class CallbackQueryConvert {
final String callbackData = callbackQuery.getData();
final Mail mail = new Mail();
+ mail.setId(callbackQuery.getMessage().getMessageId().toString());
mail.setCreateDate(LocalDateTime.now());
mail.setText(callbackData);
mail.addAttachment(convertToButtonClick(callbackData, callbackQuery.getMessage().getMessageId()));
@@ -34,7 +35,7 @@ public class CallbackQueryConvert {
private static ButtonClickAttachment convertToButtonClick(String callbackData, Integer messageId) {
final ButtonClickAttachment buttonClickAttachment = new ButtonClickAttachment();
buttonClickAttachment.setRawCallBackData(callbackData);
- buttonClickAttachment.setMessageId(messageId);
+ buttonClickAttachment.setMessageId(messageId.toString());
if (callbackData.charAt(0) == '[' && callbackData.charAt(callbackData.length() - 1) == ']') {
final String[] args = callbackData.substring(1, callbackData.length() - 1).split(";");
for (String arg : args) {
diff --git a/telegram-consumer/telegram-consumer-main/src/main/java/dev/struchkov/godfather/telegram/main/consumer/MessageMailConvert.java b/telegram-consumer/telegram-consumer-main/src/main/java/dev/struchkov/godfather/telegram/main/consumer/MessageMailConvert.java
index 080a230..cbc1f23 100644
--- a/telegram-consumer/telegram-consumer-main/src/main/java/dev/struchkov/godfather/telegram/main/consumer/MessageMailConvert.java
+++ b/telegram-consumer/telegram-consumer-main/src/main/java/dev/struchkov/godfather/telegram/main/consumer/MessageMailConvert.java
@@ -39,6 +39,7 @@ public final class MessageMailConvert {
public static Mail apply(Message message) {
final Mail mail = new Mail();
final Long chatId = message.getChatId();
+ mail.setId(message.getMessageId().toString());
mail.setPersonId(chatId != null ? chatId.toString() : null);
mail.setText(message.getText());
mail.setCreateDate(LocalDateTime.ofInstant(Instant.ofEpochSecond(message.getDate()), ZoneId.systemDefault()));
diff --git a/telegram-consumer/telegram-consumer-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/consumer/EventDistributorService.java b/telegram-consumer/telegram-consumer-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/consumer/EventDistributorService.java
index 39d8a84..e7bbc50 100644
--- a/telegram-consumer/telegram-consumer-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/consumer/EventDistributorService.java
+++ b/telegram-consumer/telegram-consumer-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/consumer/EventDistributorService.java
@@ -45,8 +45,9 @@ public class EventDistributorService implements EventDistributor {
return Uni.createFrom().voidItem()
.onItem().transformToUni(
v -> {
- if (checkNotNull(update.getMessage())) {
- final Message message = update.getMessage();
+ final Message message = update.getMessage();
+ final CallbackQuery callbackQuery = update.getCallbackQuery();
+ if (checkNotNull(message)) {
if (!isEvent(message)) {
final Optional> optHandlers = getHandler(Mail.TYPE);
if (optHandlers.isPresent()) {
@@ -58,8 +59,7 @@ public class EventDistributorService implements EventDistributor {
return Uni.createFrom().voidItem();
}
}
- if (checkNotNull(update.getCallbackQuery())) {
- final CallbackQuery callbackQuery = update.getCallbackQuery();
+ if (checkNotNull(callbackQuery)) {
final Optional> optHandlers = getHandler(Mail.TYPE);
if (optHandlers.isPresent()) {
return Multi.createFrom().iterable(optHandlers.get())
@@ -100,15 +100,15 @@ public class EventDistributorService implements EventDistributor {
private boolean isEvent(Message message) {
return message.getChannelChatCreated() != null
- || message.getDeleteChatPhoto() != null
- || isNewChatMember(message.getNewChatMembers())
- || message.getNewChatTitle() != null
- || message.getNewChatPhoto() != null
- || message.getVideoChatEnded() != null
- || message.getVideoChatParticipantsInvited() != null
- || message.getVideoChatScheduled() != null
- || message.getVideoNote() != null
- || message.getVideoChatStarted() != null;
+ || message.getDeleteChatPhoto() != null
+ || isNewChatMember(message.getNewChatMembers())
+ || message.getNewChatTitle() != null
+ || message.getNewChatPhoto() != null
+ || message.getVideoChatEnded() != null
+ || message.getVideoChatParticipantsInvited() != null
+ || message.getVideoChatScheduled() != null
+ || message.getVideoNote() != null
+ || message.getVideoChatStarted() != null;
}
private boolean isNewChatMember(List newChatMembers) {
diff --git a/telegram-consumer/telegram-consumer-simple/src/main/java/dev/struchkov/godfather/telegram/simple/consumer/EventDistributorService.java b/telegram-consumer/telegram-consumer-simple/src/main/java/dev/struchkov/godfather/telegram/simple/consumer/EventDistributorService.java
index 69b6bff..9589556 100644
--- a/telegram-consumer/telegram-consumer-simple/src/main/java/dev/struchkov/godfather/telegram/simple/consumer/EventDistributorService.java
+++ b/telegram-consumer/telegram-consumer-simple/src/main/java/dev/struchkov/godfather/telegram/simple/consumer/EventDistributorService.java
@@ -38,16 +38,16 @@ public class EventDistributorService implements EventDistributor {
@Override
public void processing(@NotNull Update update) {
- if (update.getMessage() != null) {
- final Message message = update.getMessage();
+ final Message message = update.getMessage();
+ final CallbackQuery callbackQuery = update.getCallbackQuery();
+ if (message != null) {
if (!isEvent(message)) {
getHandler(Mail.TYPE)
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.handle(MessageMailConvert.apply(message))));
return;
}
}
- if (update.getCallbackQuery() != null) {
- final CallbackQuery callbackQuery = update.getCallbackQuery();
+ if (callbackQuery != null) {
getHandler(Mail.TYPE)
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.handle(CallbackQueryConvert.apply(callbackQuery))));
return;
@@ -69,15 +69,15 @@ public class EventDistributorService implements EventDistributor {
private boolean isEvent(Message message) {
return message.getChannelChatCreated() != null
- || message.getDeleteChatPhoto() != null
- || isNewChatMember(message.getNewChatMembers())
- || message.getNewChatTitle() != null
- || message.getNewChatPhoto() != null
- || message.getVideoChatEnded() != null
- || message.getVideoChatParticipantsInvited() != null
- || message.getVideoChatScheduled() != null
- || message.getVideoNote() != null
- || message.getVideoChatStarted() != null;
+ || message.getDeleteChatPhoto() != null
+ || isNewChatMember(message.getNewChatMembers())
+ || message.getNewChatTitle() != null
+ || message.getNewChatPhoto() != null
+ || message.getVideoChatEnded() != null
+ || message.getVideoChatParticipantsInvited() != null
+ || message.getVideoChatScheduled() != null
+ || message.getVideoNote() != null
+ || message.getVideoChatStarted() != null;
}
private boolean isNewChatMember(List newChatMembers) {
diff --git a/telegram-context/telegram-context-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/context/repository/SenderRepository.java b/telegram-context/telegram-context-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/context/repository/SenderRepository.java
index 9ce6edf..db28897 100644
--- a/telegram-context/telegram-context-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/context/repository/SenderRepository.java
+++ b/telegram-context/telegram-context-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/context/repository/SenderRepository.java
@@ -4,9 +4,9 @@ import io.smallrye.mutiny.Uni;
public interface SenderRepository {
- Uni getLastSendMessage(String telegramId);
+ Uni getLastSendMessage(String telegramId);
- Uni saveLastSendMessage(String telegramId, Integer messageId);
+ Uni saveLastSendMessage(String telegramId, String messageId);
Uni removeLastSendMessage(String telegramId);
diff --git a/telegram-context/telegram-context-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/context/service/TelegramSending.java b/telegram-context/telegram-context-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/context/service/TelegramSending.java
index bdef065..d765e15 100644
--- a/telegram-context/telegram-context-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/context/service/TelegramSending.java
+++ b/telegram-context/telegram-context-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/context/service/TelegramSending.java
@@ -6,8 +6,8 @@ import dev.struchkov.godfather.quarkus.context.service.SendingService;
import io.smallrye.mutiny.Uni;
import org.jetbrains.annotations.NotNull;
-public interface TelegramSending extends SendingService {
+public interface TelegramSending extends SendingService {
- Uni> sendNotSave(@NotNull BoxAnswer boxAnswer);
+ Uni sendNotSave(@NotNull BoxAnswer boxAnswer);
}
diff --git a/telegram-context/telegram-context-simple/src/main/java/dev/struchkov/godfather/telegram/simple/context/repository/SenderRepository.java b/telegram-context/telegram-context-simple/src/main/java/dev/struchkov/godfather/telegram/simple/context/repository/SenderRepository.java
index 97f6bf2..749da74 100644
--- a/telegram-context/telegram-context-simple/src/main/java/dev/struchkov/godfather/telegram/simple/context/repository/SenderRepository.java
+++ b/telegram-context/telegram-context-simple/src/main/java/dev/struchkov/godfather/telegram/simple/context/repository/SenderRepository.java
@@ -4,9 +4,9 @@ import java.util.Optional;
public interface SenderRepository {
- Optional getLastSendMessage(String telegramId);
+ Optional getLastSendMessage(String telegramId);
- void saveLastSendMessage(String telegramId, Integer messageId);
+ void saveLastSendMessage(String telegramId, String messageId);
void removeLastSendMessage(String telegramId);
diff --git a/telegram-context/telegram-context-simple/src/main/java/dev/struchkov/godfather/telegram/simple/context/service/TelegramSending.java b/telegram-context/telegram-context-simple/src/main/java/dev/struchkov/godfather/telegram/simple/context/service/TelegramSending.java
index 30f9174..033ecf5 100644
--- a/telegram-context/telegram-context-simple/src/main/java/dev/struchkov/godfather/telegram/simple/context/service/TelegramSending.java
+++ b/telegram-context/telegram-context-simple/src/main/java/dev/struchkov/godfather/telegram/simple/context/service/TelegramSending.java
@@ -7,8 +7,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.Optional;
-public interface TelegramSending extends SendingService {
+public interface TelegramSending extends SendingService {
- Optional> sendNotSave(@NotNull BoxAnswer boxAnswer);
+ Optional sendNotSave(@NotNull BoxAnswer boxAnswer);
}
diff --git a/telegram-core/telegram-core-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/core/service/SenderMapRepository.java b/telegram-core/telegram-core-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/core/service/SenderMapRepository.java
index f3cc993..9327270 100644
--- a/telegram-core/telegram-core-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/core/service/SenderMapRepository.java
+++ b/telegram-core/telegram-core-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/core/service/SenderMapRepository.java
@@ -11,15 +11,15 @@ import static dev.struchkov.haiti.utils.Inspector.isNotNull;
public class SenderMapRepository implements SenderRepository {
- private final Map lastMessageId = new HashMap<>();
+ private final Map lastMessageId = new HashMap<>();
@Override
- public Uni getLastSendMessage(String telegramId) {
+ public Uni getLastSendMessage(String telegramId) {
return Uni.createFrom().item(lastMessageId.get(telegramId));
}
@Override
- public Uni saveLastSendMessage(@NotNull String telegramId, @NotNull Integer messageId) {
+ public Uni saveLastSendMessage(@NotNull String telegramId, @NotNull String messageId) {
isNotNull(telegramId);
lastMessageId.put(telegramId, messageId);
return Uni.createFrom().voidItem();
diff --git a/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/service/SenderMapRepository.java b/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/service/SenderMapRepository.java
index ab23c93..94cdc30 100644
--- a/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/service/SenderMapRepository.java
+++ b/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/service/SenderMapRepository.java
@@ -11,15 +11,15 @@ import static dev.struchkov.haiti.utils.Inspector.isNotNull;
public class SenderMapRepository implements SenderRepository {
- private final Map lastMessageId = new HashMap<>();
+ private final Map lastMessageId = new HashMap<>();
@Override
- public Optional getLastSendMessage(String telegramId) {
+ public Optional getLastSendMessage(String telegramId) {
return Optional.ofNullable(lastMessageId.get(telegramId));
}
@Override
- public void saveLastSendMessage(@NotNull String telegramId, @NotNull Integer messageId) {
+ public void saveLastSendMessage(@NotNull String telegramId, @NotNull String messageId) {
isNotNull(telegramId);
lastMessageId.put(telegramId, messageId);
}
diff --git a/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/util/TriggerChecks.java b/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/util/TriggerChecks.java
index 3252609..4a82eca 100644
--- a/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/util/TriggerChecks.java
+++ b/telegram-core/telegram-core-simple/src/main/java/dev/struchkov/godfather/telegram/simple/core/util/TriggerChecks.java
@@ -27,4 +27,8 @@ public class TriggerChecks {
};
}
+ public static Predicate isClickButton() {
+ return mail -> Attachments.findFirstButtonClick(mail.getAttachments()).isPresent();
+ }
+
}
diff --git a/telegram-domain/src/main/java/dev/struchkov/godfather/telegram/domain/attachment/ButtonClickAttachment.java b/telegram-domain/src/main/java/dev/struchkov/godfather/telegram/domain/attachment/ButtonClickAttachment.java
index bf8f6a7..ed840a3 100644
--- a/telegram-domain/src/main/java/dev/struchkov/godfather/telegram/domain/attachment/ButtonClickAttachment.java
+++ b/telegram-domain/src/main/java/dev/struchkov/godfather/telegram/domain/attachment/ButtonClickAttachment.java
@@ -15,7 +15,7 @@ public class ButtonClickAttachment extends Attachment {
/**
* Идентификатор сообщения, под которым пользователь нажал кнопку.
*/
- private Integer messageId;
+ private String messageId;
private String rawCallBackData;
private final Map args = new HashMap<>();
@@ -46,11 +46,11 @@ public class ButtonClickAttachment extends Attachment {
return args.values();
}
- public Integer getMessageId() {
+ public String getMessageId() {
return messageId;
}
- public void setMessageId(Integer messageId) {
+ public void setMessageId(String messageId) {
this.messageId = messageId;
}
@@ -64,6 +64,7 @@ public class ButtonClickAttachment extends Attachment {
}
public static class Arg {
+
private final String type;
private final String value;
diff --git a/telegram-sender/telegram-sender-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/sender/TelegramSender.java b/telegram-sender/telegram-sender-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/sender/TelegramSender.java
index 935c35b..47603b6 100644
--- a/telegram-sender/telegram-sender-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/sender/TelegramSender.java
+++ b/telegram-sender/telegram-sender-quarkus/src/main/java/dev/struchkov/godfather/telegram/quarkus/sender/TelegramSender.java
@@ -51,7 +51,7 @@ public class TelegramSender implements TelegramSending {
}
@Override
- public Uni> send(@NotNull BoxAnswer boxAnswer) {
+ public Uni send(@NotNull BoxAnswer boxAnswer) {
return sendBoxAnswer(boxAnswer, true);
}
@@ -61,10 +61,10 @@ public class TelegramSender implements TelegramSending {
}
@Override
- public Uni deleteMessage(@NotNull String personId, @NotNull Integer messageId) {
+ public Uni deleteMessage(@NotNull String personId, @NotNull String messageId) {
final DeleteMessage deleteMessage = new DeleteMessage();
deleteMessage.setChatId(personId);
- deleteMessage.setMessageId(messageId);
+ deleteMessage.setMessageId(Integer.parseInt(messageId));
try {
absSender.execute(deleteMessage);
} catch (TelegramApiException e) {
@@ -74,51 +74,57 @@ public class TelegramSender implements TelegramSending {
}
@Override
- public Uni> replaceMessage(@NotNull String personId, @NotNull Integer messageId, @NotNull BoxAnswer newAnswer) {
+ public Uni replaceMessage(@NotNull String personId, @NotNull String messageId, @NotNull BoxAnswer newAnswer) {
return replace(personId, messageId, newAnswer, true);
}
@Override
- public Uni> sendNotSave(@NotNull BoxAnswer boxAnswer) {
+ public Uni sendNotSave(@NotNull BoxAnswer boxAnswer) {
return sendBoxAnswer(boxAnswer, false);
}
- private Uni> sendBoxAnswer(@NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
+ private Uni sendBoxAnswer(@NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
return Uni.createFrom().voidItem()
.onItem().transformToUni(
v -> {
final String recipientTelegramId = boxAnswer.getRecipientPersonId();
- if (boxAnswer.isReplace() && checkNotNull(senderRepository)) {
- return senderRepository.getLastSendMessage(recipientTelegramId)
- .onItem().transformToUni(
- lastId -> {
- if (checkNotNull(lastId)) {
- return replace(recipientTelegramId, lastId, boxAnswer, saveMessageId);
- } else {
- return sendMessage(recipientTelegramId, boxAnswer, saveMessageId);
- }
- }
- );
- } else {
- return sendMessage(recipientTelegramId, boxAnswer, saveMessageId);
+ if (boxAnswer.isReplace()) {
+ final String replaceMessageId = boxAnswer.getReplaceMessageId();
+ if (checkNotNull(replaceMessageId)) {
+ return replace(recipientTelegramId, replaceMessageId, boxAnswer, saveMessageId);
+ } else {
+ if (checkNotNull(senderRepository)) {
+ return senderRepository.getLastSendMessage(recipientTelegramId)
+ .onItem().transformToUni(
+ lastId -> {
+ if (checkNotNull(lastId)) {
+ return replace(recipientTelegramId, lastId, boxAnswer, saveMessageId);
+ } else {
+ return sendMessage(recipientTelegramId, boxAnswer, saveMessageId);
+ }
+ }
+ );
+ }
+ }
}
+ return sendMessage(recipientTelegramId, boxAnswer, saveMessageId);
}
);
}
- private Uni> replace(@NotNull String telegramId, @NotNull Integer lastMessageId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
+ private Uni replace(@NotNull String telegramId, @NotNull String lastMessageId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
return Uni.createFrom().voidItem()
.onItem().transformToUni(
v -> {
final EditMessageText editMessageText = new EditMessageText();
editMessageText.setChatId(telegramId);
- editMessageText.setMessageId(lastMessageId);
+ editMessageText.setMessageId(Integer.parseInt(lastMessageId));
editMessageText.enableMarkdown(true);
editMessageText.setText(boxAnswer.getMessage());
editMessageText.setReplyMarkup(convertInlineKeyBoard((InlineKeyBoard) boxAnswer.getKeyBoard()));
try {
absSender.execute(editMessageText);
- return Uni.createFrom().optional(SentBox.optional(lastMessageId, boxAnswer, boxAnswer));
+ return Uni.createFrom().optional(SentBox.optional(telegramId, lastMessageId, boxAnswer, boxAnswer));
} catch (TelegramApiRequestException e) {
log.error(e.getApiResponse());
if (ERROR_REPLACE_MESSAGE.equals(e.getApiResponse())) {
@@ -132,7 +138,7 @@ public class TelegramSender implements TelegramSending {
);
}
- private Uni> sendMessage(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
+ private Uni sendMessage(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
return Uni.createFrom().voidItem()
.onItem().transform(
v -> {
@@ -153,12 +159,12 @@ public class TelegramSender implements TelegramSending {
}
).onItem().ifNotNull().call(answerMessage -> {
if (checkNotNull(senderRepository) && saveMessageId) {
- return senderRepository.saveLastSendMessage(telegramId, answerMessage.getMessageId());
+ return senderRepository.saveLastSendMessage(telegramId, answerMessage.getMessageId().toString());
}
return null;
})
.onItem().ifNotNull().transformToUni(
- answerMessage -> Uni.createFrom().optional(SentBox.optional(answerMessage.getMessageId(), boxAnswer, boxAnswer))
+ answerMessage -> Uni.createFrom().optional(SentBox.optional(telegramId, answerMessage.getMessageId().toString(), boxAnswer, boxAnswer))
);
}
diff --git a/telegram-sender/telegram-sender-simple/src/main/java/dev/struchkov/godfather/telegram/simple/sender/TelegramSender.java b/telegram-sender/telegram-sender-simple/src/main/java/dev/struchkov/godfather/telegram/simple/sender/TelegramSender.java
index 85487d8..7afebdc 100644
--- a/telegram-sender/telegram-sender-simple/src/main/java/dev/struchkov/godfather/telegram/simple/sender/TelegramSender.java
+++ b/telegram-sender/telegram-sender-simple/src/main/java/dev/struchkov/godfather/telegram/simple/sender/TelegramSender.java
@@ -57,10 +57,10 @@ public class TelegramSender implements TelegramSending {
}
@Override
- public void deleteMessage(@NotNull String personId, @NotNull Integer messageId) {
+ public void deleteMessage(@NotNull String personId, @NotNull String messageId) {
final DeleteMessage deleteMessage = new DeleteMessage();
deleteMessage.setChatId(personId);
- deleteMessage.setMessageId(messageId);
+ deleteMessage.setMessageId(Integer.parseInt(messageId));
try {
absSender.execute(deleteMessage);
} catch (TelegramApiException e) {
@@ -69,22 +69,22 @@ public class TelegramSender implements TelegramSending {
}
@Override
- public Optional> replaceMessage(@NotNull String personId, @NotNull Integer messageId, @NotNull BoxAnswer newAnswer) {
+ public Optional replaceMessage(@NotNull String personId, @NotNull String messageId, @NotNull BoxAnswer newAnswer) {
return replace(personId, messageId, newAnswer, newAnswer, true);
}
@Override
- public Optional> send(@NotNull BoxAnswer boxAnswer) {
+ public Optional send(@NotNull BoxAnswer boxAnswer) {
isNotNull(boxAnswer.getRecipientPersonId());
return sendBoxAnswer(boxAnswer, true);
}
@Override
- public Optional> sendNotSave(@NotNull BoxAnswer boxAnswer) {
+ public Optional sendNotSave(@NotNull BoxAnswer boxAnswer) {
return sendBoxAnswer(boxAnswer, false);
}
- private Optional> sendBoxAnswer(BoxAnswer boxAnswer, boolean saveMessageId) {
+ private Optional sendBoxAnswer(BoxAnswer boxAnswer, boolean saveMessageId) {
final String recipientTelegramId = boxAnswer.getRecipientPersonId();
isNotNull(recipientTelegramId);
@@ -93,28 +93,32 @@ public class TelegramSender implements TelegramSending {
preparedAnswer = preSendProcessor.pretreatment(boxAnswer);
}
- if (preparedAnswer.isReplace() && checkNotNull(senderRepository)) {
- final Optional optLastId = senderRepository.getLastSendMessage(recipientTelegramId);
- if (optLastId.isPresent()) {
- return replace(recipientTelegramId, optLastId.get(), boxAnswer, preparedAnswer, saveMessageId);
+ if (preparedAnswer.isReplace()) {
+ final String replaceMessageId = preparedAnswer.getReplaceMessageId();
+ if (checkNotNull(replaceMessageId)) {
+ return replace(recipientTelegramId, replaceMessageId, boxAnswer, preparedAnswer, saveMessageId);
} else {
- return sendMessage(recipientTelegramId, boxAnswer, preparedAnswer, saveMessageId);
+ if (checkNotNull(senderRepository)) {
+ final Optional optLastId = senderRepository.getLastSendMessage(recipientTelegramId);
+ if (optLastId.isPresent()) {
+ return replace(recipientTelegramId, optLastId.get(), boxAnswer, preparedAnswer, saveMessageId);
+ }
+ }
}
- } else {
- return sendMessage(recipientTelegramId, boxAnswer, preparedAnswer, saveMessageId);
}
+ return sendMessage(recipientTelegramId, boxAnswer, preparedAnswer, saveMessageId);
}
- private Optional> replace(@NotNull String telegramId, @NotNull Integer lastMessageId, @NotNull BoxAnswer boxAnswer, BoxAnswer preparedAnswer, boolean saveMessageId) {
+ private Optional replace(@NotNull String telegramId, @NotNull String replaceMessageId, @NotNull BoxAnswer boxAnswer, BoxAnswer preparedAnswer, boolean saveMessageId) {
final EditMessageText editMessageText = new EditMessageText();
editMessageText.setChatId(telegramId);
- editMessageText.setMessageId(lastMessageId);
+ editMessageText.setMessageId(Integer.parseInt(replaceMessageId));
editMessageText.enableMarkdown(true);
editMessageText.setText(boxAnswer.getMessage());
editMessageText.setReplyMarkup(KeyBoardConvert.convertInlineKeyBoard((InlineKeyBoard) boxAnswer.getKeyBoard()));
try {
absSender.execute(editMessageText);
- return SentBox.optional(lastMessageId, preparedAnswer, boxAnswer);
+ return SentBox.optional(telegramId, replaceMessageId, preparedAnswer, boxAnswer);
} catch (TelegramApiRequestException e) {
log.error(e.getApiResponse());
if (ERROR_REPLACE_MESSAGE.equals(e.getApiResponse())) {
@@ -126,7 +130,7 @@ public class TelegramSender implements TelegramSending {
return Optional.empty();
}
- private Optional> sendMessage(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, BoxAnswer preparedAnswer, boolean saveMessageId) {
+ private Optional sendMessage(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, BoxAnswer preparedAnswer, boolean saveMessageId) {
final SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
sendMessage.setChatId(telegramId);
@@ -135,9 +139,9 @@ public class TelegramSender implements TelegramSending {
try {
final Message execute = absSender.execute(sendMessage);
if (checkNotNull(senderRepository) && saveMessageId) {
- senderRepository.saveLastSendMessage(telegramId, execute.getMessageId());
+ senderRepository.saveLastSendMessage(telegramId, execute.getMessageId().toString());
}
- return SentBox.optional(execute.getMessageId(), preparedAnswer, boxAnswer);
+ return SentBox.optional(telegramId, execute.getMessageId().toString(), preparedAnswer, boxAnswer);
} catch (TelegramApiRequestException e) {
log.error(e.getApiResponse());
} catch (TelegramApiException e) {