summaryrefslogtreecommitdiff
path: root/FortniteEvents.py
diff options
context:
space:
mode:
Diffstat (limited to 'FortniteEvents.py')
-rw-r--r--FortniteEvents.py55
1 files changed, 29 insertions, 26 deletions
diff --git a/FortniteEvents.py b/FortniteEvents.py
index 995d646..77452cc 100644
--- a/FortniteEvents.py
+++ b/FortniteEvents.py
@@ -1,32 +1,35 @@
import fortnitepy
import typing
+import time
+from FortniteClient import *
+from TelegramBot import *
+from persistence import PresenceRepository
+from Formatter import *
-class IncomingFriendRequest:
- async def on_event(request: typing.Union[fortnitepy.friend.IncomingPendingFriend, fortnitepy.friend.OutgoingPendingFriend]):
- if isinstance(request, fortnitepy.friend.IncomingPendingFriend):
- incoming_request = typing.cast(fortnitepy.friend.IncomingPendingFriend, request)
- print('Accepting friend request from {}'.format(incoming_request.display_name))
- #await incoming_request.accept()
+class ClientInitObserverImpl(ClientInitObserver):
+ async def on_event(self, fortniteClient: FortniteClient) -> None:
+ print('----------------')
+ print('FortniteClient ready as:')
+ print(fortniteClient.user.display_name)
+ print(fortniteClient.user.id)
+ print('----------------')
-class PresenceObserver:
- async def update(self, display_name: str, playing: bool, party_size: int) -> None:
- pass
+class FriendPresenceObserverImpl(FriendPresenceObserver):
+
+ __telegramBot: TelegramBot
+ __presenceRepository: PresenceRepository
-class ClientInit:
- async def on_event(self) -> None:
- pass
+ def __init__(self, telegramBot: TelegramBot, presenceRepository: PresenceRepository):
+ self.__telegramBot = telegramBot
+ self.__presenceRepository = presenceRepository
+
+ async def update(self, display_name: str, playing: bool, party_size: int) -> None:
+ if playing:
+ last_presence = self.__presenceRepository.getLastUserPresence(display_name)
+ diff = time.time() - last_presence
+ if diff > 60 * 60: # 60 minutes
+ await self.__notifyFriendPlaying(display_name, party_size)
+ self.__presenceRepository.setLastUserPresence(display_name, time.time())
-class FriendPresence:
- async def on_event(before, after: fortnitepy.Presence, observer: PresenceObserver):
- if before is not None and after is not None:
- if before.playing != after.playing:
- print('FriendPresence changed for user {}, before {}, after {}'.format(after.friend.display_name, before.playing, after.playing))
- party_size: int = 1
- if after.has_properties:
- party: fortnitepy.PresenceParty = after.party
- if party is not None and party.playercount is not None:
- party_size = int(party.playercount)
- await observer.update(
- after.friend.display_name,
- after.playing,
- party_size)
+ async def __notifyFriendPlaying(self, display_name: str, party_size: int):
+ await self.__telegramBot.send_message_to_all(formatFriendOnline(display_name, party_size)) \ No newline at end of file