diff options
Diffstat (limited to 'fortnite_client')
-rw-r--r-- | fortnite_client/__init__.py | 32 | ||||
-rw-r--r-- | fortnite_client/fortnite_events.py | 4 |
2 files changed, 23 insertions, 13 deletions
diff --git a/fortnite_client/__init__.py b/fortnite_client/__init__.py index 91f334a..393b250 100644 --- a/fortnite_client/__init__.py +++ b/fortnite_client/__init__.py @@ -21,7 +21,7 @@ class NewFriendObserver: async def on_event(self, friend: User) -> None: pass - async def on_failure(self, display_name) -> None: + async def on_unavailable_public_stats(self, display_name) -> None: pass class FortniteClient(fortnitepy.Client): @@ -121,16 +121,26 @@ class IncomingFriendRequestEvent: print('Accepting friend request from {}'.format(incoming_request.display_name)) await incoming_request.accept() accepted_friend = incoming_request.client.get_friend(request._id) - - # Try fetch stats - try: - await IncomingFriendRequestEvent.__try_get_stats(accepted_friend) - await new_friend_observer.on_event(User.from_fortnite_friend(accepted_friend)) - except: - print("An exception occurred while fetching user stats") - print(traceback.format_exc()) - await accepted_friend.remove() - await new_friend_observer.on_failure(accepted_friend.display_name) + + if isinstance(request, fortnitepy.friend.OutgoingPendingFriend): + outgoing_request = typing.cast(fortnitepy.friend.OutgoingPendingFriend, request) + + print('Accepted friend request to {}'.format(outgoing_request.display_name)) + accepted_friend = outgoing_request.client.get_friend(request._id) + + await IncomingFriendRequestEvent.__handle_new_friend(accepted_friend, new_friend_observer) + + async def __handle_new_friend(accepted_friend: fortnitepy.friend.Friend, new_friend_observer: NewFriendObserver): + # Try fetch stats + try: + await IncomingFriendRequestEvent.__try_get_stats(accepted_friend) + except: + print("An exception occurred while fetching user stats") + print(traceback.format_exc()) + await new_friend_observer.on_unavailable_public_stats(accepted_friend.display_name) + + # Register new fried, fetch stats + await new_friend_observer.on_event(User.from_fortnite_friend(accepted_friend)) async def __try_get_stats(friend: fortnitepy.Friend): await friend.fetch_br_stats()
\ No newline at end of file diff --git a/fortnite_client/fortnite_events.py b/fortnite_client/fortnite_events.py index 2447d82..918b1e1 100644 --- a/fortnite_client/fortnite_events.py +++ b/fortnite_client/fortnite_events.py @@ -48,5 +48,5 @@ class NewFriendObserverImpl(NewFriendObserver): await self.__stats_repository.put_stats(friend, datetime.datetime.now()) await self.__telegram_bot.send_message_to_all(format_new_friend(friend.display_name)) - async def on_failure(self, display_name) -> None: - await self.__telegram_bot.send_message_to_all(format_failed_new_friend(display_name))
\ No newline at end of file + async def on_unavailable_public_stats(self, display_name) -> None: + await self.__telegram_bot.send_message_to_all(format_friend_disabled_public_stats(display_name))
\ No newline at end of file |