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 messageHandlers; private final String botToken; private final String botName; public MessageDispatcher(List messageHandlers, String botToken, String botName) { this.messageHandlers = messageHandlers; this.botToken = botToken; this.botName = botName; } @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; } }