






















@@ -178,6 +178,8 @@ const PARSE_ERR_RE = /can't parse entities|parse entities|find end of the entity
178178const THREAD_NOT_FOUND_RE = /400:\s*Bad Request:\s*message thread not found/i;
179179const MESSAGE_NOT_MODIFIED_RE =
180180/400:\s*Bad Request:\s*message is not modified|MESSAGE_NOT_MODIFIED/i;
181+const MESSAGE_DELETE_NOOP_RE =
182+/message to delete not found|message can't be deleted|MESSAGE_ID_INVALID|MESSAGE_DELETE_FORBIDDEN/i;
181183const CHAT_NOT_FOUND_RE = /400: Bad Request: chat not found/i;
182184const sendLogger = createSubsystemLogger("telegram/send");
183185const diagLogger = createSubsystemLogger("telegram/diagnostic");
@@ -373,6 +375,10 @@ function isTelegramMessageNotModifiedError(err: unknown): boolean {
373375return MESSAGE_NOT_MODIFIED_RE.test(formatErrorMessage(err));
374376}
375377378+function isTelegramMessageDeleteNoopError(err: unknown): boolean {
379+return MESSAGE_DELETE_NOOP_RE.test(formatErrorMessage(err));
380+}
381+376382function hasMessageThreadIdParam(params?: TelegramThreadScopedParams): boolean {
377383if (!params) {
378384return false;
@@ -1072,7 +1078,7 @@ export async function deleteMessageTelegram(
10721078chatIdInput: string | number,
10731079messageIdInput: string | number,
10741080opts: TelegramDeleteOpts,
1075-): Promise<{ ok: true }> {
1081+): Promise<{ ok: true } | { ok: false; warning: string }> {
10761082const { cfg, account, api } = resolveTelegramApiContext(opts);
10771083const rawTarget = String(chatIdInput);
10781084const chatId = await resolveAndPersistChatId({
@@ -1090,7 +1096,21 @@ export async function deleteMessageTelegram(
10901096verbose: opts.verbose,
10911097shouldRetry: (err) => isRecoverableTelegramNetworkError(err, { context: "send" }),
10921098});
1093-await requestWithDiag(() => api.deleteMessage(chatId, messageId), "deleteMessage");
1099+try {
1100+await requestWithDiag(() => api.deleteMessage(chatId, messageId), "deleteMessage", {
1101+shouldLog: (err) => !isTelegramMessageDeleteNoopError(err),
1102+});
1103+} catch (err: unknown) {
1104+if (!isTelegramMessageDeleteNoopError(err)) {
1105+throw err;
1106+}
1107+const detail = formatErrorMessage(err);
1108+logVerbose(`[telegram] Delete skipped for message ${messageId} in chat ${chatId}: ${detail}`);
1109+return {
1110+ok: false,
1111+warning: `Message ${messageId} was not deleted: ${detail}`,
1112+};
1113+}
10941114logVerbose(`[telegram] Deleted message ${messageId} from chat ${chatId}`);
10951115return { ok: true };
10961116}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。