feat: media-send pacing na élke send (niet alleen tussen pagina's)
MEDIA_SEND_DELAY_MS pauzeert nu centraal in sendImageMessage ná elke media-send, zodat ook afbeeldingen naar verschillende ontvangers niet overlappen in de ene chromium-tab (staged-ghost race-risico). Per-pagina delay uit messageHandler verwijderd.
This commit is contained in:
parent
4360a0f46e
commit
7673239933
5 changed files with 83 additions and 20 deletions
|
|
@ -68,20 +68,16 @@ async function handleWebhook(payload) {
|
|||
return
|
||||
}
|
||||
|
||||
// Pacing gebeurt nu centraal in sendImageMessage (na élke media-send), zodat óók
|
||||
// afbeeldingen naar verschillende ontvangers niet overlappen in de ene chromium-tab.
|
||||
const pngPaths = getPngFilePaths(dienst)
|
||||
if (!pngPaths || pngPaths.length === 0) {
|
||||
await sendTextMessage(author, `Geen pagina's gevonden voor dienst ${dienstnummer}.`)
|
||||
return
|
||||
}
|
||||
|
||||
// Defensieve spreiding tussen pagina's (niet vóór de eerste): verlaagt de kans op
|
||||
// gelijktijdige storage/upload-conflicten in de wwebjs-media-pipeline.
|
||||
const mediaSendDelayMs = parseInt(process.env.MEDIA_SEND_DELAY_MS, 10) || 500
|
||||
for (let i = 0; i < pngPaths.length; i++) {
|
||||
const pngPath = pngPaths[i]
|
||||
if (i > 0 && mediaSendDelayMs > 0) {
|
||||
await new Promise(resolve => setTimeout(resolve, mediaSendDelayMs))
|
||||
}
|
||||
const filename = pngPath.split('/').pop()
|
||||
try {
|
||||
await sendImageMessage(author, pngPath, filename)
|
||||
|
|
|
|||
|
|
@ -71,6 +71,14 @@ async function sendImageMessage(chatId, filePath, filename) {
|
|||
})
|
||||
const messageId = response.data?.message?._data?.id?.id
|
||||
registerSend(messageId, chatId, filename)
|
||||
// Pacing na élke media-send: de wwebjs-media-pipeline is EEN chromium-tab. Twee
|
||||
// opeenvolgende media-sends (pagina's van één dienst óf afbeeldingen naar
|
||||
// verschillende ontvangers) mogen niet overlappen — dat veroorzaakt de staged-
|
||||
// ghost-race (2e send verliest). Wacht dus altijd MEDIA_SEND_DELAY_MS ná een send.
|
||||
const mediaSendDelayMs = parseInt(process.env.MEDIA_SEND_DELAY_MS, 10) || 500
|
||||
if (mediaSendDelayMs > 0) {
|
||||
await sleep(mediaSendDelayMs)
|
||||
}
|
||||
return response.data
|
||||
}, `sendImageMessage ${filename} to ${chatId}`)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue