From 2aafe2202b22a809dbfc97b755eaf986d72242c3 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Fri, 20 Feb 2026 11:06:30 +0530 Subject: [PATCH] fix(telegram): restore fallback trigger on failed delivery --- src/telegram/bot-message-dispatch.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/telegram/bot-message-dispatch.ts b/src/telegram/bot-message-dispatch.ts index c1382b630ec..9c5ff0e3000 100644 --- a/src/telegram/bot-message-dispatch.ts +++ b/src/telegram/bot-message-dispatch.ts @@ -289,13 +289,16 @@ export const dispatchTelegramMessage = async ({ await lane.stream.flush(); }; - const disableBlockStreaming = forceBlockStreamingForReasoning - ? false - : typeof telegramCfg.blockStreaming === "boolean" - ? !telegramCfg.blockStreaming - : canStreamAnswerDraft || streamMode === "off" - ? true - : undefined; + const disableBlockStreaming = + streamMode === "off" + ? true + : forceBlockStreamingForReasoning + ? false + : typeof telegramCfg.blockStreaming === "boolean" + ? !telegramCfg.blockStreaming + : canStreamAnswerDraft + ? true + : undefined; const { onModelSelected, ...prefixOptions } = createReplyPrefixOptions({ cfg, @@ -366,6 +369,7 @@ export const dispatchTelegramMessage = async ({ const deliveryState = { delivered: false, skippedNonSilent: 0, + failedNonSilent: 0, }; const finalizedPreviewByLane: Record = { answer: false, @@ -636,6 +640,9 @@ export const dispatchTelegramMessage = async ({ } }, onError: (err, info) => { + if (info.kind !== "silent") { + deliveryState.failedNonSilent += 1; + } runtime.error?.(danger(`telegram ${info.kind} reply failed: ${String(err)}`)); }, onReplyStart: createTypingCallbacks({ @@ -720,7 +727,10 @@ export const dispatchTelegramMessage = async ({ } } let sentFallback = false; - if (!deliveryState.delivered && deliveryState.skippedNonSilent > 0) { + if ( + !deliveryState.delivered && + (deliveryState.skippedNonSilent > 0 || deliveryState.failedNonSilent > 0) + ) { const result = await deliverReplies({ replies: [{ text: EMPTY_RESPONSE_FALLBACK }], ...deliveryBaseOptions,