summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--formatter/__init__.py6
-rw-r--r--fortnite_client/__init__.py32
-rw-r--r--fortnite_client/fortnite_events.py4
3 files changed, 26 insertions, 16 deletions
diff --git a/formatter/__init__.py b/formatter/__init__.py
index 2abc424..05d4112 100644
--- a/formatter/__init__.py
+++ b/formatter/__init__.py
@@ -144,10 +144,10 @@ def format_new_friend(display_name: str):
separator=''
)
-def format_failed_new_friend(display_name: str):
+def format_friend_disabled_public_stats(display_name: str):
return formatting.format_text(
- 'Error adding new friend ',
+ 'New friend ',
formatting.mbold('{}'.format(display_name)),
- ', please enable public statistics in Fortnite profile',
+ 'has disabled public statistics in Fortnite profile, no statistics will be visible',
separator=''
) \ No newline at end of file
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