Try to set status properly.
authorCMDR furrycat <elite@furrycat.net>
Thu, 26 Nov 2020 16:10:16 +0000 (17:10 +0100)
committerCMDR furrycat <elite@furrycat.net>
Thu, 26 Nov 2020 16:11:12 +0000 (17:11 +0100)
bot.py

diff --git a/bot.py b/bot.py
index 33a30e3..85a8c4d 100644 (file)
--- a/bot.py
+++ b/bot.py
@@ -496,13 +496,17 @@ async def set_idle(idle, activity = None):
   )
   if idle:
     for voice in list(client.voice_clients):
-      await voice.disconnect()
+      if voice.is_connected():
+        try:
+          await voice.disconnect()
+        except:
+          pass
 
 async def set_activity(activity = None):
   await client.change_presence(activity = activity)
 
-async def wake_up(force = False, activity = None):
-  set('last_spoke', time.time())
+async def wake_up(force = False, activity = None, last_spoke = None):
+  set('last_spoke', last_spoke or time.time())
   if force or status() != discord.Status.online:
     log.info('Waking up...')
     await set_avatar(db.ONLINE_AVATAR)
@@ -511,14 +515,14 @@ async def wake_up(force = False, activity = None):
   elif activity:
     await set_idle(False, activity = activity)
 
-async def zzz():
+async def zzz(force = False):
 # state = db.get_state(client)
 # if state is None:
 #   change = status() != discord.Status.idle
 # else:
 #   change = state['avatar'] != db.IDLE_AVATAR or not state['idle']
 # if change:
-  if status() != discord.Status.idle:
+  if force or status() != discord.Status.idle:
     log.info('Sleeping...')
     await set_avatar(db.IDLE_AVATAR)
     await set_idle(True)