From 1bf2f813b2587809643170a9634c87a58c4adee7 Mon Sep 17 00:00:00 2001 From: nex Date: Tue, 5 Dec 2023 18:34:42 +0000 Subject: [PATCH] Add logging to mcodonalds --- cogs/info.py | 19 +++++++++++++++++++ cogs/mcdonalds.py | 17 +++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/cogs/info.py b/cogs/info.py index 09e4877..5f2eed0 100644 --- a/cogs/info.py +++ b/cogs/info.py @@ -1,4 +1,5 @@ import logging +import typing import discord import httpx @@ -126,6 +127,24 @@ class InfoCog(commands.Cog): await ctx.respond(embed=embed) + @commands.command(name="set-log-level") + @commands.is_owner() + async def set_log_level(self, ctx: commands.Context, logger_name: str, logger_level: typing.Union[str, int]): + """Sets a module's log level.""" + logger_level = logger_level.upper() + if getattr(logging, logger_level, None) is None or logging.getLevelNamesMapping().get(logger_level) is None: + return await ctx.reply(":x: Invalid log level.") + logger = logging.getLogger(logger_name) + old_level = logger.getEffectiveLevel() + + def name(level): + return logging.getLevelName(level) + + logger.setLevel(logger_level) + return await ctx.reply( + f"\N{white heavy check mark} {logger_name}: {name(old_level)} -> {name(logger.getEffectiveLevel())}" + ) + def setup(bot): if OAUTH_REDIRECT_URI and OAUTH_ID: diff --git a/cogs/mcdonalds.py b/cogs/mcdonalds.py index 2dcc2a3..5213380 100644 --- a/cogs/mcdonalds.py +++ b/cogs/mcdonalds.py @@ -1,4 +1,5 @@ import asyncio +import logging import pathlib import re import typing @@ -107,12 +108,14 @@ class McDonaldsCog(commands.Cog): def __init__(self, bot): self.bot = bot self.lock = asyncio.Lock() + self.log = logging.getLogger("jimmy.cogs.mcdonalds") @commands.Cog.listener() async def on_message(self, message: discord.Message): author = message.author me = message.guild.me if message.guild else self.bot.user if not message.channel.permissions_for(me).manage_messages: + self.log.debug("McDonalds disabled in %s, no manage messages permissions.", message.channel) return async with self.lock: @@ -122,11 +125,19 @@ class McDonaldsCog(commands.Cog): member = discord.utils.get(message.guild.members, name=username) if member: author = member + self.log.info( + "Nightmare bypass, matched message content to username %s, which resolved to %r.", + username, + member + ) async with McDataBase() as db: if (last_info := await db.get_break(author.id)) is not None: if message.content.upper() != "MCDONALDS!": if (message.created_at.timestamp() - last_info[1]) > 300: + self.log.debug( + "Ad break expired for %s (%s).", author.name, author.id + ) await db.remove_break(author.id) await message.reply( f"Thank you for your patience during this commercial break. You may now resume your" @@ -135,6 +146,11 @@ class McDonaldsCog(commands.Cog): ) elif (message.created_at.timestamp() - last_info[0]) > 10: + self.log.info( + "Deleting message %r by %r as they need to skip the ad first.", + message, + author + ) await message.delete(delay=0) await message.channel.send( f"{message.author.mention} Please say `MCDONALDS!` to end commercial.", @@ -142,6 +158,7 @@ class McDonaldsCog(commands.Cog): ) await db.set_break(author.id, message.created_at.timestamp()) elif message.author.bot is False: + self.log.info("%r skipped the ad break.", author) await db.remove_break(author.id) await message.reply( "Thank you. You may now resume your activity.",