fix: avoid duplicate replies with block streaming

This commit is contained in:
Peter Steinberger
2026-01-03 02:16:01 +01:00
parent 32877afe55
commit 3368fcf31e
3 changed files with 110 additions and 3 deletions

View File

@@ -1421,16 +1421,19 @@ export async function getReplyFromConfig(
const hasMedia = (payload.mediaUrls?.length ?? 0) > 0;
if (!cleaned && !hasMedia) return;
if (cleaned?.trim() === SILENT_REPLY_TOKEN && !hasMedia) return;
await startTypingOnText(cleaned);
const blockPayload: ReplyPayload = {
text: cleaned,
mediaUrls: payload.mediaUrls,
mediaUrl: payload.mediaUrls?.[0],
replyToId: tagResult.replyToId,
};
const task = Promise.resolve(opts.onBlockReply?.(blockPayload))
const payloadKey = buildPayloadKey(blockPayload);
const task = (async () => {
await startTypingOnText(cleaned);
await opts.onBlockReply?.(blockPayload);
})()
.then(() => {
streamedPayloadKeys.add(buildPayloadKey(blockPayload));
streamedPayloadKeys.add(payloadKey);
})
.catch((err) => {
logVerbose(`block reply delivery failed: ${String(err)}`);