Fix queue logic for Discord messages with components and add rc_ prefix

This commit is contained in:
Frisk 2024-01-14 15:40:43 +01:00
parent cbcf3624e1
commit 214da2ded8
2 changed files with 10 additions and 1 deletions

View file

@ -50,7 +50,7 @@ def buttons_hook(message: DiscordMessage, metadata: DiscordMessageMetadata, cont
action_buttons = context.buttons or "" action_buttons = context.buttons or ""
if not len(action_buttons) or context.feed_type == "discussion": if not len(action_buttons) or context.feed_type == "discussion":
return 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": if "block" in action_buttons and context.event != "suppressed":
add_button(message, add_button(message,
BUTTON_PREFIX + " block " + ("#" + str(change["userid"]) if change["userid"] else change["user"]), BUTTON_PREFIX + " block " + ("#" + str(change["userid"]) if change["userid"] else change["user"]),

View file

@ -115,6 +115,15 @@ class MessageQueue:
async def pack_massages(self, messages: list[QueueEntry], current_pack=None) -> AsyncGenerator[tuple[StackedDiscordMessage, int, str], None]: 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""" """Pack messages into StackedDiscordMessage. It's an async generator"""
for index, message in enumerate(messages): 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 message.method == "POST":
if current_pack is None: if current_pack is None:
current_pack = StackedDiscordMessage(0 if message.discord_message.message_type == "compact" else 1, current_pack = StackedDiscordMessage(0 if message.discord_message.message_type == "compact" else 1,