diff --git a/src/telegram/bot-message-dispatch.test.ts b/src/telegram/bot-message-dispatch.test.ts index 2548902072b..c5c98f3e006 100644 --- a/src/telegram/bot-message-dispatch.test.ts +++ b/src/telegram/bot-message-dispatch.test.ts @@ -113,6 +113,7 @@ describe("dispatchTelegramMessage draft streaming", () => { async function dispatchWithContext(params: { context: TelegramMessageContext; telegramCfg?: Parameters[0]["telegramCfg"]; + streamMode?: Parameters[0]["streamMode"]; }) { await dispatchTelegramMessage({ context: params.context, @@ -120,7 +121,7 @@ describe("dispatchTelegramMessage draft streaming", () => { cfg: {}, runtime: createRuntime(), replyToMode: "first", - streamMode: "partial", + streamMode: params.streamMode ?? "partial", textLimit: 4096, telegramCfg: params.telegramCfg ?? {}, opts: { token: "token" }, @@ -236,4 +237,26 @@ describe("dispatchTelegramMessage draft streaming", () => { expect(draftStream.clear).toHaveBeenCalledTimes(1); expect(draftStream.stop).toHaveBeenCalled(); }); + + it("disables block streaming when streamMode is off", async () => { + dispatchReplyWithBufferedBlockDispatcher.mockImplementation(async ({ dispatcherOptions }) => { + await dispatcherOptions.deliver({ text: "Hello" }, { kind: "final" }); + return { queuedFinal: true }; + }); + deliverReplies.mockResolvedValue({ delivered: true }); + + await dispatchWithContext({ + context: createContext(), + streamMode: "off", + }); + + expect(createTelegramDraftStream).not.toHaveBeenCalled(); + expect(dispatchReplyWithBufferedBlockDispatcher).toHaveBeenCalledWith( + expect.objectContaining({ + replyOptions: expect.objectContaining({ + disableBlockStreaming: true, + }), + }), + ); + }); }); diff --git a/src/telegram/bot-message-dispatch.ts b/src/telegram/bot-message-dispatch.ts index 3caef30df57..eac21eb82fb 100644 --- a/src/telegram/bot-message-dispatch.ts +++ b/src/telegram/bot-message-dispatch.ts @@ -169,7 +169,7 @@ export const dispatchTelegramMessage = async ({ const disableBlockStreaming = typeof telegramCfg.blockStreaming === "boolean" ? !telegramCfg.blockStreaming - : draftStream + : draftStream || streamMode === "off" ? true : undefined;