Add logging to mcodonalds

This commit is contained in:
Nexus 2023-12-05 18:34:42 +00:00
parent b53121ebb5
commit 1bf2f813b2
Signed by: nex
GPG key ID: 0FA334385D0B689F
2 changed files with 36 additions and 0 deletions

View file

@ -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:

View file

@ -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.",