@@ -84,6 +84,7 @@ import {
8484 OnWhatsAppDto ,
8585 PrivacySettingDto ,
8686 ReadMessageDto ,
87+ SendPresenceDto ,
8788 WhatsAppNumberDto ,
8889} from '../dto/chat.dto' ;
8990import {
@@ -2409,6 +2410,38 @@ export class WAStartupService {
24092410 return this . stateConnection ;
24102411 }
24112412
2413+ public async sendPresence ( data : SendPresenceDto ) {
2414+ try {
2415+ const { number } = data ;
2416+
2417+ this . logger . verbose ( `Check if number "${ number } " is WhatsApp` ) ;
2418+ const isWA = ( await this . whatsappNumber ( { numbers : [ number ] } ) ) ?. shift ( ) ;
2419+
2420+ this . logger . verbose ( `Exists: "${ isWA . exists } " | jid: ${ isWA . jid } ` ) ;
2421+ if ( ! isWA . exists && ! isJidGroup ( isWA . jid ) && ! isWA . jid . includes ( '@broadcast' ) ) {
2422+ throw new BadRequestException ( isWA ) ;
2423+ }
2424+
2425+ const sender = isWA . jid ;
2426+
2427+ this . logger . verbose ( 'Sending presence' ) ;
2428+ await this . client . presenceSubscribe ( sender ) ;
2429+ this . logger . verbose ( 'Subscribing to presence' ) ;
2430+
2431+ await this . client . sendPresenceUpdate ( data . options ?. presence ?? 'composing' , sender ) ;
2432+ this . logger . verbose ( 'Sending presence update: ' + data . options ?. presence ?? 'composing' ) ;
2433+
2434+ await delay ( data . options . delay ) ;
2435+ this . logger . verbose ( 'Set delay: ' + data . options . delay ) ;
2436+
2437+ await this . client . sendPresenceUpdate ( 'paused' , sender ) ;
2438+ this . logger . verbose ( 'Sending presence update: paused' ) ;
2439+ } catch ( error ) {
2440+ this . logger . error ( error ) ;
2441+ throw new BadRequestException ( error . toString ( ) ) ;
2442+ }
2443+ }
2444+
24122445 // Send Message Controller
24132446 public async textMessage ( data : SendTextDto , isChatwoot = false ) {
24142447 this . logger . verbose ( 'Sending text message' ) ;
0 commit comments