From 214da2ded8d3334beb6388c0aa7c8cab484ab00d Mon Sep 17 00:00:00 2001 From: Frisk Date: Sun, 14 Jan 2024 15:40:43 +0100 Subject: [PATCH] Fix queue logic for Discord messages with components and add rc_ prefix --- extensions/hooks/buttons.py | 2 +- src/discord/queue.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/extensions/hooks/buttons.py b/extensions/hooks/buttons.py index 5c98be1..8289453 100644 --- a/extensions/hooks/buttons.py +++ b/extensions/hooks/buttons.py @@ -50,7 +50,7 @@ def buttons_hook(message: DiscordMessage, metadata: DiscordMessageMetadata, cont action_buttons = context.buttons or "" if not len(action_buttons) or context.feed_type == "discussion": return - BUTTON_PREFIX = context.client.WIKI_SCRIPT_PATH[len(context.client.WIKI_JUST_DOMAIN):] + BUTTON_PREFIX = "rc_" + context.client.WIKI_SCRIPT_PATH[len(context.client.WIKI_JUST_DOMAIN):] if "block" in action_buttons and context.event != "suppressed": add_button(message, BUTTON_PREFIX + " block " + ("#" + str(change["userid"]) if change["userid"] else change["user"]), diff --git a/src/discord/queue.py b/src/discord/queue.py index 1b3b34d..6b0a294 100644 --- a/src/discord/queue.py +++ b/src/discord/queue.py @@ -115,6 +115,15 @@ class MessageQueue: async def pack_massages(self, messages: list[QueueEntry], current_pack=None) -> AsyncGenerator[tuple[StackedDiscordMessage, int, str], None]: """Pack messages into StackedDiscordMessage. It's an async generator""" for index, message in enumerate(messages): + if "components" in message.discord_message.webhook_object: # In case of messages with Discord components bypass the stacking logic + separate_pack = StackedDiscordMessage(0 if message.discord_message.message_type == "compact" else 1, + message.wiki) # next messages + separate_pack.add_message(message.discord_message) + if current_pack and current_pack.message_list: # If we have stacked messages in the queue flush them and send them to preserve order + yield current_pack, index - 1, "POST" + current_pack = None + yield separate_pack, index, message.method + continue if message.method == "POST": if current_pack is None: current_pack = StackedDiscordMessage(0 if message.discord_message.message_type == "compact" else 1,