diff options
author | Dmitrii Morozov <snoopdesigns@gmail.com> | 2024-10-27 19:09:54 +0100 |
---|---|---|
committer | Dmitrii Morozov <snoopdesigns@gmail.com> | 2024-10-27 19:09:54 +0100 |
commit | b259eaf62123a2b391668f97136683d2df42ddd9 (patch) | |
tree | 2a118e9ce3686904e063262bb2095f7c3fd0bfc7 /fortnite_client/__init__.py | |
parent | e88c131b89e47e40678e170cb67f4386091c617e (diff) |
Outgoing friend request handling
Diffstat (limited to 'fortnite_client/__init__.py')
-rw-r--r-- | fortnite_client/__init__.py | 32 |
1 files changed, 21 insertions, 11 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 |