diff --git a/src/agents/pi-embedded-subscribe.handlers.messages.ts b/src/agents/pi-embedded-subscribe.handlers.messages.ts index 54b4edd1a..2b1a6df28 100644 --- a/src/agents/pi-embedded-subscribe.handlers.messages.ts +++ b/src/agents/pi-embedded-subscribe.handlers.messages.ts @@ -302,4 +302,5 @@ export function handleMessageEnd( ctx.state.blockState.final = false; ctx.state.blockState.inlineCode = createInlineCodeState(); ctx.state.lastStreamedAssistant = undefined; + ctx.state.lastStreamedAssistantCleaned = undefined; } diff --git a/src/telegram/bot-message-dispatch.ts b/src/telegram/bot-message-dispatch.ts index e66ec2cf5..03a448dd7 100644 --- a/src/telegram/bot-message-dispatch.ts +++ b/src/telegram/bot-message-dispatch.ts @@ -70,11 +70,12 @@ export const dispatchTelegramMessage = async ({ const isPrivateChat = msg.chat.type === "private"; const messageThreadId = (msg as { message_thread_id?: number }).message_thread_id; + const draftThreadId = replyThreadId ?? messageThreadId; const draftMaxChars = Math.min(textLimit, 4096); const canStreamDraft = streamMode !== "off" && isPrivateChat && - typeof messageThreadId === "number" && + typeof draftThreadId === "number" && (await resolveBotTopicsEnabled(primaryCtx)); const draftStream = canStreamDraft ? createTelegramDraftStream({ @@ -82,7 +83,7 @@ export const dispatchTelegramMessage = async ({ chatId, draftId: msg.message_id || Date.now(), maxChars: draftMaxChars, - messageThreadId: replyThreadId, + messageThreadId: draftThreadId, log: logVerbose, warn: logVerbose, }) diff --git a/src/telegram/draft-stream.ts b/src/telegram/draft-stream.ts index 4eb121e42..194db7170 100644 --- a/src/telegram/draft-stream.ts +++ b/src/telegram/draft-stream.ts @@ -74,13 +74,17 @@ export function createTelegramDraftStream(params: { return; } const text = pendingText; - pendingText = ""; - if (!text.trim()) { + const trimmed = text.trim(); + if (!trimmed) { + if (pendingText === text) { + pendingText = ""; + } if (pendingText) { schedule(); } return; } + pendingText = ""; inFlight = true; try { await sendDraft(text);