From a5c1359fac210b439aaa1aee95d46532674e3e71 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Mon, 17 Mar 2025 17:59:51 -0400 Subject: [PATCH] Add randomized presence with mythic plus theme. --- cogs/loops/__init__.py | 2 ++ cogs/loops/bot_presence.py | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 cogs/loops/bot_presence.py diff --git a/cogs/loops/__init__.py b/cogs/loops/__init__.py index cd5eaa7..65e0cbb 100644 --- a/cogs/loops/__init__.py +++ b/cogs/loops/__init__.py @@ -2,9 +2,11 @@ from nextcord.ext import commands +from cogs.loops.bot_presence import BotPresence from cogs.loops.daily_loop import DailyLoop def setup(bot: commands.Bot) -> None: """Add functions to bot.""" bot.add_cog(DailyLoop(bot)) + bot.add_cog(BotPresence(bot)) diff --git a/cogs/loops/bot_presence.py b/cogs/loops/bot_presence.py new file mode 100644 index 0000000..2959f2a --- /dev/null +++ b/cogs/loops/bot_presence.py @@ -0,0 +1,44 @@ +"""Functions for controlling the bot's presence. Also contains the loop.""" + +import random + +import nextcord +from nextcord.ext import commands, tasks + + +class BotPresence(commands.Cog, name="Bot Presence"): + """Class for bot presence functions.""" + + def __init__(self, bot: commands.Bot) -> None: + self.bot = bot + + @commands.Cog.listener() + async def on_ready(self) -> None: + """Start the loop when bot is ready.""" + await self.bot.wait_until_ready() + self.periodic_change_presence.start() + + @tasks.loop(minutes=30) + async def periodic_change_presence(self) -> None: + """Loops every 30 minutes and changes presence.""" + await self.change_presence() + + async def change_presence(self) -> None: + """Randomly chooses a presence and updates bot's presence.""" + dungeons = [ + "Cinderbrew Meadery", + "Darkflame Cleft", + "The Rookery", + "Priory of the Sacred Flame", + "Operation: Floodgate", + "The MOTHERLODE!!", + "Theater of Pain", + "Operation: Mechagon - Workshop", + ] + + dungeon = random.choice(dungeons) # noqa: S311 + plus = random.randint(2, 12) # noqa: S311 + + presence = f"Running +{plus} {dungeon}" + + await self.bot.change_presence(activity=nextcord.CustomActivity(presence))