Remove message listener. Don't need bday prank anymore and the message listener for submissions has been removed due to command.
This commit is contained in:
@@ -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("🎂")
|
|
||||||
Reference in New Issue
Block a user