bot: pauze tussen pagina-sends (PAGE_SEND_DELAY_MS) tegen staged-ghost-race

This commit is contained in:
Eddy de Vink 2026-10-05 17:24:37 +02:00
commit b1b6137d8a
4 changed files with 59 additions and 8 deletions

View file

@ -3,6 +3,21 @@ const { sendTextMessage, sendImageMessage, notifyAdmin, sendChatSeen } = require
const { checkLimit, increment, MAX_REQUESTS_PER_DAY } = require('./rateLimiter')
const { increment: incrementDaily } = require('./dailyStats')
// Pauze tussen opeenvolgende pagina-sends. De staged-ghost-race (RCA 2026-09-26)
// treedt op als de 2e pagina start terwijl de 1e nog écht transmetteert — de bot
// wacht per pagina alleen op het optimistische brug-signaal (staging), en de
// bridge-delay (MEDIA_SEND_DELAY_MS) wacht óók op staging (delay loss effect).
// Een bot-side wacht maakt van elke pagina een effectief losse send: die komen
// empirisch wél aan (enkele sends falen nooit).
const PAGE_SEND_DELAY_MS = (() => {
const parsed = parseInt(process.env.PAGE_SEND_DELAY_MS, 10)
return Number.isFinite(parsed) && parsed >= 0 ? parsed : 15000
})()
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
const ALLOWED_GROUP = process.env.ALLOWED_GROUP
const ALLOWED_GROUP_NAMES = (process.env.ALLOWED_GROUP_NAME || '')
.split(',')
@ -78,6 +93,11 @@ async function handleWebhook(payload) {
console.error(errorMsg)
await notifyAdmin(errorMsg)
}
// Wacht vóór de volgende pagina zodat de echte transmissie van deze pagina
// klaar is (staged-ghost-race RCA) — 0 zet de pauze uit.
if (i < pngPaths.length - 1 && PAGE_SEND_DELAY_MS > 0) {
await sleep(PAGE_SEND_DELAY_MS)
}
}
}