fix(bot): 🐛 Fix invalid replying_to_id message field.

This commit is contained in:
Nyeki.py
2024-10-18 19:51:24 -03:00
parent e7b553662d
commit faef6e7a0f
2 changed files with 21 additions and 14 deletions
+17 -10
View File
@@ -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),
}
),
+4 -4
View File
@@ -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