






















@@ -10,19 +10,6 @@ import { normalizeTelegramReplyToMessageId } from "./outbound-params.js";
10101111const TELEGRAM_STREAM_MAX_CHARS = 4096;
1212const DEFAULT_THROTTLE_MS = 1000;
13-const THREAD_NOT_FOUND_RE = /400:\s*Bad Request:\s*message thread not found/i;
14-15-type TelegramSendMessageParams = Parameters<Bot["api"]["sendMessage"]>[2];
16-17-function hasNumericMessageThreadId(
18-params: TelegramSendMessageParams | undefined,
19-): params is TelegramSendMessageParams & { message_thread_id: number } {
20-return (
21-typeof params === "object" &&
22-params !== null &&
23-typeof (params as { message_thread_id?: unknown }).message_thread_id === "number"
24-);
25-}
26132714export type TelegramDraftStream = {
2815update: (text: string) => void;
@@ -109,7 +96,6 @@ export function createTelegramDraftStream(params: {
10996const minInitialChars = params.minInitialChars;
11097const chatId = params.chatId;
11198const threadParams = buildTelegramThreadParams(params.thread);
112-const allowThreadlessRetry = params.thread?.scope !== "dm";
11399const replyToMessageId = normalizeTelegramReplyToMessageId(params.replyToMessageId);
114100const replyParams =
115101replyToMessageId != null
@@ -136,39 +122,17 @@ export function createTelegramDraftStream(params: {
136122renderedParseMode: "HTML" | undefined;
137123sendGeneration: number;
138124};
139-const sendRenderedMessageWithThreadFallback = async (sendArgs: {
125+const sendRenderedMessage = async (sendArgs: {
140126renderedText: string;
141127renderedParseMode: "HTML" | undefined;
142-fallbackWarnMessage: string;
143128}) => {
144129const sendParams = sendArgs.renderedParseMode
145130 ? {
146131 ...replyParams,
147132parse_mode: sendArgs.renderedParseMode,
148133}
149134 : replyParams;
150-const usedThreadParams = hasNumericMessageThreadId(sendParams);
151-try {
152-return {
153-sent: await params.api.sendMessage(chatId, sendArgs.renderedText, sendParams),
154- usedThreadParams,
155-};
156-} catch (err) {
157-if (!allowThreadlessRetry || !usedThreadParams || !THREAD_NOT_FOUND_RE.test(String(err))) {
158-throw err;
159-}
160-const threadlessParams: TelegramSendMessageParams = { ...sendParams };
161-delete threadlessParams.message_thread_id;
162-params.warn?.(sendArgs.fallbackWarnMessage);
163-return {
164-sent: await params.api.sendMessage(
165-chatId,
166-sendArgs.renderedText,
167-Object.keys(threadlessParams).length > 0 ? threadlessParams : undefined,
168-),
169-usedThreadParams: false,
170-};
171-}
135+return await params.api.sendMessage(chatId, sendArgs.renderedText, sendParams);
172136};
173137const sendMessageTransportPreview = async ({
174138 renderedText,
@@ -187,14 +151,12 @@ export function createTelegramDraftStream(params: {
187151return true;
188152}
189153messageSendAttempted = true;
190-let sent: Awaited<ReturnType<typeof sendRenderedMessageWithThreadFallback>>["sent"];
154+let sent: Awaited<ReturnType<typeof sendRenderedMessage>>;
191155try {
192-({ sent } = await sendRenderedMessageWithThreadFallback({
156+sent = await sendRenderedMessage({
193157 renderedText,
194158 renderedParseMode,
195-fallbackWarnMessage:
196-"telegram stream preview send failed with message_thread_id, retrying without thread",
197-}));
159+});
198160} catch (err) {
199161if (isSafeToRetrySendError(err) || isTelegramClientRejection(err)) {
200162messageSendAttempted = false;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。