From 827c3ae451652d7691cfc9a44d5f1486133fecc5 Mon Sep 17 00:00:00 2001 From: Dmitrii Morozov Date: Fri, 21 Jun 2024 17:16:24 +0200 Subject: Do not try to handle messages until fortnite client is ready --- fortnite_client/__init__.py | 5 +++++ telegram_bot/commands.py | 28 ++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/fortnite_client/__init__.py b/fortnite_client/__init__.py index 28cbf80..91f334a 100644 --- a/fortnite_client/__init__.py +++ b/fortnite_client/__init__.py @@ -30,6 +30,7 @@ class FortniteClient(fortnitepy.Client): __friend_presence_observer: FriendPresenceObserver __client_init_observer: ClientInitObserver __new_friend_observer: NewFriendObserver + __is_initialized: bool = False def __init__(self, client_init_observer: ClientInitObserver, friend_presence_observer: FriendPresenceObserver, new_friend_observer: NewFriendObserver): self.__device_auth = DeviceAuth() @@ -47,6 +48,9 @@ class FortniteClient(fortnitepy.Client): async def find_user(self, display_name: str): user: fortnitepy.User = await self.fetch_user_by_display_name(display_name) return User.from_fortnite_friend(user) + + def is_initialized(self): + return self.__is_initialized def __auth_authorization_code(self): code = input("Enter authorization code (https://www.epicgames.com/id/api/redirect?clientId=3446cd72694c4a4485d81b77adbb2141&responseType=code):") @@ -84,6 +88,7 @@ class FortniteClient(fortnitepy.Client): self.__device_auth.store_device_auth_details(email, details) async def event_ready(self): + self.__is_initialized = True await self.__generate_auth_details() await self.__client_init_observer.on_event(self) diff --git a/telegram_bot/commands.py b/telegram_bot/commands.py index cba5d5f..1e3295b 100644 --- a/telegram_bot/commands.py +++ b/telegram_bot/commands.py @@ -44,8 +44,9 @@ class GetFriendsCommand(CommandHandler): 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)) + if self.__fortnite_client.is_initialized(): + friends = await self.__fortnite_client.get_friends() + await self.__telegram_bot.reply(message, format_users(friends)) class GetStatsCommand(CommandHandler): @@ -58,9 +59,10 @@ class GetStatsCommand(CommandHandler): 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)) + if self.__fortnite_client.is_initialized(): + 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): @@ -74,10 +76,11 @@ class GetTodayStatsCommand(CommandHandler): 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)) + if self.__fortnite_client.is_initialized(): + 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): @@ -89,6 +92,7 @@ class RecordStatsCommand(CommandHandler): 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 + if self.__fortnite_client.is_initialized(): + 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