Рефакторгин пре-процессинга перед отправкой сообщения
This commit is contained in:
parent
78cc771852
commit
3ec635eb77
@ -11,22 +11,22 @@ import static dev.struchkov.haiti.utils.Inspector.isNotNull;
|
|||||||
|
|
||||||
public class SenderMapRepository implements SenderRepository {
|
public class SenderMapRepository implements SenderRepository {
|
||||||
|
|
||||||
private final Map<Long, Integer> lastMessageId = new HashMap<>();
|
private final Map<String, Integer> lastMessageId = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<Integer> getLastSendMessage(Long telegramId) {
|
public Uni<Integer> getLastSendMessage(String telegramId) {
|
||||||
return Uni.createFrom().item(lastMessageId.get(telegramId));
|
return Uni.createFrom().item(lastMessageId.get(telegramId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<Void> saveLastSendMessage(@NotNull Long telegramId, @NotNull Integer messageId) {
|
public Uni<Void> saveLastSendMessage(@NotNull String telegramId, @NotNull Integer messageId) {
|
||||||
isNotNull(telegramId);
|
isNotNull(telegramId);
|
||||||
lastMessageId.put(telegramId, messageId);
|
lastMessageId.put(telegramId, messageId);
|
||||||
return Uni.createFrom().voidItem();
|
return Uni.createFrom().voidItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<Void> removeLastSendMessage(Long telegramId) {
|
public Uni<Void> removeLastSendMessage(String telegramId) {
|
||||||
lastMessageId.remove(telegramId);
|
lastMessageId.remove(telegramId);
|
||||||
return Uni.createFrom().voidItem();
|
return Uni.createFrom().voidItem();
|
||||||
}
|
}
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
package dev.struchkov.godfather.telegram.quarkus.sender;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* // TODO: 18.09.2020 Добавить описание.
|
|
||||||
*
|
|
||||||
* @author upagge 18.09.2020
|
|
||||||
*/
|
|
||||||
@FunctionalInterface
|
|
||||||
public interface SendPreProcessing {
|
|
||||||
|
|
||||||
String pretreatment(String messageText);
|
|
||||||
|
|
||||||
}
|
|
@ -2,6 +2,7 @@ package dev.struchkov.godfather.telegram.quarkus.sender;
|
|||||||
|
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
||||||
import dev.struchkov.godfather.main.domain.SendType;
|
import dev.struchkov.godfather.main.domain.SendType;
|
||||||
|
import dev.struchkov.godfather.quarkus.context.service.PreSendProcessing;
|
||||||
import dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard;
|
import dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard;
|
||||||
import dev.struchkov.godfather.telegram.main.context.TelegramConnect;
|
import dev.struchkov.godfather.telegram.main.context.TelegramConnect;
|
||||||
import dev.struchkov.godfather.telegram.main.sender.util.KeyBoardConvert;
|
import dev.struchkov.godfather.telegram.main.sender.util.KeyBoardConvert;
|
||||||
@ -18,9 +19,10 @@ import org.telegram.telegrambots.meta.bots.AbsSender;
|
|||||||
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
|
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
|
||||||
import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException;
|
import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static dev.struchkov.godfather.telegram.main.sender.util.KeyBoardConvert.convertInlineKeyBoard;
|
import static dev.struchkov.godfather.telegram.main.sender.util.KeyBoardConvert.convertInlineKeyBoard;
|
||||||
import static dev.struchkov.haiti.utils.Checker.checkNotNull;
|
import static dev.struchkov.haiti.utils.Checker.checkNotNull;
|
||||||
import static dev.struchkov.haiti.utils.Inspector.isNotNull;
|
|
||||||
|
|
||||||
public class TelegramSender implements TelegramSending {
|
public class TelegramSender implements TelegramSending {
|
||||||
|
|
||||||
@ -30,7 +32,8 @@ public class TelegramSender implements TelegramSending {
|
|||||||
|
|
||||||
private final AbsSender absSender;
|
private final AbsSender absSender;
|
||||||
|
|
||||||
private SendPreProcessing sendPreProcessing;
|
//TODO [09.12.2022|uPagge]: Доработать использование preSendProcessors
|
||||||
|
private List<PreSendProcessing> preSendProcessors;
|
||||||
private SenderRepository senderRepository;
|
private SenderRepository senderRepository;
|
||||||
|
|
||||||
public TelegramSender(TelegramConnect telegramConnect) {
|
public TelegramSender(TelegramConnect telegramConnect) {
|
||||||
@ -42,11 +45,7 @@ public class TelegramSender implements TelegramSending {
|
|||||||
this.senderRepository = senderRepository;
|
this.senderRepository = senderRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSendPreProcessing(SendPreProcessing sendPreProcessing) {
|
public void setSenderRepository(SenderRepository senderRepository) {
|
||||||
this.sendPreProcessing = sendPreProcessing;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSenderRepository(SenderRepository senderStorageService) {
|
|
||||||
this.senderRepository = senderRepository;
|
this.senderRepository = senderRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,6 +54,11 @@ public class TelegramSender implements TelegramSending {
|
|||||||
return sendBoxAnswer(telegramId, boxAnswer, true);
|
return sendBoxAnswer(telegramId, boxAnswer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPreSendProcess(@NotNull PreSendProcessing processing) {
|
||||||
|
preSendProcessors.add(processing);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Uni<Void> sendNotSave(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer) {
|
public Uni<Void> sendNotSave(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer) {
|
||||||
return sendBoxAnswer(telegramId, boxAnswer, false);
|
return sendBoxAnswer(telegramId, boxAnswer, false);
|
||||||
@ -64,8 +68,6 @@ public class TelegramSender implements TelegramSending {
|
|||||||
return Uni.createFrom().voidItem()
|
return Uni.createFrom().voidItem()
|
||||||
.onItem().transformToUni(
|
.onItem().transformToUni(
|
||||||
v -> {
|
v -> {
|
||||||
isNotNull(telegramId, boxAnswer);
|
|
||||||
|
|
||||||
if (boxAnswer.isReplace() && checkNotNull(senderRepository)) {
|
if (boxAnswer.isReplace() && checkNotNull(senderRepository)) {
|
||||||
return senderRepository.getLastSendMessage(telegramId)
|
return senderRepository.getLastSendMessage(telegramId)
|
||||||
.onItem().transformToUni(
|
.onItem().transformToUni(
|
||||||
@ -89,7 +91,7 @@ public class TelegramSender implements TelegramSending {
|
|||||||
.onItem().transformToUni(
|
.onItem().transformToUni(
|
||||||
v -> {
|
v -> {
|
||||||
final EditMessageText editMessageText = new EditMessageText();
|
final EditMessageText editMessageText = new EditMessageText();
|
||||||
editMessageText.setChatId(String.valueOf(telegramId));
|
editMessageText.setChatId(telegramId);
|
||||||
editMessageText.setMessageId(lastMessageId);
|
editMessageText.setMessageId(lastMessageId);
|
||||||
editMessageText.enableMarkdown(true);
|
editMessageText.enableMarkdown(true);
|
||||||
editMessageText.setText(boxAnswer.getMessage());
|
editMessageText.setText(boxAnswer.getMessage());
|
||||||
@ -111,11 +113,7 @@ public class TelegramSender implements TelegramSending {
|
|||||||
final SendMessage sendMessage = new SendMessage();
|
final SendMessage sendMessage = new SendMessage();
|
||||||
sendMessage.enableMarkdown(true);
|
sendMessage.enableMarkdown(true);
|
||||||
sendMessage.setChatId(telegramId);
|
sendMessage.setChatId(telegramId);
|
||||||
sendMessage.setText(
|
sendMessage.setText(boxAnswer.getMessage());
|
||||||
sendPreProcessing != null
|
|
||||||
? sendPreProcessing.pretreatment(boxAnswer.getMessage())
|
|
||||||
: boxAnswer.getMessage()
|
|
||||||
);
|
|
||||||
sendMessage.setReplyMarkup(KeyBoardConvert.convertKeyBoard(boxAnswer.getKeyBoard()));
|
sendMessage.setReplyMarkup(KeyBoardConvert.convertKeyBoard(boxAnswer.getKeyBoard()));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
package dev.struchkov.godfather.telegram.simple.sender;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* // TODO: 18.09.2020 Добавить описание.
|
|
||||||
*
|
|
||||||
* @author upagge 18.09.2020
|
|
||||||
*/
|
|
||||||
@FunctionalInterface
|
|
||||||
public interface SendPreProcessing {
|
|
||||||
|
|
||||||
String pretreatment(String messageText);
|
|
||||||
|
|
||||||
}
|
|
@ -2,6 +2,7 @@ package dev.struchkov.godfather.telegram.simple.sender;
|
|||||||
|
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
||||||
import dev.struchkov.godfather.main.domain.SendType;
|
import dev.struchkov.godfather.main.domain.SendType;
|
||||||
|
import dev.struchkov.godfather.simple.context.service.PreSendProcessing;
|
||||||
import dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard;
|
import dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard;
|
||||||
import dev.struchkov.godfather.telegram.main.context.TelegramConnect;
|
import dev.struchkov.godfather.telegram.main.context.TelegramConnect;
|
||||||
import dev.struchkov.godfather.telegram.main.sender.util.KeyBoardConvert;
|
import dev.struchkov.godfather.telegram.main.sender.util.KeyBoardConvert;
|
||||||
@ -17,6 +18,8 @@ import org.telegram.telegrambots.meta.bots.AbsSender;
|
|||||||
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
|
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
|
||||||
import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException;
|
import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import static dev.struchkov.haiti.utils.Checker.checkNotNull;
|
import static dev.struchkov.haiti.utils.Checker.checkNotNull;
|
||||||
@ -30,7 +33,7 @@ public class TelegramSender implements TelegramSending {
|
|||||||
|
|
||||||
private final AbsSender absSender;
|
private final AbsSender absSender;
|
||||||
|
|
||||||
private SendPreProcessing sendPreProcessing;
|
private List<PreSendProcessing> preSendProcessors = new ArrayList<>();
|
||||||
private SenderRepository senderRepository;
|
private SenderRepository senderRepository;
|
||||||
|
|
||||||
public TelegramSender(TelegramConnect telegramConnect) {
|
public TelegramSender(TelegramConnect telegramConnect) {
|
||||||
@ -42,10 +45,6 @@ public class TelegramSender implements TelegramSending {
|
|||||||
this.senderRepository = senderRepository;
|
this.senderRepository = senderRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSendPreProcessing(SendPreProcessing sendPreProcessing) {
|
|
||||||
this.sendPreProcessing = sendPreProcessing;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSenderRepository(SenderRepository senderRepository) {
|
public void setSenderRepository(SenderRepository senderRepository) {
|
||||||
this.senderRepository = senderRepository;
|
this.senderRepository = senderRepository;
|
||||||
}
|
}
|
||||||
@ -55,6 +54,11 @@ public class TelegramSender implements TelegramSending {
|
|||||||
sendBoxAnswer(telegramId, boxAnswer, true);
|
sendBoxAnswer(telegramId, boxAnswer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPreSendProcess(@NotNull PreSendProcessing processing) {
|
||||||
|
preSendProcessors.add(processing);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendNotSave(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer) {
|
public void sendNotSave(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer) {
|
||||||
sendBoxAnswer(telegramId, boxAnswer, false);
|
sendBoxAnswer(telegramId, boxAnswer, false);
|
||||||
@ -62,6 +66,11 @@ public class TelegramSender implements TelegramSending {
|
|||||||
|
|
||||||
private void sendBoxAnswer(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
|
private void sendBoxAnswer(@NotNull String telegramId, @NotNull BoxAnswer boxAnswer, boolean saveMessageId) {
|
||||||
isNotNull(telegramId, boxAnswer);
|
isNotNull(telegramId, boxAnswer);
|
||||||
|
|
||||||
|
for (PreSendProcessing preSendProcessor : preSendProcessors) {
|
||||||
|
boxAnswer = preSendProcessor.pretreatment(boxAnswer);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (boxAnswer.isReplace() && checkNotNull(senderRepository)) {
|
if (boxAnswer.isReplace() && checkNotNull(senderRepository)) {
|
||||||
final Optional<Integer> optLastId = senderRepository.getLastSendMessage(telegramId);
|
final Optional<Integer> optLastId = senderRepository.getLastSendMessage(telegramId);
|
||||||
@ -97,11 +106,7 @@ public class TelegramSender implements TelegramSending {
|
|||||||
final SendMessage sendMessage = new SendMessage();
|
final SendMessage sendMessage = new SendMessage();
|
||||||
sendMessage.enableMarkdown(true);
|
sendMessage.enableMarkdown(true);
|
||||||
sendMessage.setChatId(telegramId);
|
sendMessage.setChatId(telegramId);
|
||||||
sendMessage.setText(
|
sendMessage.setText(boxAnswer.getMessage());
|
||||||
sendPreProcessing != null
|
|
||||||
? sendPreProcessing.pretreatment(boxAnswer.getMessage())
|
|
||||||
: boxAnswer.getMessage()
|
|
||||||
);
|
|
||||||
sendMessage.setReplyMarkup(KeyBoardConvert.convertKeyBoard(boxAnswer.getKeyBoard()));
|
sendMessage.setReplyMarkup(KeyBoardConvert.convertKeyBoard(boxAnswer.getKeyBoard()));
|
||||||
try {
|
try {
|
||||||
final Message execute = absSender.execute(sendMessage);
|
final Message execute = absSender.execute(sendMessage);
|
||||||
|
Loading…
Reference in New Issue
Block a user