From 5133f9bdc8522289b84da2bfd1e70feba58e8932 Mon Sep 17 00:00:00 2001 From: IAmTomahawkx Date: Sat, 22 Jul 2023 19:29:47 -0700 Subject: [PATCH 1/4] lints -_- --- modules/logging.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/modules/logging.py b/modules/logging.py index b02920b..3f43c73 100644 --- a/modules/logging.py +++ b/modules/logging.py @@ -27,7 +27,7 @@ import discord from discord.ext import commands, tasks -from discord.utils import format_dt +from discord.utils import MISSING, format_dt import core @@ -35,6 +35,9 @@ class Logging(commands.Cog): def __init__(self, bot: core.Bot) -> None: self.bot = bot + + self.user: discord.User | None = MISSING # none is for a failed fetch + if url := core.CONFIG["LOGGING"].get("webhook_url"): self.webhook = discord.Webhook.from_url(url, session=bot.session, client=bot) else: @@ -64,9 +67,32 @@ async def logging_loop(self) -> None: embed = to_log.__dict__.get("embed") or discord.utils.MISSING + avatar_url: str | None = core.CONFIG["LOGGING"].get("webhook_avatar_url") + avatar_name = "PythonistaBot Logging" + + if not avatar_url and self.user is not None and "runner" in core.CONFIG["LOGGING"]: + runner_id: int = core.CONFIG["LOGGING"]["runner"] + user = self.user or self.bot.get_user(runner_id) + + if user: + avatar_url = user.display_avatar.url + avatar_name = f"Logging: Dev: {user.display_name}" + + else: + try: + user = await self.bot.fetch_user( + runner_id + ) # dont particularly need to chunk the entire guild for the one user + self.user = user + except: + self.user = None # This will tell us not to attempt again. + else: + avatar_url = user.display_avatar.url + avatar_name = f"Logging: Dev: {user.display_name}" + await self.webhook.send( message, - username="PythonistaBot Logging", + username=avatar_name, avatar_url=core.CONFIG["LOGGING"].get("webhook_avatar_url"), embed=embed, ) From 18daefbb9a0fb2b5f28873a74aa1977b8d25c707 Mon Sep 17 00:00:00 2001 From: IAmTomahawkx Date: Sat, 22 Jul 2023 19:28:15 -0700 Subject: [PATCH 2/4] Add config key for logging in dev mode --- config.template.toml | 1 + types_/config.py | 1 + 2 files changed, 2 insertions(+) diff --git a/config.template.toml b/config.template.toml index 26973aa..513d3e5 100644 --- a/config.template.toml +++ b/config.template.toml @@ -18,6 +18,7 @@ dsn = 'postgres://pythonistabot:pythonistabot@database:5432/pythonistabot' # ass [LOGGING] webhook_url = "" # optional webhook_avatar_url = "" # optional +runner = 123456789 # optional: sets the webhook avatar url (will be overridden by the webhook_avatar_url attribute) level = 20 [SNEKBOX] # optional diff --git a/types_/config.py b/types_/config.py index 51ef79b..f94470f 100644 --- a/types_/config.py +++ b/types_/config.py @@ -20,6 +20,7 @@ class Logging(TypedDict): webhook_url: NotRequired[str] webhook_avatar_url: NotRequired[str] level: int + runner: NotRequired[int] class Snekbox(TypedDict): From 22e37c516f58c92508ab00d054df3850511bae36 Mon Sep 17 00:00:00 2001 From: IAmTomahawkx Date: Mon, 24 Jul 2023 16:59:01 -0700 Subject: [PATCH 3/4] use get_or_fetch_user --- modules/logging.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/modules/logging.py b/modules/logging.py index 3f43c73..7424a57 100644 --- a/modules/logging.py +++ b/modules/logging.py @@ -72,24 +72,15 @@ async def logging_loop(self) -> None: if not avatar_url and self.user is not None and "runner" in core.CONFIG["LOGGING"]: runner_id: int = core.CONFIG["LOGGING"]["runner"] - user = self.user or self.bot.get_user(runner_id) + try: + user = self.user or self.bot.get_or_fetch_user(runner_id) + except: + self.user = user = None # This will tell us not to attempt again. if user: avatar_url = user.display_avatar.url avatar_name = f"Logging: Dev: {user.display_name}" - else: - try: - user = await self.bot.fetch_user( - runner_id - ) # dont particularly need to chunk the entire guild for the one user - self.user = user - except: - self.user = None # This will tell us not to attempt again. - else: - avatar_url = user.display_avatar.url - avatar_name = f"Logging: Dev: {user.display_name}" - await self.webhook.send( message, username=avatar_name, From 5e20d05d31d1242b39818ea13e6d94efdb9618a4 Mon Sep 17 00:00:00 2001 From: IAmTomahawkx Date: Mon, 24 Jul 2023 17:00:23 -0700 Subject: [PATCH 4/4] fix: nitpicks --- modules/logging.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/logging.py b/modules/logging.py index 7424a57..33ebca8 100644 --- a/modules/logging.py +++ b/modules/logging.py @@ -68,7 +68,7 @@ async def logging_loop(self) -> None: embed = to_log.__dict__.get("embed") or discord.utils.MISSING avatar_url: str | None = core.CONFIG["LOGGING"].get("webhook_avatar_url") - avatar_name = "PythonistaBot Logging" + actor_name = "PythonistaBot Logging" if not avatar_url and self.user is not None and "runner" in core.CONFIG["LOGGING"]: runner_id: int = core.CONFIG["LOGGING"]["runner"] @@ -79,11 +79,11 @@ async def logging_loop(self) -> None: if user: avatar_url = user.display_avatar.url - avatar_name = f"Logging: Dev: {user.display_name}" + actor_name = f"Logging: Dev: {user.display_name}" await self.webhook.send( message, - username=avatar_name, + username=actor_name, avatar_url=core.CONFIG["LOGGING"].get("webhook_avatar_url"), embed=embed, )