diff --git a/cogs/message_listener/__init__.py b/cogs/message_listener/__init__.py deleted file mode 100644 index 198f658..0000000 --- a/cogs/message_listener/__init__.py +++ /dev/null @@ -1,121 +0,0 @@ -""" -Defines cog for on message listener. -""" - -import re -from datetime import datetime - -import nextcord -from nextcord.ext import commands -from sqlalchemy import select -from sqlalchemy.orm import Session - -# pylint: disable=import-error -from classes.submission import SubmissionState -from database_setup.sql_data_classes import Category, Guild, engine -from main import submission_objects - - -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) - - guild_id = message.guild.id - - if submission_objects.has_user(message.author.id): - submission = submission_objects.get_user_submission(message.author.id) - message_id = submission.message_id - - with Session(engine) as session: - stmt = select(Guild.SubmissionChannel).where(Guild.GuildId == guild_id) - submission_channel_id = session.scalar(stmt) - submission_message: nextcord.Message = ( - await self.bot.get_guild(guild_id).get_channel(submission_channel_id).fetch_message(message_id) - ) - - # need check if correct user and correct channel - if message.channel.id == submission_channel_id: - state = submission.submission_state - if state == SubmissionState.SCORE and message.content: - stmt = select(Category.IsTimeRecord).where(Category.CategoryId == submission.category_id) - - # check with regex if score matches correctly - is_time_record = session.scalar(stmt) - - time_regex = re.search("^([0-9]{1,2}:[0-9]|[0-9])?[0-9](\\.[0-9])?$", message.content) - int_regex = re.search("^[0-9]+$", message.content) - if time_regex is None and is_time_record: - embeds = submission_message.embeds[0] - embeds.add_field( - name="Error", - value="Time record must follow format MM:SS.ms, SS.ms, or SS.", - ) - elif int_regex is None and not is_time_record: - embeds = submission_message.embeds[0] - embeds.add_field(name="Error", value="Number record must only be number.") - else: - score = message.content - if is_time_record: - # standardize time score format. - if re.search("^[1-9]?[0-9]:[0-9]{2}(\\.[0-9])?$", score): - # score is already fine. - pass - elif re.search("^[0-9]{2}(\\.[0-9])?$", score): - # need to add leading colon and 0 - score = "0:" + score - elif re.search("^[0-9](\\.[0-9])?$", score): - # need to add 0 in seconds and leading colon and 0 - score = "0:0" + score - elif re.search("^[0]?[0-9]:[0-9]{2}(\\.[0-9])?$", score): - # if there is a minute 10ths place 0, remove - score = score.lstrip("0") - submission.score = score - embeds = submission.get_embeds() - await submission_message.edit( - embeds=embeds, - ) - elif state == SubmissionState.PROOF and len(message.attachments) > 0: - await submission_message.edit( - files=[await attch.to_file() for attch in message.attachments], - ) - elif state == SubmissionState.NAME and message.content: - submission.username = message.content - embeds = submission.get_embeds() - await submission_message.edit( - embeds=embeds, - ) - - await message.delete() - - -# 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: - """ - Does the birthday thing, currently for chris only. - - Args: - message (nextcord.Message): The message to check for birthday thing. - """ - today = datetime.today() - birthday = datetime(today.year, 7, 31) - chris = 642330132958281750 - if today.date() == birthday.date(): - if message.author.id == chris or chris in message.raw_mentions: - await message.add_reaction("🎂")