import asyncio import time import disnake from state import client, idle_tracker, players async def cleanup(): while True: await asyncio.sleep(3600) targets = [] for guild_id, player in players.items(): if len(player.queue) == 0: targets.append(guild_id) for target in targets: del players[target] if ( not idle_tracker["is_idle"] and time.time() - idle_tracker["last_used"] >= 3600 ): try: await client.change_presence(status=disnake.Status.idle) idle_tracker["is_idle"] = True except Exception as e: print(f"failed to change status to idle: {e}")