diff --git a/CHANGELOG.md b/CHANGELOG.md index efe9c022a..3391626d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - Config: expose schema + UI hints for generic config forms (Web UI + future clients). ### Fixes +- Auto-reply: drop final payloads when block streaming to avoid duplicate Discord sends. - Telegram: chunk block-stream replies to avoid “message is too long” errors (#124) — thanks @mukhtharcm. - Block streaming: default to text_end and suppress duplicate block sends while in-flight. - Block streaming: drop final payloads after soft chunking to keep Discord order intact. diff --git a/src/auto-reply/reply.ts b/src/auto-reply/reply.ts index eb34dacab..6551322d1 100644 --- a/src/auto-reply/reply.ts +++ b/src/auto-reply/reply.ts @@ -2240,13 +2240,13 @@ export async function getReplyFromConfig( return; } pendingStreamedPayloadKeys.add(payloadKey); - didStreamBlockReply = true; const task = (async () => { await startTypingOnText(cleaned); await opts.onBlockReply?.(blockPayload); })() .then(() => { streamedPayloadKeys.add(payloadKey); + didStreamBlockReply = true; }) .catch((err) => { logVerbose(`block reply delivery failed: ${String(err)}`); @@ -2348,7 +2348,7 @@ export async function getReplyFromConfig( ); const shouldDropFinalPayloads = - blockStreamingEnabled && blockReplyChunking && didStreamBlockReply; + blockStreamingEnabled && didStreamBlockReply; const filteredPayloads = shouldDropFinalPayloads ? [] : blockStreamingEnabled