From 4b3c9c9c5af2b9a3a22d466277021a5135eae865 Mon Sep 17 00:00:00 2001 From: CHISEN Kaoru Date: Sat, 7 Feb 2026 03:14:57 +0000 Subject: [PATCH] fix(discord): respect replyToMode in thread channel --- src/auto-reply/reply/reply-reference.ts | 6 +++--- src/discord/monitor/threading.test.ts | 13 ++++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/auto-reply/reply/reply-reference.ts b/src/auto-reply/reply/reply-reference.ts index aba099afd..5a3427e83 100644 --- a/src/auto-reply/reply/reply-reference.ts +++ b/src/auto-reply/reply/reply-reference.ts @@ -29,6 +29,9 @@ export function createReplyReferencePlanner(options: { if (!allowReference) { return undefined; } + if (options.replyToMode === "off") { + return undefined; + } if (existingId) { hasReplied = true; return existingId; @@ -36,9 +39,6 @@ export function createReplyReferencePlanner(options: { if (!startId) { return undefined; } - if (options.replyToMode === "off") { - return undefined; - } if (options.replyToMode === "all") { hasReplied = true; return startId; diff --git a/src/discord/monitor/threading.test.ts b/src/discord/monitor/threading.test.ts index b4a1c42f6..e0a5c537d 100644 --- a/src/discord/monitor/threading.test.ts +++ b/src/discord/monitor/threading.test.ts @@ -74,7 +74,7 @@ describe("resolveDiscordReplyDeliveryPlan", () => { expect(plan.replyReference.use()).toBeUndefined(); }); - it("always uses existingId when inside a thread", () => { + it("respects replyToMode off even inside a thread", () => { const plan = resolveDiscordReplyDeliveryPlan({ replyTarget: "channel:thread", replyToMode: "off", @@ -82,6 +82,17 @@ describe("resolveDiscordReplyDeliveryPlan", () => { threadChannel: { id: "thread" }, createdThreadId: null, }); + expect(plan.replyReference.use()).toBeUndefined(); + }); + + it("uses existingId when inside a thread with replyToMode all", () => { + const plan = resolveDiscordReplyDeliveryPlan({ + replyTarget: "channel:thread", + replyToMode: "all", + messageId: "m1", + threadChannel: { id: "thread" }, + createdThreadId: null, + }); expect(plan.replyReference.use()).toBe("m1"); }); });