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 logging
import typing
import discord import discord
import httpx import httpx
@ -126,6 +127,24 @@ class InfoCog(commands.Cog):
await ctx.respond(embed=embed) 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): def setup(bot):
if OAUTH_REDIRECT_URI and OAUTH_ID: if OAUTH_REDIRECT_URI and OAUTH_ID:

View file

@ -1,4 +1,5 @@
import asyncio import asyncio
import logging
import pathlib import pathlib
import re import re
import typing import typing
@ -107,12 +108,14 @@ class McDonaldsCog(commands.Cog):
def __init__(self, bot): def __init__(self, bot):
self.bot = bot self.bot = bot
self.lock = asyncio.Lock() self.lock = asyncio.Lock()
self.log = logging.getLogger("jimmy.cogs.mcdonalds")
@commands.Cog.listener() @commands.Cog.listener()
async def on_message(self, message: discord.Message): async def on_message(self, message: discord.Message):
author = message.author author = message.author
me = message.guild.me if message.guild else self.bot.user me = message.guild.me if message.guild else self.bot.user
if not message.channel.permissions_for(me).manage_messages: if not message.channel.permissions_for(me).manage_messages:
self.log.debug("McDonalds disabled in %s, no manage messages permissions.", message.channel)
return return
async with self.lock: async with self.lock:
@ -122,11 +125,19 @@ class McDonaldsCog(commands.Cog):
member = discord.utils.get(message.guild.members, name=username) member = discord.utils.get(message.guild.members, name=username)
if member: if member:
author = 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: async with McDataBase() as db:
if (last_info := await db.get_break(author.id)) is not None: if (last_info := await db.get_break(author.id)) is not None:
if message.content.upper() != "MCDONALDS!": if message.content.upper() != "MCDONALDS!":
if (message.created_at.timestamp() - last_info[1]) > 300: 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 db.remove_break(author.id)
await message.reply( await message.reply(
f"Thank you for your patience during this commercial break. You may now resume your" 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: 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.delete(delay=0)
await message.channel.send( await message.channel.send(
f"{message.author.mention} Please say `MCDONALDS!` to end commercial.", 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()) await db.set_break(author.id, message.created_at.timestamp())
elif message.author.bot is False: elif message.author.bot is False:
self.log.info("%r skipped the ad break.", author)
await db.remove_break(author.id) await db.remove_break(author.id)
await message.reply( await message.reply(
"Thank you. You may now resume your activity.", "Thank you. You may now resume your activity.",