From bca5ec648277396921824353712b92f11800e6b5 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Wed, 28 Feb 2024 13:47:32 -0300 Subject: [PATCH] fix: writing over 20s now loops until finished --- .../services/whatsapp.baileys.service.ts | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/whatsapp/services/whatsapp.baileys.service.ts b/src/whatsapp/services/whatsapp.baileys.service.ts index 0fc4f541..9989fd3d 100644 --- a/src/whatsapp/services/whatsapp.baileys.service.ts +++ b/src/whatsapp/services/whatsapp.baileys.service.ts @@ -32,6 +32,7 @@ import makeWASocket, { WAMediaUpload, WAMessage, WAMessageUpdate, + WAPresence, WASocket, } from '@whiskeysockets/baileys'; import { Label } from '@whiskeysockets/baileys/lib/Types/Label'; @@ -1622,17 +1623,37 @@ export class BaileysStartupService extends WAStartupService { if (options?.delay) { this.logger.verbose('Delaying message'); - await this.client.presenceSubscribe(sender); - this.logger.verbose('Subscribing to presence'); + if (options.delay > 20000) { + let remainingDelay = options.delay; + while (remainingDelay > 20000) { + await this.client.presenceSubscribe(sender); - await this.client.sendPresenceUpdate(options?.presence ?? 'composing', sender); - this.logger.verbose('Sending presence update: ' + options?.presence ?? 'composing'); + await this.client.sendPresenceUpdate((options.presence as WAPresence) ?? 'composing', sender); - await delay(options.delay); - this.logger.verbose('Set delay: ' + options.delay); + await delay(20000); - await this.client.sendPresenceUpdate('paused', sender); - this.logger.verbose('Sending presence update: paused'); + await this.client.sendPresenceUpdate('paused', sender); + + remainingDelay -= 20000; + } + if (remainingDelay > 0) { + await this.client.presenceSubscribe(sender); + + await this.client.sendPresenceUpdate((options.presence as WAPresence) ?? 'composing', sender); + + await delay(remainingDelay); + + await this.client.sendPresenceUpdate('paused', sender); + } + } else { + await this.client.presenceSubscribe(sender); + + await this.client.sendPresenceUpdate((options.presence as WAPresence) ?? 'composing', sender); + + await delay(options.delay); + + await this.client.sendPresenceUpdate('paused', sender); + } } const linkPreview = options?.linkPreview != false ? undefined : false;