package won.bot.framework.eventbot.action.impl.telegram;
import org.telegram.telegrambots.api.objects.Message;
import org.telegram.telegrambots.api.objects.Update;
import org.telegram.telegrambots.bots.AbsSender;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.bots.commands.BotCommand;
import org.telegram.telegrambots.bots.commands.CommandRegistry;
import org.telegram.telegrambots.bots.commands.ICommandRegistry;
import won.bot.framework.eventbot.action.impl.telegram.Commands.*;
import won.bot.framework.eventbot.action.impl.telegram.util.TelegramMessageGenerator;
import won.bot.framework.eventbot.bus.EventBus;
import won.bot.framework.eventbot.event.impl.telegram.TelegramMessageReceivedEvent;
import java.util.Collection;
import java.util.Map;
import java.util.function.BiConsumer;
public class WonTelegramBotHandler extends TelegramLongPollingBot implements ICommandRegistry {
private String token;
private String botName;
private EventBus bus;
private CommandRegistry commandRegistry;
private TelegramMessageGenerator telegramMessageGenerator;
public WonTelegramBotHandler(EventBus bus, TelegramMessageGenerator telegramMessageGenerator, String botName, String token) {
this.bus = bus;
this.token = token;
this.botName = botName;
this.telegramMessageGenerator = telegramMessageGenerator;
this.commandRegistry = new CommandRegistry(true, botName);
BotCommand offerBotCommand = new OfferBotCommand("offer", "create a offer need", bus);
BotCommand demandBotCommand = new DemandBotCommand("demand", "create a demand need", bus);
BotCommand critiqueBotCommand = new CritiqueBotCommand("critique", "create a critique need", bus);
BotCommand togetherBotCommand = new TogetherBotCommand("together", "create a together need", bus);
BotCommand helpBotCommand = new HelpBotCommand("help", "list help", bus);
commandRegistry.registerAll(helpBotCommand, offerBotCommand, demandBotCommand, critiqueBotCommand, togetherBotCommand);
}
@Override
public void onUpdateReceived(Update update) {
bus.publish(new TelegramMessageReceivedEvent(update));
}
@Override
public String getBotToken() {
return token;
}
@Override
public String getBotUsername() {
return botName;
}
public CommandRegistry getCommandRegistry() {
return commandRegistry;
}
public TelegramMessageGenerator getTelegramMessageGenerator() {
return telegramMessageGenerator;
}
public void setTelegramMessageGenerator(TelegramMessageGenerator telegramMessageGenerator) {
this.telegramMessageGenerator = telegramMessageGenerator;
}
@Override
public void registerDefaultAction(BiConsumer<AbsSender, Message> biConsumer) {
BotCommand helpBotCommand = new HelpBotCommand("help", "list help", bus);
}
@Override
public boolean register(BotCommand botCommand) {
return commandRegistry.register(botCommand);
}
@Override
public Map<BotCommand, Boolean> registerAll(BotCommand... botCommands) {
return commandRegistry.registerAll(botCommands);
}
@Override
public boolean deregister(BotCommand botCommand) {
return commandRegistry.deregister(botCommand);
}
@Override
public Map<BotCommand, Boolean> deregisterAll(BotCommand... botCommands) {
return commandRegistry.deregisterAll(botCommands);
}
@Override
public Collection<BotCommand> getRegisteredCommands() {
return commandRegistry.getRegisteredCommands();
}
@Override
public BotCommand getRegisteredCommand(String s) {
return commandRegistry.getRegisteredCommand(s);
}
}