summaryrefslogtreecommitdiff
path: root/Commands.py
diff options
context:
space:
mode:
Diffstat (limited to 'Commands.py')
-rw-r--r--Commands.py96
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