From d66b53c3b856919bdc1fe6b554ed6c874ec85145 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 15 Mar 2026 15:58:09 -0700 Subject: [PATCH] Hooks: preserve Discord group DM conversation ids --- src/hooks/message-hook-mappers.ts | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/hooks/message-hook-mappers.ts b/src/hooks/message-hook-mappers.ts index 968a4d50719..1860be8a317 100644 --- a/src/hooks/message-hook-mappers.ts +++ b/src/hooks/message-hook-mappers.ts @@ -187,24 +187,35 @@ function deriveConversationId(canonical: CanonicalInboundMessageHookContext): st : rawSender?.startsWith("discord:") ? rawSender.slice("discord:".length) : undefined; + const senderChannelId = rawSender?.startsWith("discord:channel:") + ? rawSender.slice("discord:channel:".length) + : rawSender?.startsWith("discord:group:") + ? rawSender.slice("discord:group:".length) + : undefined; + if (rawTarget?.startsWith("discord:channel:")) { + return `channel:${rawTarget.slice("discord:channel:".length)}`; + } + if (rawTarget?.startsWith("discord:group:")) { + return `channel:${rawTarget.slice("discord:group:".length)}`; + } + if (rawTarget?.startsWith("channel:") && (canonical.isGroup || senderChannelId)) { + return rawTarget; + } if (!canonical.isGroup && senderUserId) { return `user:${senderUserId}`; } if (!rawTarget) { return undefined; } - if (rawTarget.startsWith("discord:channel:")) { - return `channel:${rawTarget.slice("discord:channel:".length)}`; - } if (rawTarget.startsWith("discord:user:")) { return `user:${rawTarget.slice("discord:user:".length)}`; } + if (rawTarget.startsWith("user:")) { + return rawTarget; + } if (rawTarget.startsWith("discord:")) { return `user:${rawTarget.slice("discord:".length)}`; } - if (rawTarget.startsWith("channel:") || rawTarget.startsWith("user:")) { - return rawTarget; - } } const baseConversationId = stripChannelPrefix( canonical.to ?? canonical.originatingTo ?? canonical.conversationId,