From ee3e87a6ec19878d56e8f386b20c58e4d9b211b3 Mon Sep 17 00:00:00 2001 From: Dmitrii Morozov Date: Tue, 7 May 2024 17:15:25 +0200 Subject: Modules --- telegram_bot/commands.py | 94 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 telegram_bot/commands.py (limited to 'telegram_bot/commands.py') diff --git a/telegram_bot/commands.py b/telegram_bot/commands.py new file mode 100644 index 0000000..cafde03 --- /dev/null +++ b/telegram_bot/commands.py @@ -0,0 +1,94 @@ +import telebot +from telegram_bot import * +from formatter import * +from persistence import * +from fortnite_client import * +from fortnite_status import * + +class StartCommand(CommandHandler): + + __telegram_bot: TelegramBot + __user_repository: UserRepository + + def __init__(self, telegram_bot: TelegramBot, user_repository: UserRepository): + self.__telegram_bot = telegram_bot + self.__user_repository = user_repository + + async def handle(self, message: telebot.types.Message): + if message.chat.type == 'private': + alias = message.chat.username + else: + alias = message.chat.title + self.__user_repository.put_user(message.chat.id, alias) + await self.__telegram_bot.reply(message, 'This chat successfully registered to receive Fortnite updates') + +class GetStatusCommand(CommandHandler): + + __telegram_bot: TelegramBot + __fortnite_status: FortniteStatus + + def __init__(self, telegram_bot: TelegramBot): + self.__telegram_bot = telegram_bot + self.__fortnite_status = FortniteStatus() + + async def handle(self, message: telebot.types.Message): + await self.__telegram_bot.reply(message, format_fortnite_status(self.__fortnite_status.getStatus())) + +class GetFriendsCommand(CommandHandler): + + __telegram_bot: TelegramBot + __fortnite_client: FortniteClient + + def __init__(self, telegram_bot: TelegramBot, fortnite_client: FortniteClient): + self.__telegram_bot = telegram_bot + self.__fortnite_client = fortnite_client + + async def handle(self, message: telebot.types.Message): + friends = await self.__fortnite_client.get_friends() + await self.__telegram_bot.reply(message, format_users(friends)) + + +class GetStatsCommand(CommandHandler): + + __telegram_bot: TelegramBot + __fortnite_client: FortniteClient + + def __init__(self, telegram_bot: TelegramBot, fortnite_client: FortniteClient): + self.__telegram_bot = telegram_bot + self.__fortnite_client = fortnite_client + + async def handle(self, message: telebot.types.Message): + friends = await self.__fortnite_client.get_friends() + stats = [await friend.fetch_stats() for friend in friends] + await self.__telegram_bot.reply(message, format_user_stats_list(stats)) + +class GetTodayStatsCommand(CommandHandler): + + __telegram_bot: TelegramBot + __fortnite_client: FortniteClient + __stats_repository: StatsRepository + + def __init__(self, telegram_bot: TelegramBot, fortnite_client: FortniteClient, stats_repository: StatsRepository): + self.__telegram_bot = telegram_bot + self.__fortnite_client = fortnite_client + self.__stats_repository = stats_repository + + async def handle(self, message: telebot.types.Message): + persisted_stats = self.__stats_repository.get_stats() + friends = await self.__fortnite_client.get_friends() + current_stats = [await friend.fetch_stats() for friend in friends] + await self.__telegram_bot.reply(message, format_user_stats_difference(persisted_stats, current_stats)) + +class RecordStatsCommand(CommandHandler): + + __fortnite_client: FortniteClient + __stats_repository: StatsRepository + + def __init__(self, fortnite_client: FortniteClient, stats_repository: StatsRepository): + self.__fortnite_client = fortnite_client + self.__stats_repository = stats_repository + + async def handle(self, message: telebot.types.Message): + friends = await self.__fortnite_client.get_friends() + for friend in friends: + await self.__stats_repository.put_stats(friend) \ No newline at end of file -- cgit v1.2.3