Добавил возможность заменять конкретное сообщение, а не только последнее
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
d6054cbd89
commit
790264ee96
2
pom.xml
2
pom.xml
@ -37,7 +37,7 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
|
||||||
<godfather.core.ver>0.0.50</godfather.core.ver>
|
<godfather.core.ver>0.0.51-SNAPSHOT</godfather.core.ver>
|
||||||
<telegrambots.ver>6.3.0</telegrambots.ver>
|
<telegrambots.ver>6.3.0</telegrambots.ver>
|
||||||
|
|
||||||
<haiti.version>2.0.0</haiti.version>
|
<haiti.version>2.0.0</haiti.version>
|
||||||
|
@ -18,6 +18,7 @@ public class CallbackQueryConvert {
|
|||||||
final String callbackData = callbackQuery.getData();
|
final String callbackData = callbackQuery.getData();
|
||||||
|
|
||||||
final Mail mail = new Mail();
|
final Mail mail = new Mail();
|
||||||
|
mail.setId(callbackQuery.getMessage().getMessageId().toString());
|
||||||
mail.setCreateDate(LocalDateTime.now());
|
mail.setCreateDate(LocalDateTime.now());
|
||||||
mail.setText(callbackData);
|
mail.setText(callbackData);
|
||||||
mail.addAttachment(convertToButtonClick(callbackData, callbackQuery.getMessage().getMessageId()));
|
mail.addAttachment(convertToButtonClick(callbackData, callbackQuery.getMessage().getMessageId()));
|
||||||
@ -34,7 +35,7 @@ public class CallbackQueryConvert {
|
|||||||
private static ButtonClickAttachment convertToButtonClick(String callbackData, Integer messageId) {
|
private static ButtonClickAttachment convertToButtonClick(String callbackData, Integer messageId) {
|
||||||
final ButtonClickAttachment buttonClickAttachment = new ButtonClickAttachment();
|
final ButtonClickAttachment buttonClickAttachment = new ButtonClickAttachment();
|
||||||
buttonClickAttachment.setRawCallBackData(callbackData);
|
buttonClickAttachment.setRawCallBackData(callbackData);
|
||||||
buttonClickAttachment.setMessageId(messageId);
|
buttonClickAttachment.setMessageId(messageId.toString());
|
||||||
if (callbackData.charAt(0) == '[' && callbackData.charAt(callbackData.length() - 1) == ']') {
|
if (callbackData.charAt(0) == '[' && callbackData.charAt(callbackData.length() - 1) == ']') {
|
||||||
final String[] args = callbackData.substring(1, callbackData.length() - 1).split(";");
|
final String[] args = callbackData.substring(1, callbackData.length() - 1).split(";");
|
||||||
for (String arg : args) {
|
for (String arg : args) {
|
||||||
|
@ -39,6 +39,7 @@ public final class MessageMailConvert {
|
|||||||
public static Mail apply(Message message) {
|
public static Mail apply(Message message) {
|
||||||
final Mail mail = new Mail();
|
final Mail mail = new Mail();
|
||||||
final Long chatId = message.getChatId();
|
final Long chatId = message.getChatId();
|
||||||
|
mail.setId(message.getMessageId().toString());
|
||||||
mail.setPersonId(chatId != null ? chatId.toString() : null);
|
mail.setPersonId(chatId != null ? chatId.toString() : null);
|
||||||
mail.setText(message.getText());
|
mail.setText(message.getText());
|
||||||
mail.setCreateDate(LocalDateTime.ofInstant(Instant.ofEpochSecond(message.getDate()), ZoneId.systemDefault()));
|
mail.setCreateDate(LocalDateTime.ofInstant(Instant.ofEpochSecond(message.getDate()), ZoneId.systemDefault()));
|
||||||
|
@ -45,8 +45,9 @@ public class EventDistributorService implements EventDistributor {
|
|||||||
return Uni.createFrom().voidItem()
|
return Uni.createFrom().voidItem()
|
||||||
.onItem().transformToUni(
|
.onItem().transformToUni(
|
||||||
v -> {
|
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)) {
|
if (!isEvent(message)) {
|
||||||
final Optional<List<EventHandler>> optHandlers = getHandler(Mail.TYPE);
|
final Optional<List<EventHandler>> optHandlers = getHandler(Mail.TYPE);
|
||||||
if (optHandlers.isPresent()) {
|
if (optHandlers.isPresent()) {
|
||||||
@ -58,8 +59,7 @@ public class EventDistributorService implements EventDistributor {
|
|||||||
return Uni.createFrom().voidItem();
|
return Uni.createFrom().voidItem();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (checkNotNull(update.getCallbackQuery())) {
|
if (checkNotNull(callbackQuery)) {
|
||||||
final CallbackQuery callbackQuery = update.getCallbackQuery();
|
|
||||||
final Optional<List<EventHandler>> optHandlers = getHandler(Mail.TYPE);
|
final Optional<List<EventHandler>> optHandlers = getHandler(Mail.TYPE);
|
||||||
if (optHandlers.isPresent()) {
|
if (optHandlers.isPresent()) {
|
||||||
return Multi.createFrom().iterable(optHandlers.get())
|
return Multi.createFrom().iterable(optHandlers.get())
|
||||||
@ -100,15 +100,15 @@ public class EventDistributorService implements EventDistributor {
|
|||||||
|
|
||||||
private boolean isEvent(Message message) {
|
private boolean isEvent(Message message) {
|
||||||
return message.getChannelChatCreated() != null
|
return message.getChannelChatCreated() != null
|
||||||
|| message.getDeleteChatPhoto() != null
|
|| message.getDeleteChatPhoto() != null
|
||||||
|| isNewChatMember(message.getNewChatMembers())
|
|| isNewChatMember(message.getNewChatMembers())
|
||||||
|| message.getNewChatTitle() != null
|
|| message.getNewChatTitle() != null
|
||||||
|| message.getNewChatPhoto() != null
|
|| message.getNewChatPhoto() != null
|
||||||
|| message.getVideoChatEnded() != null
|
|| message.getVideoChatEnded() != null
|
||||||
|| message.getVideoChatParticipantsInvited() != null
|
|| message.getVideoChatParticipantsInvited() != null
|
||||||
|| message.getVideoChatScheduled() != null
|
|| message.getVideoChatScheduled() != null
|
||||||
|| message.getVideoNote() != null
|
|| message.getVideoNote() != null
|
||||||
|| message.getVideoChatStarted() != null;
|
|| message.getVideoChatStarted() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isNewChatMember(List<User> newChatMembers) {
|
private boolean isNewChatMember(List<User> newChatMembers) {
|
||||||
|
@ -38,16 +38,16 @@ public class EventDistributorService implements EventDistributor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processing(@NotNull Update update) {
|
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)) {
|
if (!isEvent(message)) {
|
||||||
getHandler(Mail.TYPE)
|
getHandler(Mail.TYPE)
|
||||||
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.handle(MessageMailConvert.apply(message))));
|
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.handle(MessageMailConvert.apply(message))));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (update.getCallbackQuery() != null) {
|
if (callbackQuery != null) {
|
||||||
final CallbackQuery callbackQuery = update.getCallbackQuery();
|
|
||||||
getHandler(Mail.TYPE)
|
getHandler(Mail.TYPE)
|
||||||
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.handle(CallbackQueryConvert.apply(callbackQuery))));
|
.ifPresent(eventProviders -> eventProviders.forEach(eventProvider -> eventProvider.handle(CallbackQueryConvert.apply(callbackQuery))));
|
||||||
return;
|
return;
|
||||||
@ -69,15 +69,15 @@ public class EventDistributorService implements EventDistributor {
|
|||||||
|
|
||||||
private boolean isEvent(Message message) {
|
private boolean isEvent(Message message) {
|
||||||
return message.getChannelChatCreated() != null
|
return message.getChannelChatCreated() != null
|
||||||
|| message.getDeleteChatPhoto() != null
|
|| message.getDeleteChatPhoto() != null
|
||||||
|| isNewChatMember(message.getNewChatMembers())
|
|| isNewChatMember(message.getNewChatMembers())
|
||||||
|| message.getNewChatTitle() != null
|
|| message.getNewChatTitle() != null
|
||||||
|| message.getNewChatPhoto() != null
|
|| message.getNewChatPhoto() != null
|
||||||
|| message.getVideoChatEnded() != null
|
|| message.getVideoChatEnded() != null
|
||||||
|| message.getVideoChatParticipantsInvited() != null
|
|| message.getVideoChatParticipantsInvited() != null
|
||||||
|| message.getVideoChatScheduled() != null
|
|| message.getVideoChatScheduled() != null
|
||||||
|| message.getVideoNote() != null
|
|| message.getVideoNote() != null
|
||||||
|| message.getVideoChatStarted() != null;
|
|| message.getVideoChatStarted() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isNewChatMember(List<User> newChatMembers) {
|
private boolean isNewChatMember(List<User> newChatMembers) {
|
||||||
|
@ -4,9 +4,9 @@ import io.smallrye.mutiny.Uni;
|
|||||||
|
|
||||||
public interface SenderRepository {
|
public interface SenderRepository {
|
||||||
|
|
||||||
Uni<Integer> getLastSendMessage(String telegramId);
|
Uni<String> getLastSendMessage(String telegramId);
|
||||||
|
|
||||||
Uni<Void> saveLastSendMessage(String telegramId, Integer messageId);
|
Uni<Void> saveLastSendMessage(String telegramId, String messageId);
|
||||||
|
|
||||||
Uni<Void> removeLastSendMessage(String telegramId);
|
Uni<Void> removeLastSendMessage(String telegramId);
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ import dev.struchkov.godfather.quarkus.context.service.SendingService;
|
|||||||
import io.smallrye.mutiny.Uni;
|
import io.smallrye.mutiny.Uni;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public interface TelegramSending extends SendingService<Integer> {
|
public interface TelegramSending extends SendingService {
|
||||||
|
|
||||||
Uni<SentBox<Integer>> sendNotSave(@NotNull BoxAnswer boxAnswer);
|
Uni<SentBox> sendNotSave(@NotNull BoxAnswer boxAnswer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,9 @@ import java.util.Optional;
|
|||||||
|
|
||||||
public interface SenderRepository {
|
public interface SenderRepository {
|
||||||
|
|
||||||
Optional<Integer> getLastSendMessage(String telegramId);
|
Optional<String> getLastSendMessage(String telegramId);
|
||||||
|
|
||||||
void saveLastSendMessage(String telegramId, Integer messageId);
|
void saveLastSendMessage(String telegramId, String messageId);
|
||||||
|
|
||||||
void removeLastSendMessage(String telegramId);
|
void removeLastSendMessage(String telegramId);
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface TelegramSending extends SendingService<Integer> {
|
public interface TelegramSending extends SendingService {
|
||||||
|
|
||||||
Optional<SentBox<Integer>> sendNotSave(@NotNull BoxAnswer boxAnswer);
|
Optional<SentBox> sendNotSave(@NotNull BoxAnswer boxAnswer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,15 +11,15 @@ import static dev.struchkov.haiti.utils.Inspector.isNotNull;
|
|||||||
|
|
||||||
public class SenderMapRepository implements SenderRepository {
|
public class SenderMapRepository implements SenderRepository {
|
||||||
|
|
||||||
private final Map<String, Integer> lastMessageId = new HashMap<>();
|
private final Map<String, String> lastMessageId = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<Integer> getLastSendMessage(String telegramId) {
|
public Uni<String> getLastSendMessage(String telegramId) {
|
||||||
return Uni.createFrom().item(lastMessageId.get(telegramId));
|
return Uni.createFrom().item(lastMessageId.get(telegramId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<Void> saveLastSendMessage(@NotNull String telegramId, @NotNull Integer messageId) {
|
public Uni<Void> saveLastSendMessage(@NotNull String telegramId, @NotNull String messageId) {
|
||||||
isNotNull(telegramId);
|
isNotNull(telegramId);
|
||||||
lastMessageId.put(telegramId, messageId);
|
lastMessageId.put(telegramId, messageId);
|
||||||
return Uni.createFrom().voidItem();
|
return Uni.createFrom().voidItem();
|
||||||
|
@ -11,15 +11,15 @@ import static dev.struchkov.haiti.utils.Inspector.isNotNull;
|
|||||||
|
|
||||||
public class SenderMapRepository implements SenderRepository {
|
public class SenderMapRepository implements SenderRepository {
|
||||||
|
|
||||||
private final Map<String, Integer> lastMessageId = new HashMap<>();
|
private final Map<String, String> lastMessageId = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Integer> getLastSendMessage(String telegramId) {
|
public Optional<String> getLastSendMessage(String telegramId) {
|
||||||
return Optional.ofNullable(lastMessageId.get(telegramId));
|
return Optional.ofNullable(lastMessageId.get(telegramId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveLastSendMessage(@NotNull String telegramId, @NotNull Integer messageId) {
|
public void saveLastSendMessage(@NotNull String telegramId, @NotNull String messageId) {
|
||||||
isNotNull(telegramId);
|
isNotNull(telegramId);
|
||||||
lastMessageId.put(telegramId, messageId);
|
lastMessageId.put(telegramId, messageId);
|
||||||
}
|
}
|
||||||
|
@ -27,4 +27,8 @@ public class TriggerChecks {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Predicate<Mail> isClickButton() {
|
||||||
|
return mail -> Attachments.findFirstButtonClick(mail.getAttachments()).isPresent();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ public class ButtonClickAttachment extends Attachment {
|
|||||||
/**
|
/**
|
||||||
* Идентификатор сообщения, под которым пользователь нажал кнопку.
|
* Идентификатор сообщения, под которым пользователь нажал кнопку.
|
||||||
*/
|
*/
|
||||||
private Integer messageId;
|
private String messageId;
|
||||||
private String rawCallBackData;
|
private String rawCallBackData;
|
||||||
private final Map<String, Arg> args = new HashMap<>();
|
private final Map<String, Arg> args = new HashMap<>();
|
||||||
|
|
||||||
@ -46,11 +46,11 @@ public class ButtonClickAttachment extends Attachment {
|
|||||||
return args.values();
|
return args.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getMessageId() {
|
public String getMessageId() {
|
||||||
return messageId;
|
return messageId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMessageId(Integer messageId) {
|
public void setMessageId(String messageId) {
|
||||||
this.messageId = messageId;
|
this.messageId = messageId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +64,7 @@ public class ButtonClickAttachment extends Attachment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class Arg {
|
public static class Arg {
|
||||||
|
|
||||||
private final String type;
|
private final String type;
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ public class TelegramSender implements TelegramSending {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<SentBox<Integer>> send(@NotNull BoxAnswer boxAnswer) {
|
public Uni<SentBox> send(@NotNull BoxAnswer boxAnswer) {
|
||||||
return sendBoxAnswer(boxAnswer, true);
|
return sendBoxAnswer(boxAnswer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,10 +61,10 @@ public class TelegramSender implements TelegramSending {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<Void> deleteMessage(@NotNull String personId, @NotNull Integer messageId) {
|
public Uni<Void> deleteMessage(@NotNull String personId, @NotNull String messageId) {
|
||||||
final DeleteMessage deleteMessage = new DeleteMessage();
|
final DeleteMessage deleteMessage = new DeleteMessage();
|
||||||
deleteMessage.setChatId(personId);
|
deleteMessage.setChatId(personId);
|
||||||
deleteMessage.setMessageId(messageId);
|
deleteMessage.setMessageId(Integer.parseInt(messageId));
|
||||||
try {
|
try {
|
||||||
absSender.execute(deleteMessage);
|
absSender.execute(deleteMessage);
|
||||||
} catch (TelegramApiException e) {
|
} catch (TelegramApiException e) {
|
||||||
@ -74,51 +74,57 @@ public class TelegramSender implements TelegramSending {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<SentBox<Integer>> replaceMessage(@NotNull String personId, @NotNull Integer messageId, @NotNull BoxAnswer newAnswer) {
|
public Uni<SentBox> replaceMessage(@NotNull String personId, @NotNull String messageId, @NotNull BoxAnswer newAnswer) {
|
||||||
return replace(personId, messageId, newAnswer, true);
|
return replace(personId, messageId, newAnswer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<SentBox<Integer>> sendNotSave(@NotNull BoxAnswer boxAnswer) {
|
public Uni<SentBox> sendNotSave(@NotNull BoxAnswer boxAnswer) {
|
||||||
return sendBoxAnswer(boxAnswer, false);
|
return sendBoxAnswer(boxAnswer, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Uni<SentBox<Integer>> sendBoxAnswer(@NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
|
private Uni<SentBox> sendBoxAnswer(@NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
|
||||||
return Uni.createFrom().voidItem()
|
return Uni.createFrom().voidItem()
|
||||||
.onItem().transformToUni(
|
.onItem().transformToUni(
|
||||||
v -> {
|
v -> {
|
||||||
final String recipientTelegramId = boxAnswer.getRecipientPersonId();
|
final String recipientTelegramId = boxAnswer.getRecipientPersonId();
|
||||||
if (boxAnswer.isReplace() && checkNotNull(senderRepository)) {
|
if (boxAnswer.isReplace()) {
|
||||||
return senderRepository.getLastSendMessage(recipientTelegramId)
|
final String replaceMessageId = boxAnswer.getReplaceMessageId();
|
||||||
.onItem().transformToUni(
|
if (checkNotNull(replaceMessageId)) {
|
||||||
lastId -> {
|
return replace(recipientTelegramId, replaceMessageId, boxAnswer, saveMessageId);
|
||||||
if (checkNotNull(lastId)) {
|
} else {
|
||||||
return replace(recipientTelegramId, lastId, boxAnswer, saveMessageId);
|
if (checkNotNull(senderRepository)) {
|
||||||
} else {
|
return senderRepository.getLastSendMessage(recipientTelegramId)
|
||||||
return sendMessage(recipientTelegramId, boxAnswer, saveMessageId);
|
.onItem().transformToUni(
|
||||||
}
|
lastId -> {
|
||||||
}
|
if (checkNotNull(lastId)) {
|
||||||
);
|
return replace(recipientTelegramId, lastId, boxAnswer, saveMessageId);
|
||||||
} else {
|
} else {
|
||||||
return sendMessage(recipientTelegramId, boxAnswer, saveMessageId);
|
return sendMessage(recipientTelegramId, boxAnswer, saveMessageId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return sendMessage(recipientTelegramId, boxAnswer, saveMessageId);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Uni<SentBox<Integer>> replace(@NotNull String telegramId, @NotNull Integer lastMessageId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
|
private Uni<SentBox> replace(@NotNull String telegramId, @NotNull String lastMessageId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
|
||||||
return Uni.createFrom().voidItem()
|
return Uni.createFrom().voidItem()
|
||||||
.onItem().transformToUni(
|
.onItem().transformToUni(
|
||||||
v -> {
|
v -> {
|
||||||
final EditMessageText editMessageText = new EditMessageText();
|
final EditMessageText editMessageText = new EditMessageText();
|
||||||
editMessageText.setChatId(telegramId);
|
editMessageText.setChatId(telegramId);
|
||||||
editMessageText.setMessageId(lastMessageId);
|
editMessageText.setMessageId(Integer.parseInt(lastMessageId));
|
||||||
editMessageText.enableMarkdown(true);
|
editMessageText.enableMarkdown(true);
|
||||||
editMessageText.setText(boxAnswer.getMessage());
|
editMessageText.setText(boxAnswer.getMessage());
|
||||||
editMessageText.setReplyMarkup(convertInlineKeyBoard((InlineKeyBoard) boxAnswer.getKeyBoard()));
|
editMessageText.setReplyMarkup(convertInlineKeyBoard((InlineKeyBoard) boxAnswer.getKeyBoard()));
|
||||||
try {
|
try {
|
||||||
absSender.execute(editMessageText);
|
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) {
|
} catch (TelegramApiRequestException e) {
|
||||||
log.error(e.getApiResponse());
|
log.error(e.getApiResponse());
|
||||||
if (ERROR_REPLACE_MESSAGE.equals(e.getApiResponse())) {
|
if (ERROR_REPLACE_MESSAGE.equals(e.getApiResponse())) {
|
||||||
@ -132,7 +138,7 @@ public class TelegramSender implements TelegramSending {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Uni<SentBox<Integer>> sendMessage(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
|
private Uni<SentBox> sendMessage(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
|
||||||
return Uni.createFrom().voidItem()
|
return Uni.createFrom().voidItem()
|
||||||
.onItem().transform(
|
.onItem().transform(
|
||||||
v -> {
|
v -> {
|
||||||
@ -153,12 +159,12 @@ public class TelegramSender implements TelegramSending {
|
|||||||
}
|
}
|
||||||
).onItem().ifNotNull().call(answerMessage -> {
|
).onItem().ifNotNull().call(answerMessage -> {
|
||||||
if (checkNotNull(senderRepository) && saveMessageId) {
|
if (checkNotNull(senderRepository) && saveMessageId) {
|
||||||
return senderRepository.saveLastSendMessage(telegramId, answerMessage.getMessageId());
|
return senderRepository.saveLastSendMessage(telegramId, answerMessage.getMessageId().toString());
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
})
|
})
|
||||||
.onItem().ifNotNull().transformToUni(
|
.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))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,10 +57,10 @@ public class TelegramSender implements TelegramSending {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteMessage(@NotNull String personId, @NotNull Integer messageId) {
|
public void deleteMessage(@NotNull String personId, @NotNull String messageId) {
|
||||||
final DeleteMessage deleteMessage = new DeleteMessage();
|
final DeleteMessage deleteMessage = new DeleteMessage();
|
||||||
deleteMessage.setChatId(personId);
|
deleteMessage.setChatId(personId);
|
||||||
deleteMessage.setMessageId(messageId);
|
deleteMessage.setMessageId(Integer.parseInt(messageId));
|
||||||
try {
|
try {
|
||||||
absSender.execute(deleteMessage);
|
absSender.execute(deleteMessage);
|
||||||
} catch (TelegramApiException e) {
|
} catch (TelegramApiException e) {
|
||||||
@ -69,22 +69,22 @@ public class TelegramSender implements TelegramSending {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<SentBox<Integer>> replaceMessage(@NotNull String personId, @NotNull Integer messageId, @NotNull BoxAnswer newAnswer) {
|
public Optional<SentBox> replaceMessage(@NotNull String personId, @NotNull String messageId, @NotNull BoxAnswer newAnswer) {
|
||||||
return replace(personId, messageId, newAnswer, newAnswer, true);
|
return replace(personId, messageId, newAnswer, newAnswer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<SentBox<Integer>> send(@NotNull BoxAnswer boxAnswer) {
|
public Optional<SentBox> send(@NotNull BoxAnswer boxAnswer) {
|
||||||
isNotNull(boxAnswer.getRecipientPersonId());
|
isNotNull(boxAnswer.getRecipientPersonId());
|
||||||
return sendBoxAnswer(boxAnswer, true);
|
return sendBoxAnswer(boxAnswer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<SentBox<Integer>> sendNotSave(@NotNull BoxAnswer boxAnswer) {
|
public Optional<SentBox> sendNotSave(@NotNull BoxAnswer boxAnswer) {
|
||||||
return sendBoxAnswer(boxAnswer, false);
|
return sendBoxAnswer(boxAnswer, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<SentBox<Integer>> sendBoxAnswer(BoxAnswer boxAnswer, boolean saveMessageId) {
|
private Optional<SentBox> sendBoxAnswer(BoxAnswer boxAnswer, boolean saveMessageId) {
|
||||||
final String recipientTelegramId = boxAnswer.getRecipientPersonId();
|
final String recipientTelegramId = boxAnswer.getRecipientPersonId();
|
||||||
isNotNull(recipientTelegramId);
|
isNotNull(recipientTelegramId);
|
||||||
|
|
||||||
@ -93,28 +93,32 @@ public class TelegramSender implements TelegramSending {
|
|||||||
preparedAnswer = preSendProcessor.pretreatment(boxAnswer);
|
preparedAnswer = preSendProcessor.pretreatment(boxAnswer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preparedAnswer.isReplace() && checkNotNull(senderRepository)) {
|
if (preparedAnswer.isReplace()) {
|
||||||
final Optional<Integer> optLastId = senderRepository.getLastSendMessage(recipientTelegramId);
|
final String replaceMessageId = preparedAnswer.getReplaceMessageId();
|
||||||
if (optLastId.isPresent()) {
|
if (checkNotNull(replaceMessageId)) {
|
||||||
return replace(recipientTelegramId, optLastId.get(), boxAnswer, preparedAnswer, saveMessageId);
|
return replace(recipientTelegramId, replaceMessageId, boxAnswer, preparedAnswer, saveMessageId);
|
||||||
} else {
|
} else {
|
||||||
return sendMessage(recipientTelegramId, boxAnswer, preparedAnswer, saveMessageId);
|
if (checkNotNull(senderRepository)) {
|
||||||
|
final Optional<String> 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<SentBox<Integer>> replace(@NotNull String telegramId, @NotNull Integer lastMessageId, @NotNull BoxAnswer boxAnswer, BoxAnswer preparedAnswer, boolean saveMessageId) {
|
private Optional<SentBox> replace(@NotNull String telegramId, @NotNull String replaceMessageId, @NotNull BoxAnswer boxAnswer, BoxAnswer preparedAnswer, boolean saveMessageId) {
|
||||||
final EditMessageText editMessageText = new EditMessageText();
|
final EditMessageText editMessageText = new EditMessageText();
|
||||||
editMessageText.setChatId(telegramId);
|
editMessageText.setChatId(telegramId);
|
||||||
editMessageText.setMessageId(lastMessageId);
|
editMessageText.setMessageId(Integer.parseInt(replaceMessageId));
|
||||||
editMessageText.enableMarkdown(true);
|
editMessageText.enableMarkdown(true);
|
||||||
editMessageText.setText(boxAnswer.getMessage());
|
editMessageText.setText(boxAnswer.getMessage());
|
||||||
editMessageText.setReplyMarkup(KeyBoardConvert.convertInlineKeyBoard((InlineKeyBoard) boxAnswer.getKeyBoard()));
|
editMessageText.setReplyMarkup(KeyBoardConvert.convertInlineKeyBoard((InlineKeyBoard) boxAnswer.getKeyBoard()));
|
||||||
try {
|
try {
|
||||||
absSender.execute(editMessageText);
|
absSender.execute(editMessageText);
|
||||||
return SentBox.optional(lastMessageId, preparedAnswer, boxAnswer);
|
return SentBox.optional(telegramId, replaceMessageId, preparedAnswer, boxAnswer);
|
||||||
} catch (TelegramApiRequestException e) {
|
} catch (TelegramApiRequestException e) {
|
||||||
log.error(e.getApiResponse());
|
log.error(e.getApiResponse());
|
||||||
if (ERROR_REPLACE_MESSAGE.equals(e.getApiResponse())) {
|
if (ERROR_REPLACE_MESSAGE.equals(e.getApiResponse())) {
|
||||||
@ -126,7 +130,7 @@ public class TelegramSender implements TelegramSending {
|
|||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<SentBox<Integer>> sendMessage(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, BoxAnswer preparedAnswer, boolean saveMessageId) {
|
private Optional<SentBox> sendMessage(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, BoxAnswer preparedAnswer, boolean saveMessageId) {
|
||||||
final SendMessage sendMessage = new SendMessage();
|
final SendMessage sendMessage = new SendMessage();
|
||||||
sendMessage.enableMarkdown(true);
|
sendMessage.enableMarkdown(true);
|
||||||
sendMessage.setChatId(telegramId);
|
sendMessage.setChatId(telegramId);
|
||||||
@ -135,9 +139,9 @@ public class TelegramSender implements TelegramSending {
|
|||||||
try {
|
try {
|
||||||
final Message execute = absSender.execute(sendMessage);
|
final Message execute = absSender.execute(sendMessage);
|
||||||
if (checkNotNull(senderRepository) && saveMessageId) {
|
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) {
|
} 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