52 lines
1.5 KiB
Java
52 lines
1.5 KiB
Java
package com.myoa.engineering.crawl.ppomppu.receiver.dispatch;
|
|
|
|
import java.util.List;
|
|
|
|
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
|
|
import org.telegram.telegrambots.meta.api.objects.Message;
|
|
import org.telegram.telegrambots.meta.api.objects.Update;
|
|
|
|
import com.myoa.engineering.crawl.ppomppu.receiver.handler.message.MessageHandler;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@Slf4j
|
|
public class MessageDispatcher extends TelegramLongPollingBot {
|
|
|
|
private final List<MessageHandler> messageHandlers;
|
|
private final String botName;
|
|
private final String botToken;
|
|
|
|
public MessageDispatcher(List<MessageHandler> messageHandlers, String botName, String botToken) {
|
|
this.messageHandlers = messageHandlers;
|
|
this.botName = botName;
|
|
this.botToken = botToken;
|
|
}
|
|
|
|
@Override
|
|
public String getBotToken() {
|
|
return botToken;
|
|
}
|
|
|
|
@Override
|
|
public void onUpdateReceived(Update update) {
|
|
|
|
Message message = update.getMessage();
|
|
MessageHandler handler = getMessageHandler(message);
|
|
log.info(message.getText());
|
|
handler.handle(message);
|
|
}
|
|
|
|
private MessageHandler getMessageHandler(Message message) {
|
|
return messageHandlers.stream()
|
|
.filter(e -> e.isApplicable(message))
|
|
.findFirst()
|
|
.orElseThrow(() -> new IllegalArgumentException("Can not found applicable handler"));
|
|
}
|
|
|
|
@Override
|
|
public String getBotUsername() {
|
|
return botName;
|
|
}
|
|
}
|