From df8cb3dd4995ee1a1530b6faca81dbfaf9e79464 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Sat, 26 Aug 2023 22:52:02 -0400 Subject: [PATCH] Add message listener portion of birthday fun. --- cogs/message_listener/__init__.py | 43 +++++++++++++++++++++++++++++++ dakiny_bot.py | 2 ++ 2 files changed, 45 insertions(+) create mode 100644 cogs/message_listener/__init__.py diff --git a/cogs/message_listener/__init__.py b/cogs/message_listener/__init__.py new file mode 100644 index 0000000..af6ab20 --- /dev/null +++ b/cogs/message_listener/__init__.py @@ -0,0 +1,43 @@ +""" +Defines cog for on message listener. +""" + +import nextcord +from nextcord.ext import commands + +from dakiny_bot import birthday_list + + +class SubmissionListener(commands.Cog, name="Message Listener"): + """Sets up message listener.""" + + def __init__(self, bot: commands.Bot): + self.bot = bot + + @commands.Cog.listener() + async def on_message(self, message: nextcord.Message): + """Listener for message creation. Adds score and attachments to submission.""" + # don't want to process any messages from bot. + if message.author.id == self.bot.user.id: + return + + await birthday_action(message) + + +# 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(SubmissionListener(bot)) + + +async def birthday_action(message: nextcord.Message) -> None: + """ + Checks a message's auther and mentions to see if they are in the birthday list. + + Args: + message (nextcord.Message): The message to check for a birthday person. + """ + + if message.author.id in birthday_list or bool(set(message.raw_mentions) & set(birthday_list)): + await message.add_reaction("🎂") diff --git a/dakiny_bot.py b/dakiny_bot.py index 1c42bb8..b284b86 100644 --- a/dakiny_bot.py +++ b/dakiny_bot.py @@ -12,6 +12,8 @@ from config import DakinyConfig cs = ConfigStore.instance() cs.store(name="dakiny_config", node=DakinyConfig) +birthday_list: list[int] = [] + @hydra.main(config_path="conf", config_name="config") def main(cfg: DakinyConfig):