from telebot import formatting import time import asyncio from pythonFortniteStatus.FortniteStatus import * # Polling interval in seconds __polling_interval__ = 5 * 60 # 5 minutes class FortniteStatusObserver: async def update(self, fortnite_status) -> None: pass class FortniteStatusNotifier: __fortniteStatusObserver: FortniteStatusObserver __fortniteStatus: FortniteStatus __lastFortniteStatus: any def __init__(self, fortniteStatusObserver: FortniteStatusObserver): self.__fortniteStatusObserver = fortniteStatusObserver self.__fortniteStatus = FortniteStatus() async def run(self): # Initialize status self.__lastFortniteStatus = self.__fortniteStatus.getStatus() while True: await self.__readStatus() await asyncio.sleep(__polling_interval__) async def __readStatus(self): serviceStatusTmp = self.__fortniteStatus.getStatus() if serviceStatusTmp != self.__lastFortniteStatus: await self.__notify(serviceStatusTmp) self.__lastFortniteStatus = serviceStatusTmp async def __notify(self, fortniteStatus): await self.__fortniteStatusObserver.update(fortniteStatus)