From 104c0b32a1e30a56900bb6a17ab9a009c54b76bb Mon Sep 17 00:00:00 2001 From: Dmitrii Morozov Date: Tue, 7 May 2024 16:16:57 +0200 Subject: Refactoring --- FortniteEvents.py | 55 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 26 deletions(-) (limited to 'FortniteEvents.py') 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 -- cgit v1.2.3