From 1589dfcf729fc496ab1e4e67caa4c2fda11de611 Mon Sep 17 00:00:00 2001 From: USO Status Date: Mon, 26 Jan 2026 22:28:48 +0100 Subject: [PATCH] fix(telegram): treat 'message not modified' as success to prevent duplication and downgrade edit failure log --- src/telegram/bot/delivery.ts | 2 +- src/telegram/send.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/telegram/bot/delivery.ts b/src/telegram/bot/delivery.ts index 788a48f62..0e7369326 100644 --- a/src/telegram/bot/delivery.ts +++ b/src/telegram/bot/delivery.ts @@ -102,7 +102,7 @@ export async function deliverReplies(params: { }); sentMessageId = editId; } catch (err) { - logVerbose(`Telegram edit failed, falling back to new message: ${String(err)}`); + console.warn(`Telegram edit failed, falling back to new message: ${String(err)}`); // Fall through to send new message } } diff --git a/src/telegram/send.ts b/src/telegram/send.ts index 3fcd72271..e57e2cf55 100644 --- a/src/telegram/send.ts +++ b/src/telegram/send.ts @@ -59,6 +59,7 @@ type TelegramReactionOpts = { retry?: RetryConfig; }; +const NOT_MODIFIED_RE = /message is not modified/i; const PARSE_ERR_RE = /can't parse entities|parse entities|find end of the entity/i; function resolveToken(explicit: string | undefined, params: { accountId: string; token: string }) { @@ -525,6 +526,10 @@ export async function editMessageTelegram( } catch (err) { // If HTML parsing fails, fall back to plain text const errText = formatErrorMessage(err); + if (NOT_MODIFIED_RE.test(errText)) { + logVerbose(`[telegram] Edit failed with 'not modified', treating as success: ${errText}`); + return { ok: true }; + } if (PARSE_ERR_RE.test(errText)) { if (opts.verbose) { console.warn(`telegram HTML parse failed on edit, retrying as plain text: ${errText}`);