import voicelink import function as func from discord.ext import commands, tasks from datetime import datetime class Task(commands.Cog): def __init__(self, bot: commands.Bot): self.bot = bot self.player_check.start() self.cache_cleaner.start() def cog_unload(self): self.player_check.cancel() self.cache_cleaner.cancel() @tasks.loop(minutes=5.0) async def player_check(self): if not self.bot.voice_clients: return player: voicelink.Player for player in self.bot.voice_clients: try: if not player.channel or not player.context or not player.guild: await player.teardown() continue except: await player.teardown() continue members = player.channel.members if (not player.is_playing and player.queue.is_empty) or not any(False if member.bot or member.voice.self_deaf else True for member in members): if not player.settings.get('24/7', False): await player.teardown() continue else: if not player.is_paused: await player.set_pause(True) else: if not player.guild.me: await player.teardown() continue elif not player.guild.me.voice: await player.connect(timeout=0.0, reconnect=True) try: if player.dj not in members: for m in members: if not m.bot: player.dj = m break except: pass @tasks.loop(hours=12.0) async def cache_cleaner(self): func.guild_settings.clear() func.playlist_name.clear() errorFile = func.gen_report() if errorFile: report_channel = self.bot.get_channel(func.report_channel_id) if report_channel: try: await report_channel.send(content=f"Report Before: ", file=errorFile) except Exception as e: print(f"Report could not be sent (Reason: {e})") func.error_log.clear() async def setup(bot: commands.Bot): await bot.add_cog(Task(bot))