@@ -1145,6 +1145,27 @@ export class BaileysStartupService extends ChannelStartupService {
11451145 ) ;
11461146
11471147 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+ }
11481169 }
11491170 }
11501171
@@ -3940,6 +3961,16 @@ export class BaileysStartupService extends ChannelStartupService {
39403961 }
39413962
39423963 try {
3964+ const oldMessage : any = await this . getMessage ( data . key , true ) ;
3965+ if ( ! oldMessage ) throw new NotFoundException ( 'Message not found' ) ;
3966+ if ( oldMessage ?. key ?. remoteJid !== jid ) {
3967+ throw new BadRequestException ( 'RemoteJid does not match' ) ;
3968+ }
3969+ if ( oldMessage ?. messageTimestamp > Date . now ( ) + 900000 ) {
3970+ // 15 minutes in milliseconds
3971+ throw new BadRequestException ( 'Message is older than 15 minutes' ) ;
3972+ }
3973+
39433974 const response = await this . client . sendMessage ( jid , {
39443975 ...( options as any ) ,
39453976 edit : data . key ,
@@ -3963,15 +3994,17 @@ export class BaileysStartupService extends ChannelStartupService {
39633994 if ( ( message . key . valueOf ( ) as any ) ?. deleted ) {
39643995 new BadRequestException ( 'You cannot edit deleted messages' ) ;
39653996 }
3966-
3967- const updateMessage = this . prepareMessage ( { ...response } ) ;
3997+ if ( oldMessage . messageType === 'conversation' || oldMessage . messageType === 'extendedTextMessage' ) {
3998+ oldMessage . message . conversation = data . text ;
3999+ } else {
4000+ oldMessage . message [ oldMessage . messageType ] . caption = data . text ;
4001+ }
39684002 message = await this . prismaRepository . message . update ( {
39694003 where : { id : message . id } ,
39704004 data : {
3971- message : {
3972- ...updateMessage ?. message ?. [ updateMessage . messageType ] ?. editedMessage ,
3973- } ,
4005+ message : oldMessage . message ,
39744006 status : 'EDITED' ,
4007+ messageTimestamp : Math . floor ( Date . now ( ) / 1000 ) , // Convert to int32 by dividing by 1000 to get seconds
39754008 } ,
39764009 } ) ;
39774010 const messageUpdate : any = {
0 commit comments