From 7b68306949d9a268cb2b3d6ddc635073b5ddcff6 Mon Sep 17 00:00:00 2001 From: lzw-xydt Date: Mon, 6 Jul 2026 15:46:37 +0800 Subject: [PATCH] fix(telegram): add missing "edit" retry context for editMessageTelegram (#100543) --- extensions/telegram/src/network-errors.test.ts | 5 +++-- extensions/telegram/src/network-errors.ts | 1 + extensions/telegram/src/send.ts | 3 +-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/extensions/telegram/src/network-errors.test.ts b/extensions/telegram/src/network-errors.test.ts index a464457bdcef..d348788a4076 100644 --- a/extensions/telegram/src/network-errors.test.ts +++ b/extensions/telegram/src/network-errors.test.ts @@ -140,13 +140,14 @@ describe("isRecoverableTelegramNetworkError", () => { expect(isRecoverableTelegramNetworkError(undiciSnippetErr, { context: "polling" })).toBe(true); }); - it("treats delete/react (idempotent) contexts like polling, not send", () => { + it("treats delete/react/edit (idempotent) contexts like polling, not send", () => { const undiciSnippetErr = new Error("Undici: socket failure"); - // delete and react are idempotent Telegram operations; a transient + // delete, react, and edit are idempotent Telegram operations; a transient // snippet-only error must be retried (allowMessageMatch defaults true), // matching polling/webhook. send stays strict as the regression guard. expect(isRecoverableTelegramNetworkError(undiciSnippetErr, { context: "delete" })).toBe(true); expect(isRecoverableTelegramNetworkError(undiciSnippetErr, { context: "react" })).toBe(true); + expect(isRecoverableTelegramNetworkError(undiciSnippetErr, { context: "edit" })).toBe(true); expect(isRecoverableTelegramNetworkError(undiciSnippetErr, { context: "send" })).toBe(false); }); diff --git a/extensions/telegram/src/network-errors.ts b/extensions/telegram/src/network-errors.ts index 5909052c872d..47b32a86cfe2 100644 --- a/extensions/telegram/src/network-errors.ts +++ b/extensions/telegram/src/network-errors.ts @@ -147,6 +147,7 @@ export type TelegramNetworkErrorContext = | "webhook" | "delete" | "react" + | "edit" | "unknown"; export type TelegramNetworkErrorOrigin = { method?: string | null; diff --git a/extensions/telegram/src/send.ts b/extensions/telegram/src/send.ts index c6d7999b6866..b776772d11db 100644 --- a/extensions/telegram/src/send.ts +++ b/extensions/telegram/src/send.ts @@ -1807,8 +1807,7 @@ export async function editMessageTelegram( retry: opts.retry, verbose: opts.verbose, shouldRetry: (err) => - isRecoverableTelegramNetworkError(err, { allowMessageMatch: true }) || - isTelegramServerError(err), + isRecoverableTelegramNetworkError(err, { context: "edit" }) || isTelegramServerError(err), }); const requestWithEditShouldLog = ( fn: () => Promise,