fix(telegram): add missing "edit" retry context for editMessageTelegram (#100543)

This commit is contained in:
lzw-xydt
2026-07-06 15:46:37 +08:00
committed by GitHub
parent be48a430bf
commit 7b68306949
3 changed files with 5 additions and 4 deletions

View File

@@ -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);
});

View File

@@ -147,6 +147,7 @@ export type TelegramNetworkErrorContext =
| "webhook"
| "delete"
| "react"
| "edit"
| "unknown";
export type TelegramNetworkErrorOrigin = {
method?: string | null;

View File

@@ -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 = <T>(
fn: () => Promise<T>,