diff options
author | Dmitrii Morozov <snoopdesigns@gmail.com> | 2024-05-07 04:08:27 +0200 |
---|---|---|
committer | Dmitrii Morozov <snoopdesigns@gmail.com> | 2024-05-07 04:08:27 +0200 |
commit | aaef526c6c37ed1b3d4016092a2937433cd4d7d7 (patch) | |
tree | 63e97c7ae85d9b86c45f82046b08a016951356cc /Commands.py | |
parent | 4603438881db0d4564f201dcb6a440e692b297a3 (diff) |
Minor refactoring, extract commands to separate classes
Diffstat (limited to 'Commands.py')
-rw-r--r-- | Commands.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/Commands.py b/Commands.py new file mode 100644 index 0000000..926b25b --- /dev/null +++ b/Commands.py @@ -0,0 +1,96 @@ +import telebot +from TelegramBot import * +from Formatter import * +from persistence import * +from FortniteClient import FortniteClient +from pythonFortniteStatus.FortniteStatus import * + +class StartCommand(CommandHandler): + + __telegramBot: TelegramBot + __userRepository: UserRepository + + def __init__(self, telegramBot: TelegramBot, userRepository: UserRepository): + self.__telegramBot = telegramBot + self.__userRepository = userRepository + + async def handle(self, message: telebot.types.Message): + if message.chat.type == 'private': + alias = message.chat.username + else: + alias = message.chat.title + self.__userRepository.putUser(message.chat.id, alias) + await self.__telegramBot.reply(message, 'This chat successfully registered to receive Fortnite updates') + +class GetStatusCommand(CommandHandler): + + __telegramBot: TelegramBot + __fortniteStatus: FortniteStatus + + def __init__(self, telegramBot: TelegramBot): + self.__telegramBot = telegramBot + self.__fortniteStatus = FortniteStatus() + + async def handle(self, message: telebot.types.Message): + await self.__telegramBot.reply(message, formatFortniteStatus(self.__fortniteStatus.getStatus())) + +class GetFriendsCommand(CommandHandler): + + __telegramBot: TelegramBot + __fortniteClient: FortniteClient + + def __init__(self, telegramBot: TelegramBot, fortniteClient: FortniteClient): + self.__telegramBot = telegramBot + self.__fortniteClient = fortniteClient + + async def handle(self, message: telebot.types.Message): + friends = await self.__fortniteClient.get_friends() + await self.__telegramBot.reply(message, formatUsers(friends)) + + +class GetStatsCommand(CommandHandler): + + __telegramBot: TelegramBot + __fortniteClient: FortniteClient + + def __init__(self, telegramBot: TelegramBot, fortniteClient: FortniteClient): + self.__telegramBot = telegramBot + self.__fortniteClient = fortniteClient + + async def handle(self, message: telebot.types.Message): + friends = await self.__fortniteClient.get_friends() + stats = [await friend.fetch_stats() for friend in friends] + await self.__telegramBot.reply(message, formatUserStatsList(stats)) + +class GetTodayStatsCommand(CommandHandler): + + __telegramBot: TelegramBot + __fortniteClient: FortniteClient + __statsRepository: StatsRepository + + def __init__(self, telegramBot: TelegramBot, fortniteClient: FortniteClient, statsRepository: StatsRepository): + self.__telegramBot = telegramBot + self.__fortniteClient = fortniteClient + self.__statsRepository = statsRepository + + async def handle(self, message: telebot.types.Message): + persisted_stats = self.__statsRepository.getStats() + friends = await self.__fortniteClient.get_friends() + current_stats = [await friend.fetch_stats() for friend in friends] + await self.__telegramBot.reply(message, formatUserStatsDifference(persisted_stats, current_stats)) + +class RecordStatsCommand(CommandHandler): + + __telegramBot: TelegramBot + __fortniteClient: FortniteClient + __statsRepository: StatsRepository + + def __init__(self, telegramBot: TelegramBot, fortniteClient: FortniteClient, statsRepository: StatsRepository): + self.__telegramBot = telegramBot + self.__fortniteClient = fortniteClient + self.__statsRepository = statsRepository + + async def handle(self, message: telebot.types.Message): + friends = await self.__fortniteClient.get_friends() + for friend in friends: + await self.__statsRepository.putStats(friend)
\ No newline at end of file |