diff options
author | Dmitrii Morozov <snoopdesigns@gmail.com> | 2024-05-07 16:16:57 +0200 |
---|---|---|
committer | Dmitrii Morozov <snoopdesigns@gmail.com> | 2024-05-07 16:16:57 +0200 |
commit | 104c0b32a1e30a56900bb6a17ab9a009c54b76bb (patch) | |
tree | 0639c4f97b44c7758dda1c83afaca82b765de550 /FortniteEvents.py | |
parent | aaef526c6c37ed1b3d4016092a2937433cd4d7d7 (diff) |
Refactoring
Diffstat (limited to 'FortniteEvents.py')
-rw-r--r-- | FortniteEvents.py | 55 |
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 |