From ed68c4174f502da7e03efe978370dc73dfd7c085 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Wed, 12 Mar 2025 09:57:17 -0400 Subject: [PATCH] Update send highscore message to be more robust. --- utilities/utils.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/utilities/utils.py b/utilities/utils.py index 3ad97cc..3d52bdc 100644 --- a/utilities/utils.py +++ b/utilities/utils.py @@ -10,6 +10,7 @@ from sqlmodel import col from database.db import engine from database.models import Category, CategoryGroup, Guild, Score +from main import agon_logger MAX_LINE_LENGTH = 142 @@ -327,7 +328,9 @@ def get_time_str(time_in: float) -> str: return time.strftime(f"%-M:%S.{milliseconds}", time.gmtime(time_in)) -async def send_highscore_message(session: Session, guild: nextcord.Guild, group: CategoryGroup) -> nextcord.Message: +async def send_highscore_message( + session: Session, guild: nextcord.Guild, group: CategoryGroup +) -> nextcord.Message | None: """ Function takes care of checking if a message exists for a group. @@ -339,11 +342,17 @@ async def send_highscore_message(session: Session, guild: nextcord.Guild, group: group (CategoryGroup): group to post to the message. Returns: - nextcord.Message: Message object that was posted with group contents. + nextcord.Message: Message object that was posted with group contents. None if cannot send message. """ highscore_string = format_highscore_message(session, group) channel = guild.get_channel(group.channel_id) + if not isinstance(channel, nextcord.TextChannel): + agon_logger.error( + "Channel id %s in guild %s is does not correspond to a TextChannel.", channel.id, channel.guild.id + ) + return None + if group.message_id is None: # message doesn't exist. message: nextcord.Message = await channel.send(highscore_string)