




























@@ -116,6 +116,14 @@ beforeEach(() => {
116116},
117117source: "test",
118118},
119+{
120+pluginId: "telegram",
121+plugin: createOutboundTestPlugin({
122+id: "telegram",
123+outbound: createStubOutbound("Telegram"),
124+}),
125+source: "test",
126+},
119127]),
120128);
121129});
@@ -612,6 +620,51 @@ describe("resolveDeliveryTarget", () => {
612620expect(result.accountId).toBe("bot-b");
613621});
614622623+it("strips :topic: suffix from telegram targets when threadId is resolved", async () => {
624+setMainSessionEntry(undefined);
625+626+const result = await resolveDeliveryTarget(makeCfg({ bindings: [] }), AGENT_ID, {
627+channel: "telegram",
628+to: "63448508:topic:1008013",
629+});
630+631+expect(result.ok).toBe(true);
632+expect(result.to).toBe("63448508");
633+expect(result.threadId).toBe(1008013);
634+});
635+636+it("prefers explicit telegram :topic: targets over session-derived threadId", async () => {
637+setLastSessionEntry({
638+sessionId: "sess-telegram-topic",
639+lastChannel: "telegram",
640+lastTo: "63448508:topic:1008013",
641+lastThreadId: "stale-thread",
642+});
643+644+const result = await resolveDeliveryTarget(makeCfg({ bindings: [] }), AGENT_ID, {
645+channel: "telegram",
646+to: "63448508:topic:1008013",
647+});
648+649+expect(result.ok).toBe(true);
650+expect(result.to).toBe("63448508");
651+expect(result.threadId).toBe(1008013);
652+});
653+654+it("keeps explicit delivery threadId when stripping telegram :topic: targets", async () => {
655+setMainSessionEntry(undefined);
656+657+const result = await resolveDeliveryTarget(makeCfg({ bindings: [] }), AGENT_ID, {
658+channel: "telegram",
659+to: "63448508:topic:1008013",
660+threadId: "42",
661+});
662+663+expect(result.ok).toBe(true);
664+expect(result.to).toBe("63448508");
665+expect(result.threadId).toBe("42");
666+});
667+615668it("explicit delivery.accountId overrides bindings-derived accountId", async () => {
616669setMainSessionEntry(undefined);
617670const cfg = makeCfg({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。