@@ -84,6 +84,7 @@ import {
8484 OnWhatsAppDto ,
8585 PrivacySettingDto ,
8686 ReadMessageDto ,
87+ SendPresenceDto ,
8788 WhatsAppNumberDto ,
8889} from '../dto/chat.dto' ;
8990import {
@@ -2460,6 +2461,38 @@ export class WAStartupService {
24602461 return this . stateConnection ;
24612462 }
24622463
2464+ public async sendPresence ( data : SendPresenceDto ) {
2465+ try {
2466+ const { number } = data ;
2467+
2468+ this . logger . verbose ( `Check if number "${ number } " is WhatsApp` ) ;
2469+ const isWA = ( await this . whatsappNumber ( { numbers : [ number ] } ) ) ?. shift ( ) ;
2470+
2471+ this . logger . verbose ( `Exists: "${ isWA . exists } " | jid: ${ isWA . jid } ` ) ;
2472+ if ( ! isWA . exists && ! isJidGroup ( isWA . jid ) && ! isWA . jid . includes ( '@broadcast' ) ) {
2473+ throw new BadRequestException ( isWA ) ;
2474+ }
2475+
2476+ const sender = isWA . jid ;
2477+
2478+ this . logger . verbose ( 'Sending presence' ) ;
2479+ await this . client . presenceSubscribe ( sender ) ;
2480+ this . logger . verbose ( 'Subscribing to presence' ) ;
2481+
2482+ await this . client . sendPresenceUpdate ( data . options ?. presence ?? 'composing' , sender ) ;
2483+ this . logger . verbose ( 'Sending presence update: ' + data . options ?. presence ?? 'composing' ) ;
2484+
2485+ await delay ( data . options . delay ) ;
2486+ this . logger . verbose ( 'Set delay: ' + data . options . delay ) ;
2487+
2488+ await this . client . sendPresenceUpdate ( 'paused' , sender ) ;
2489+ this . logger . verbose ( 'Sending presence update: paused' ) ;
2490+ } catch ( error ) {
2491+ this . logger . error ( error ) ;
2492+ throw new BadRequestException ( error . toString ( ) ) ;
2493+ }
2494+ }
2495+
24632496 // Send Message Controller
24642497 public async textMessage ( data : SendTextDto , isChatwoot = false ) {
24652498 this . logger . verbose ( 'Sending text message' ) ;
0 commit comments