From faef6e7a0f0ab869dd7b69c1893bddb770d46e50 Mon Sep 17 00:00:00 2001 From: "Nyeki.py" <84998222+Nekidev@users.noreply.github.com> Date: Fri, 18 Oct 2024 19:51:24 -0300 Subject: [PATCH] fix(bot): :bug: Fix invalid `replying_to_id` message field. --- payphone/cogs/calls/cog.py | 27 +++++++++++++++++---------- payphone/cogs/calls/embeds.py | 8 ++++---- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/payphone/cogs/calls/cog.py b/payphone/cogs/calls/cog.py index 8c7bb82..04b419d 100644 --- a/payphone/cogs/calls/cog.py +++ b/payphone/cogs/calls/cog.py @@ -54,10 +54,14 @@ class Calls(base.Cog): messages, message_contents, _ = await pipe.execute() - messages = [models.Message(**orjson.loads(msg)) for msg in messages] - message_contents = [ - models.MessageContent(**orjson.loads(msg)) for msg in message_contents - ] + messages = sorted( + [models.Message(**orjson.loads(msg)) for msg in messages], + key=lambda m: m.created_at, + ) + message_contents = sorted( + [models.MessageContent(**orjson.loads(msg)) for msg in message_contents], + key=lambda m: m.created_at, + ) await models.Message.bulk_create(messages, batch_size=500) await models.MessageContent.bulk_create(message_contents, batch_size=500) @@ -727,6 +731,8 @@ class Calls(base.Cog): webhook_message = None cleaned_content = formatting.clean(message, call_rss) + replying_to_id = None + if blocked_word: try: await self.bot.get_partial_messageable(channel_id).send( @@ -753,7 +759,12 @@ class Calls(base.Cog): embed = None if message.reference: - embed = await embeds.ReplyEmbed(message.reference, call_id=call.id) + embed, replying_message = await embeds.ReplyEmbed( + message.reference, call_id=call.id + ) + + if replying_message is not None: + replying_to_id = replying_message.id webhook_message = await webhook.send( cleaned_content, @@ -779,11 +790,7 @@ class Calls(base.Cog): "propagation_channel_id": ( other_channel.id if webhook_message else None ), - "replying_to_id": ( - message.reference.message_id - if message.reference is not None - else None - ), + "replying_to_id": replying_to_id, "created_at": datetime.now(timezone.utc), } ), diff --git a/payphone/cogs/calls/embeds.py b/payphone/cogs/calls/embeds.py index 951d282..91c86e1 100644 --- a/payphone/cogs/calls/embeds.py +++ b/payphone/cogs/calls/embeds.py @@ -8,7 +8,7 @@ from payphone.core import constants, formatting async def ReplyEmbed( reference: discord.MessageReference, call_id: int -) -> discord.Embed | None: +) -> (discord.Embed | None, models.Message | None): """Generates the embed sent on calls to represent replies. Args: @@ -16,7 +16,7 @@ async def ReplyEmbed( call_id (int): The ID of the call the message was sent in. Returns: - discord.Embed | None: The generated embed. + (discord.Embed | None, models.Message | None): The generated embed and the replied message. """ message = ( @@ -30,7 +30,7 @@ async def ReplyEmbed( ) if message is None: - return None + return None, None is_this_channel = message.id == reference.message_id @@ -63,4 +63,4 @@ async def ReplyEmbed( ), ) - return embed + return embed, message