summaryrefslogtreecommitdiff
path: root/tgbot.py
diff options
context:
space:
mode:
Diffstat (limited to 'tgbot.py')
-rwxr-xr-xtgbot.py26
1 files changed, 14 insertions, 12 deletions
diff --git a/tgbot.py b/tgbot.py
index 87d93e1..63ff179 100755
--- a/tgbot.py
+++ b/tgbot.py
@@ -5,7 +5,7 @@ from FortniteStatusNotifier import *
from Formatter import *
from FortniteClient import *
from FortniteEvents import *
-from persistence import UserRepository, StatsRepository
+from persistence import UserRepository, StatsRepository, PresenceRepository
# Check token in environment variables
if "TELEBOT_BOT_TOKEN" not in os.environ:
@@ -26,20 +26,13 @@ class FortniteStatusObserver(Observer):
await send_message_to_all(formatFortniteStatus(fortniteStatus))
class FortnitePresenceObserver(PresenceObserver):
- # Map name -> last seen not playing timestamp seconds
- statuses = {}
-
async def update(self, display_name: str, playing: bool, party_size: int) -> None:
if playing:
- if not display_name in self.statuses:
+ last_presence = prensenceRepository.getLastUserPresence(display_name)
+ diff = time.time() - last_presence
+ if diff > 60 * 60: # 60 minutes
await self.__notifyFriendPlaying(display_name, party_size)
- self.statuses[display_name] = time.time()
- else:
- diff = time.time() - self.statuses[display_name]
- if diff > 60 * 60: # 60 minutes
- await self.__notifyFriendPlaying(display_name, party_size)
- else:
- self.statuses[display_name] = time.time()
+ prensenceRepository.setLastUserPresence(display_name, time.time())
async def __notifyFriendPlaying(self, display_name: str, party_size: int):
await send_message_to_all(formatFriendOnline(display_name, party_size))
@@ -55,6 +48,7 @@ bot = telebot.async_telebot.AsyncTeleBot(
exception_handler=ExceptionHandler())
userRepository = UserRepository()
statsRepository = StatsRepository()
+prensenceRepository = PresenceRepository()
fortniteStatusWrapper = FortniteStatusNotifier(FortniteStatusObserver())
fortniteClient = FortniteClient(FortnitePresenceObserver(), ClientInitObserver())
@@ -93,6 +87,14 @@ async def getTodayStats(message):
async def recordStats(message):
await record_user_stats()
+@bot.message_handler(commands = ['online'])
+async def mockOnline(message):
+ await FortnitePresenceObserver().update('snoopdesigns', True, 1)
+
+@bot.message_handler(commands = ['offline'])
+async def mockOffline(message):
+ await FortnitePresenceObserver().update('snoopdesigns', False, 1)
+
@bot.message_handler(commands = ['find'])
async def findUser(message):
arg = message.text.split()