@@ -1389,50 +1389,49 @@ export class BaileysStartupService extends ChannelStartupService {
13891389 try {
13901390 if ( isVideo && ! this . configService . get < S3 > ( 'S3' ) . SAVE_VIDEO ) {
13911391 this . logger . warn ( 'Video upload is disabled. Skipping video upload.' ) ;
1392- // Skip video upload by returning early from this block
1393- return ;
1394- }
1395-
1396- const message : any = received ;
1397-
1398- // Verificação adicional para garantir que há conteúdo de mídia real
1399- const hasRealMedia = this . hasValidMediaContent ( message ) ;
1400-
1401- if ( ! hasRealMedia ) {
1402- this . logger . warn ( 'Message detected as media but contains no valid media content' ) ;
14031392 } else {
1404- const media = await this . getBase64FromMediaMessage ( { message } , true ) ;
1405-
1406- if ( ! media ) {
1407- this . logger . verbose ( 'No valid media to upload (messageContextInfo only), skipping MinIO' ) ;
1408- return ;
1393+ const message : any = received ;
1394+
1395+ // Verificação adicional para garantir que há conteúdo de mídia real
1396+ const hasRealMedia = this . hasValidMediaContent ( message ) ;
1397+
1398+ if ( ! hasRealMedia ) {
1399+ this . logger . warn ( 'Message detected as media but contains no valid media content' ) ;
1400+ } else {
1401+ const media = await this . getBase64FromMediaMessage ( { message } , true ) ;
1402+
1403+ if ( ! media ) {
1404+ this . logger . verbose ( 'No valid media to upload (messageContextInfo only), skipping MinIO' ) ;
1405+ } else {
1406+ const { buffer, mediaType, fileName, size } = media ;
1407+ const mimetype = mimeTypes . lookup ( fileName ) . toString ( ) ;
1408+ const fullName = join (
1409+ `${ this . instance . id } ` ,
1410+ received . key . remoteJid ,
1411+ mediaType ,
1412+ `${ Date . now ( ) } _${ fileName } ` ,
1413+ ) ;
1414+ await s3Service . uploadFile ( fullName , buffer , size . fileLength ?. low , {
1415+ 'Content-Type' : mimetype ,
1416+ } ) ;
1417+
1418+ await this . prismaRepository . media . create ( {
1419+ data : {
1420+ messageId : msg . id ,
1421+ instanceId : this . instanceId ,
1422+ type : mediaType ,
1423+ fileName : fullName ,
1424+ mimetype,
1425+ } ,
1426+ } ) ;
1427+
1428+ const mediaUrl = await s3Service . getObjectUrl ( fullName ) ;
1429+
1430+ messageRaw . message . mediaUrl = mediaUrl ;
1431+
1432+ await this . prismaRepository . message . update ( { where : { id : msg . id } , data : messageRaw } ) ;
1433+ }
14091434 }
1410-
1411- const { buffer, mediaType, fileName, size } = media ;
1412- const mimetype = mimeTypes . lookup ( fileName ) . toString ( ) ;
1413- const fullName = join (
1414- `${ this . instance . id } ` ,
1415- received . key . remoteJid ,
1416- mediaType ,
1417- `${ Date . now ( ) } _${ fileName } ` ,
1418- ) ;
1419- await s3Service . uploadFile ( fullName , buffer , size . fileLength ?. low , { 'Content-Type' : mimetype } ) ;
1420-
1421- await this . prismaRepository . media . create ( {
1422- data : {
1423- messageId : msg . id ,
1424- instanceId : this . instanceId ,
1425- type : mediaType ,
1426- fileName : fullName ,
1427- mimetype,
1428- } ,
1429- } ) ;
1430-
1431- const mediaUrl = await s3Service . getObjectUrl ( fullName ) ;
1432-
1433- messageRaw . message . mediaUrl = mediaUrl ;
1434-
1435- await this . prismaRepository . message . update ( { where : { id : msg . id } , data : messageRaw } ) ;
14361435 }
14371436 } catch ( error ) {
14381437 this . logger . error ( [ 'Error on upload file to minio' , error ?. message , error ?. stack ] ) ;
@@ -1480,7 +1479,11 @@ export class BaileysStartupService extends ChannelStartupService {
14801479 }
14811480 console . log ( messageRaw ) ;
14821481
1483- this . sendDataWebhook ( Events . MESSAGES_UPSERT , messageRaw ) ;
1482+ await this . sendDataWebhook ( Events . MESSAGES_UPSERT , messageRaw ) ;
1483+
1484+ if ( messageRaw . messageType === 'audioMessage' && ! messageRaw . key . fromMe && messageRaw . key . id ) {
1485+ await this . baileysCache . set ( `upsert_emitted_${ this . instanceId } _${ messageRaw . key . id } ` , true , 60 * 10 ) ;
1486+ }
14841487
14851488 await chatbotController . emit ( {
14861489 instance : { instanceName : this . instance . name , instanceId : this . instanceId } ,
@@ -1649,6 +1652,37 @@ export class BaileysStartupService extends ChannelStartupService {
16491652 this . logger . warn ( `Original message not found for update. Skipping. Key: ${ JSON . stringify ( key ) } ` ) ;
16501653 continue ;
16511654 }
1655+
1656+ if ( ! key . fromMe && findMessage . messageType === 'audioMessage' && key . id ) {
1657+ const upsertCacheKey = `upsert_emitted_${ this . instanceId } _${ key . id } ` ;
1658+ const alreadyEmitted = await this . baileysCache . get ( upsertCacheKey ) ;
1659+
1660+ if ( ! alreadyEmitted ) {
1661+ const fallbackUpsertPayload = {
1662+ key : findMessage . key ,
1663+ pushName : findMessage . pushName ,
1664+ status : findMessage . status ,
1665+ message : findMessage . message ,
1666+ contextInfo : findMessage . contextInfo ,
1667+ messageType : findMessage . messageType ,
1668+ messageTimestamp : findMessage . messageTimestamp ,
1669+ instanceId : findMessage . instanceId ,
1670+ source : findMessage . source ,
1671+ } ;
1672+
1673+ try {
1674+ await this . sendDataWebhook ( Events . MESSAGES_UPSERT , fallbackUpsertPayload ) ;
1675+ await this . baileysCache . set ( upsertCacheKey , true , 60 * 10 ) ;
1676+ this . logger . warn ( `Fallback messages.upsert emitted for audio message ${ key . id } ` ) ;
1677+ } catch ( error ) {
1678+ this . logger . error ( [
1679+ `Failed to emit fallback messages.upsert for audio message ${ key . id } ` ,
1680+ error ?. message ,
1681+ ] ) ;
1682+ }
1683+ }
1684+ }
1685+
16521686 message . messageId = findMessage . id ;
16531687 }
16541688
0 commit comments