from discord.ext import tasks import discord import traceback import asyncio class Extension: show_stats_prev = 0 core = None def __init__(self, core): self.core = core async def task(self, timeout = 5): await self.core.wait_until_ready() while True: await self.updater() await asyncio.sleep(timeout) async def updater(self): try: if self.core.api_down: act = discord.Activity(type=discord.ActivityType.watching, name = f"API DOWN") return await self.core.change_presence(activity=act) if not self.core.stats['servers'].values(): print("Stats not be loaded") return try: server = list(self.core.stats['servers'].values())[self.show_stats_prev] self.show_stats_prev += 1 except: self.show_stats_prev = 0 server = list(self.core.stats['servers'].values())[self.show_stats_prev] addr = server['address'].split(":") #act = discord.Streaming(name = f"{server['name']} - {server['player_count']}", url=f"https://{addr[0]}/connect/{addr[1]}") # https://stackoverflow.com/a/59126629 act = discord.Activity(type=discord.ActivityType.watching, name = f"{server['name']} - {server['player_count']}") await self.core.change_presence(activity=act) except: traceback.print_exc()