summaryrefslogtreecommitdiff
path: root/telegram_bot/commands.py
diff options
context:
space:
mode:
Diffstat (limited to 'telegram_bot/commands.py')
-rw-r--r--telegram_bot/commands.py94
1 files changed, 94 insertions, 0 deletions
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