diff --git a/extensions/telegram/src/channel.test.ts b/extensions/telegram/src/channel.test.ts index 82309b9ec82..36cd39a2e55 100644 --- a/extensions/telegram/src/channel.test.ts +++ b/extensions/telegram/src/channel.test.ts @@ -220,6 +220,33 @@ describe("telegramPlugin messaging", () => { }); }); +describe("telegramPlugin threading", () => { + it("honors per-account replyToMode overrides", () => { + const resolveReplyToMode = telegramPlugin.threading?.resolveReplyToMode; + if (!resolveReplyToMode) { + throw new Error("Expected telegramPlugin.threading.resolveReplyToMode to be defined"); + } + + const cfg = { + channels: { + telegram: { + replyToMode: "all", + botToken: "token-default", + accounts: { + work: { + botToken: "token-work", + replyToMode: "first", + }, + }, + }, + }, + } as OpenClawConfig; + + expect(resolveReplyToMode({ cfg, accountId: "work" })).toBe("first"); + expect(resolveReplyToMode({ cfg, accountId: "default" })).toBe("all"); + }); +}); + describe("telegramPlugin threading", () => { it("keeps topic thread state in plugin-owned tool context", () => { expect( diff --git a/extensions/telegram/src/channel.ts b/extensions/telegram/src/channel.ts index 818a8b283f3..a53cb1a0d17 100644 --- a/extensions/telegram/src/channel.ts +++ b/extensions/telegram/src/channel.ts @@ -871,7 +871,11 @@ export const telegramPlugin = createChatChannelPlugin({ collectWarnings: collectTelegramSecurityWarnings, }, threading: { - topLevelReplyToMode: "telegram", + scopedAccountReplyToMode: { + resolveAccount: (cfg, accountId) => resolveTelegramAccount({ cfg, accountId }), + resolveReplyToMode: (account) => account.config.replyToMode, + fallback: "off", + }, buildToolContext: (params) => buildTelegramThreadingToolContext(params), resolveAutoThreadId: ({ to, toolContext }) => resolveTelegramAutoThreadId({ to, toolContext }), },