diff options
author | Dmitrii Morozov <snoopdesigns@gmail.com> | 2024-04-10 00:33:05 +0200 |
---|---|---|
committer | Dmitrii Morozov <snoopdesigns@gmail.com> | 2024-04-10 00:33:05 +0200 |
commit | 70c2e0df67e76f755db292a5a817c31770267a70 (patch) | |
tree | fd229743f3a51ba366ab678a6f3c94516f4757ea /tgbot.py | |
parent | 750d65f4c7102d824cd842d64e4b9c2ca119f65f (diff) |
tmp
Diffstat (limited to 'tgbot.py')
-rwxr-xr-x | tgbot.py | 82 |
1 files changed, 35 insertions, 47 deletions
@@ -24,21 +24,15 @@ fortniteClient = FortniteClient() @bot.message_handler(commands = ['start']) async def startCommand(message): userRepository.putUser(message.chat.id) - await bot.reply_to(message, "This chat successfully registered to receive Fortnite updates!") + await reply(message, 'This chat successfully registered to receive Fortnite updates') @bot.message_handler(commands = ['status']) async def getStatus(message): - await bot.reply_to( - message, - formatFortniteStatus(fortniteStatus.getStatus()), - parse_mode='MarkdownV2') + await reply(message, formatFortniteStatus(fortniteStatus.getStatus())) @bot.message_handler(commands = ['friends']) async def getFriends(message): - await bot.reply_to( - message, - formatFriends(fortniteClient.get_friends()), - parse_mode='MarkdownV2') + await reply(message, formatFriends(fortniteClient.get_friends())) @bot.message_handler(commands = ['find']) async def findUser(message): @@ -49,15 +43,9 @@ async def findUser(message): users: typing.List[fortnitepy.User] = await fortniteClient.fetch_users_by_display_name(search_user_display_name) for user in users: stats = await user.fetch_br_stats() - await bot.reply_to( - message, - formatUser(user, stats), - parse_mode='MarkdownV2') + await reply(message, formatUser(user, stats)) else: - await bot.reply_to( - message, - 'Usage: /find username', - parse_mode='MarkdownV2') + await reply(message, 'Usage: /find username') @bot.message_handler(commands = ['add']) async def addUser(message): @@ -66,35 +54,24 @@ async def addUser(message): user_id = arg[1] print('Adding user with ID as friend {}'.format(user_id)) await fortniteClient.add_friend(user_id) - await bot.reply_to( - message, - 'Send friend request successfully', - parse_mode='MarkdownV2') + await reply(message, 'Send friend request successfully') else: - await bot.reply_to( - message, - 'Usage: /add username', - parse_mode='MarkdownV2') + await reply(message, 'Usage: /add username') class FortniteStatusObserver(Observer): - def update(self, fortniteStatus) -> None: - for user in userRepository.getAllUsers(): - bot.send_message( - user[0], - formatFortniteStatus(fortniteStatus), - parse_mode='MarkdownV2' - ) + async def update(self, fortniteStatus) -> None: + await send_message_to_all(formatFortniteStatus(fortniteStatus)) class FortnitePresenceObserver(PresenceObserver): # Map name -> last seen not playing timestamp seconds statuses = {} - def update(self, display_name: str, playing: bool) -> None: + async def update(self, display_name: str, playing: bool) -> None: print('FortnitePresenceObserver: {} playing = {}'.format(display_name, playing)) if playing: if not display_name in self.statuses: - self.__notifyFriendPlaying(display_name) + await self.__notifyFriendPlaying(display_name) self.statuses[display_name] = time.time() else: diff = time.time() - self.statuses[display_name] @@ -103,18 +80,24 @@ class FortnitePresenceObserver(PresenceObserver): else: self.statuses[display_name] = time.time() - def __notifyFriendPlaying(self, display_name: str): - for user in userRepository.getAllUsers(): - bot.send_message( - user[0], - '{} is online'.format(display_name), - parse_mode='MarkdownV2' - ) + async def __notifyFriendPlaying(self, display_name: str): + await send_message_to_all('{} is online'.format(display_name)) -async def run_bot(): - await bot.polling() +async def send_message_to_all(message_text: str): + for user in userRepository.getAllUsers(): + await bot.send_message( + user[0], + message_text, + parse_mode='MarkdownV2' + ) -async def run_client(): +async def reply(message, message_text): + await bot.reply_to( + message, + message_text, + parse_mode='MarkdownV2') + +async def run_fortnite_client(): await fortniteClient.run() if __name__ == '__main__': @@ -122,6 +105,11 @@ if __name__ == '__main__': fortniteClient.attach(FortnitePresenceObserver()) loop = asyncio.get_event_loop() - loop.create_task(bot.polling()) - loop.create_task(fortniteClient.run()) - loop.run_forever()
\ No newline at end of file + + tasks = [ + loop.create_task(bot.polling()), + loop.create_task(fortniteStatusWrapper.run()), + loop.create_task(run_fortnite_client()) + ] + loop.run_until_complete(asyncio.wait(tasks)) + loop.close()
\ No newline at end of file |