@@ -1135,37 +1135,39 @@ export class BaileysStartupService extends ChannelStartupService {
11351135 const editedMessage =
11361136 received ?. message ?. protocolMessage || received ?. message ?. editedMessage ?. message ?. protocolMessage ;
11371137
1138- if ( received . message ?. protocolMessage ?. editedMessage || received . message ?. editedMessage ?. message ) {
1139- if ( editedMessage ) {
1140- if ( this . configService . get < Chatwoot > ( 'CHATWOOT' ) . ENABLED && this . localChatwoot ?. enabled )
1141- this . chatwootService . eventWhatsapp (
1142- 'messages.edit' ,
1143- { instanceName : this . instance . name , instanceId : this . instance . id } ,
1144- editedMessage ,
1145- ) ;
1138+ if ( received . message ?. protocolMessage ?. editedMessage && editedMessage ) {
1139+ if ( this . configService . get < Chatwoot > ( 'CHATWOOT' ) . ENABLED && this . localChatwoot ?. enabled )
1140+ this . chatwootService . eventWhatsapp (
1141+ 'messages.edit' ,
1142+ { instanceName : this . instance . name , instanceId : this . instance . id } ,
1143+ editedMessage ,
1144+ ) ;
11461145
1147- await this . sendDataWebhook ( Events . MESSAGES_EDITED , editedMessage ) ;
1148- const oldMessage = await this . getMessage ( editedMessage . key , true ) ;
1149- if ( ( oldMessage as any ) ?. id ) {
1150- await this . prismaRepository . message . update ( {
1151- where : { id : ( oldMessage as any ) . id } ,
1152- data : {
1153- message : editedMessage . editedMessage as any ,
1154- messageTimestamp : ( editedMessage . timestampMs as Long . Long ) . toNumber ( ) ,
1155- status : 'EDITED' ,
1156- } ,
1157- } ) ;
1158- await this . prismaRepository . messageUpdate . create ( {
1159- data : {
1160- fromMe : editedMessage . key . fromMe ,
1161- keyId : editedMessage . key . id ,
1162- remoteJid : editedMessage . key . remoteJid ,
1163- status : 'EDITED' ,
1164- instanceId : this . instanceId ,
1165- messageId : ( oldMessage as any ) . id ,
1166- } ,
1167- } ) ;
1168- }
1146+ await this . sendDataWebhook ( Events . MESSAGES_EDITED , editedMessage ) ;
1147+ const oldMessage = await this . getMessage ( editedMessage . key , true ) ;
1148+ if ( ( oldMessage as any ) ?. id ) {
1149+ const editedMessageTimestamp = Long . isLong ( editedMessage ?. timestampMs )
1150+ ? editedMessage . timestampMs ?. toNumber ( )
1151+ : ( editedMessage . timestampMs as number ) ;
1152+
1153+ await this . prismaRepository . message . update ( {
1154+ where : { id : ( oldMessage as any ) . id } ,
1155+ data : {
1156+ message : editedMessage . editedMessage as any ,
1157+ messageTimestamp : editedMessageTimestamp ,
1158+ status : 'EDITED' ,
1159+ } ,
1160+ } ) ;
1161+ await this . prismaRepository . messageUpdate . create ( {
1162+ data : {
1163+ fromMe : editedMessage . key . fromMe ,
1164+ keyId : editedMessage . key . id ,
1165+ remoteJid : editedMessage . key . remoteJid ,
1166+ status : 'EDITED' ,
1167+ instanceId : this . instanceId ,
1168+ messageId : ( oldMessage as any ) . id ,
1169+ } ,
1170+ } ) ;
11691171 }
11701172 }
11711173
@@ -3972,71 +3974,71 @@ export class BaileysStartupService extends ChannelStartupService {
39723974 throw new BadRequestException ( 'Message is older than 15 minutes' ) ;
39733975 }
39743976
3975- const response = await this . client . sendMessage ( jid , {
3977+ const messageSent = await this . client . sendMessage ( jid , {
39763978 ...( options as any ) ,
39773979 edit : data . key ,
39783980 } ) ;
3979- if ( response ) {
3980- const messageId = response . message ?. protocolMessage ?. key ?. id ;
3981- if ( messageId ) {
3982- let message = await this . prismaRepository . message . findFirst ( {
3983- where : {
3984- key : {
3985- path : [ 'id' ] ,
3986- equals : messageId ,
3981+ if ( messageSent ) {
3982+ const editedMessage =
3983+ messageSent ?. message ?. protocolMessage || messageSent ?. message ?. editedMessage ?. message ?. protocolMessage ;
3984+
3985+ if ( editedMessage ) {
3986+ this . sendDataWebhook ( Events . SEND_MESSAGE_UPDATE , editedMessage ) ;
3987+ if ( this . configService . get < Chatwoot > ( 'CHATWOOT' ) . ENABLED && this . localChatwoot ?. enabled )
3988+ this . chatwootService . eventWhatsapp (
3989+ 'send.message.update' ,
3990+ { instanceName : this . instance . name , instanceId : this . instance . id } ,
3991+ editedMessage ,
3992+ ) ;
3993+
3994+ const messageId = messageSent . message ?. protocolMessage ?. key ?. id ;
3995+ if ( messageId ) {
3996+ let message = await this . prismaRepository . message . findFirst ( {
3997+ where : {
3998+ key : {
3999+ path : [ 'id' ] ,
4000+ equals : messageId ,
4001+ } ,
39874002 } ,
3988- } ,
3989- } ) ;
3990- if ( ! message ) throw new NotFoundException ( 'Message not found' ) ;
4003+ } ) ;
4004+ if ( ! message ) throw new NotFoundException ( 'Message not found' ) ;
39914005
3992- if ( ! ( message . key . valueOf ( ) as any ) . fromMe ) {
3993- new BadRequestException ( 'You cannot edit others messages' ) ;
3994- }
3995- if ( ( message . key . valueOf ( ) as any ) ?. deleted ) {
3996- new BadRequestException ( 'You cannot edit deleted messages' ) ;
3997- }
3998- if ( oldMessage . messageType === 'conversation' || oldMessage . messageType === 'extendedTextMessage' ) {
3999- oldMessage . message . conversation = data . text ;
4000- } else {
4001- oldMessage . message [ oldMessage . messageType ] . caption = data . text ;
4002- }
4003- message = await this . prismaRepository . message . update ( {
4004- where : { id : message . id } ,
4005- data : {
4006- message : oldMessage . message ,
4006+ if ( ! ( message . key . valueOf ( ) as any ) . fromMe ) {
4007+ new BadRequestException ( 'You cannot edit others messages' ) ;
4008+ }
4009+ if ( ( message . key . valueOf ( ) as any ) ?. deleted ) {
4010+ new BadRequestException ( 'You cannot edit deleted messages' ) ;
4011+ }
4012+ if ( oldMessage . messageType === 'conversation' || oldMessage . messageType === 'extendedTextMessage' ) {
4013+ oldMessage . message . conversation = data . text ;
4014+ } else {
4015+ oldMessage . message [ oldMessage . messageType ] . caption = data . text ;
4016+ }
4017+ message = await this . prismaRepository . message . update ( {
4018+ where : { id : message . id } ,
4019+ data : {
4020+ message : oldMessage . message ,
4021+ status : 'EDITED' ,
4022+ messageTimestamp : Math . floor ( Date . now ( ) / 1000 ) , // Convert to int32 by dividing by 1000 to get seconds
4023+ } ,
4024+ } ) ;
4025+ const messageUpdate : any = {
4026+ messageId : message . id ,
4027+ keyId : messageId ,
4028+ remoteJid : messageSent . key . remoteJid ,
4029+ fromMe : messageSent . key . fromMe ,
4030+ participant : messageSent . key ?. remoteJid ,
40074031 status : 'EDITED' ,
4008- messageTimestamp : Math . floor ( Date . now ( ) / 1000 ) , // Convert to int32 by dividing by 1000 to get seconds
4009- } ,
4010- } ) ;
4011- const messageUpdate : any = {
4012- messageId : message . id ,
4013- keyId : messageId ,
4014- remoteJid : response . key . remoteJid ,
4015- fromMe : response . key . fromMe ,
4016- participant : response . key ?. remoteJid ,
4017- status : 'EDITED' ,
4018- instanceId : this . instanceId ,
4019- } ;
4020- await this . prismaRepository . messageUpdate . create ( {
4021- data : messageUpdate ,
4022- } ) ;
4023-
4024- this . sendDataWebhook ( Events . MESSAGES_EDITED , {
4025- id : message . id ,
4026- instanceId : message . instanceId ,
4027- key : message . key ,
4028- messageType : message . messageType ,
4029- status : 'EDITED' ,
4030- source : message . source ,
4031- messageTimestamp : message . messageTimestamp ,
4032- pushName : message . pushName ,
4033- participant : message . participant ,
4034- message : message . message ,
4035- } ) ;
4032+ instanceId : this . instanceId ,
4033+ } ;
4034+ await this . prismaRepository . messageUpdate . create ( {
4035+ data : messageUpdate ,
4036+ } ) ;
4037+ }
40364038 }
40374039 }
40384040
4039- return response ;
4041+ return messageSent ;
40404042 } catch ( error ) {
40414043 this . logger . error ( error ) ;
40424044 throw error ;
0 commit comments