diff --git a/extensions/telegram/src/outbound-adapter.test.ts b/extensions/telegram/src/outbound-adapter.test.ts index 2b71deeb5a6..849385754da 100644 --- a/extensions/telegram/src/outbound-adapter.test.ts +++ b/extensions/telegram/src/outbound-adapter.test.ts @@ -167,6 +167,25 @@ describe("telegramOutbound", () => { expect(result).toEqual({ channel: "telegram", messageId: "tg-silent", chatId: "12345" }); }); + it("does not plain-text sanitize Telegram HTML before durable delivery", async () => { + sendMessageTelegramMock.mockResolvedValueOnce({ messageId: "tg-html", chatId: "12345" }); + + await telegramOutbound.sendText!({ + cfg: {} as never, + to: "12345", + text: "Morning oauth2", + deps: { sendTelegram: sendMessageTelegramMock }, + }); + + const options = callOptionsAt( + sendMessageTelegramMock, + 0, + "12345", + "Morning oauth2", + ); + expect(options.textMode).toBeUndefined(); + }); + it("forwards audioAsVoice payload media to Telegram voice sends", async () => { sendMessageTelegramMock.mockResolvedValueOnce({ messageId: "tg-voice", chatId: "12345" }); diff --git a/extensions/telegram/src/outbound-adapter.ts b/extensions/telegram/src/outbound-adapter.ts index a15e07a47f3..e56a38bddd8 100644 --- a/extensions/telegram/src/outbound-adapter.ts +++ b/extensions/telegram/src/outbound-adapter.ts @@ -7,7 +7,6 @@ import { presentationToInteractiveReply, renderMessagePresentationFallbackText, } from "openclaw/plugin-sdk/interactive-runtime"; -import { sanitizeForPlainText } from "openclaw/plugin-sdk/outbound-runtime"; import type { OutboundDeliveryFormattingOptions } from "openclaw/plugin-sdk/outbound-runtime"; import { resolveOutboundSendDep, @@ -165,8 +164,6 @@ export function createTelegramOutboundAdapter( chunkedTextFormatting: { parseMode: "HTML" }, extractMarkdownImages: true, textChunkLimit: TELEGRAM_TEXT_CHUNK_LIMIT, - sanitizeText: ({ text }) => sanitizeForPlainText(text), - shouldSkipPlainTextSanitization: ({ payload }) => Boolean(payload.channelData), shouldSuppressLocalPayloadPrompt: options.shouldSuppressLocalPayloadPrompt, beforeDeliverPayload: options.beforeDeliverPayload, shouldTreatDeliveredTextAsVisible: options.shouldTreatDeliveredTextAsVisible, diff --git a/extensions/telegram/src/telegram-outbound.test.ts b/extensions/telegram/src/telegram-outbound.test.ts index 1a243e88ada..c14acd29076 100644 --- a/extensions/telegram/src/telegram-outbound.test.ts +++ b/extensions/telegram/src/telegram-outbound.test.ts @@ -14,6 +14,7 @@ describe("telegramPlugin outbound", () => { expect(telegramOutbound.chunkerMode).toBe("markdown"); expect(telegramOutbound.chunkedTextFormatting).toEqual({ parseMode: "HTML" }); expect(telegramOutbound.textChunkLimit).toBe(4000); + expect(telegramOutbound.sanitizeText).toBeUndefined(); expect(telegramOutbound.pollMaxOptions).toBe(10); });