summaryrefslogtreecommitdiff
path: root/fortnite_client/__init__.py
diff options
context:
space:
mode:
authorDmitrii Morozov <snoopdesigns@gmail.com>2024-10-27 19:09:54 +0100
committerDmitrii Morozov <snoopdesigns@gmail.com>2024-10-27 19:09:54 +0100
commitb259eaf62123a2b391668f97136683d2df42ddd9 (patch)
tree2a118e9ce3686904e063262bb2095f7c3fd0bfc7 /fortnite_client/__init__.py
parente88c131b89e47e40678e170cb67f4386091c617e (diff)
Outgoing friend request handling
Diffstat (limited to 'fortnite_client/__init__.py')
-rw-r--r--fortnite_client/__init__.py32
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