""" Functions for controlling the bot's presence. """ import random from nextcord.ext import commands from nextcord.ext import tasks import nextcord class BotPresence(commands.Cog, name="Bot Presence"): """Class for bot presence functions.""" def __init__(self, bot: commands.Bot): self.bot = bot @commands.Cog.listener() async def on_guild_join(self, guild: nextcord.Guild): # pylint: disable=unused-argument """Listener for Guild Join. Updated presence on guild join.""" await self.change_presence() @commands.Cog.listener() async def on_ready(self): """Starts the loop when bot is ready.""" await self.bot.wait_until_ready() # pylint doesn't recognize that periodic_change_presense is subclassed from tasks.loop. self.periodic_change_presence.start() # pylint: disable=no-member @tasks.loop(minutes=2) async def periodic_change_presence(self): """Loops every 2 minutes and changes presence.""" await self.change_presence() async def change_presence(self): """Randomly chooses a presence and updates bot's presence.""" statuses = [ "Now with slash commands!", "Vuln Pls.", "All your base are belong to us.", "Double plus good.", "That's a lot of damage!", ] status = random.choice(statuses) status += f" | {len(self.bot.guilds)} servers" await self.bot.change_presence(activity=nextcord.Game(status)) # This function will be called when this extension is loaded. # It is necessary to add these functions to the bot. def setup(bot: commands.Bot): """Adds function to bot""" bot.add_cog(BotPresence(bot))