File tree Expand file tree Collapse file tree 1 file changed +24
-3
lines changed
src/api/integrations/channel/whatsapp Expand file tree Collapse file tree 1 file changed +24
-3
lines changed Original file line number Diff line number Diff line change @@ -2348,15 +2348,36 @@ export class BaileysStartupService extends ChannelStartupService {
23482348 imageBuffer = Buffer . from ( response . data , 'binary' ) ;
23492349 }
23502350
2351- const webpBuffer = await sharp ( imageBuffer ) . webp ( ) . toBuffer ( ) ;
2352-
2353- return webpBuffer ;
2351+ const isAnimated = image . includes ( '.gif' ) ||
2352+ ( image . includes ( '.webp' ) && this . isAnimatedWebp ( imageBuffer ) ) ;
2353+
2354+ if ( isAnimated ) {
2355+ return await sharp ( imageBuffer , { animated : true } )
2356+ . webp ( { quality : 80 , animated : true } )
2357+ . toBuffer ( ) ;
2358+ } else {
2359+ return await sharp ( imageBuffer ) . webp ( ) . toBuffer ( ) ;
2360+ }
23542361 } catch ( error ) {
23552362 console . error ( 'Erro ao converter a imagem para WebP:' , error ) ;
23562363 throw error ;
23572364 }
23582365 }
23592366
2367+ private isAnimatedWebp ( buffer : Buffer ) : boolean {
2368+ if ( buffer . length < 12 ) return false ;
2369+
2370+ for ( let i = 0 ; i < buffer . length - 4 ; i ++ ) {
2371+ if ( buffer [ i ] === 0x41 && // 'A'
2372+ buffer [ i + 1 ] === 0x4E && // 'N'
2373+ buffer [ i + 2 ] === 0x49 && // 'I'
2374+ buffer [ i + 3 ] === 0x4D ) { // 'M'
2375+ return true ;
2376+ }
2377+ }
2378+ return false ;
2379+ }
2380+
23602381 public async mediaSticker ( data : SendStickerDto , file ?: any ) {
23612382 const mediaData : SendStickerDto = { ...data } ;
23622383
You can’t perform that action at this time.
0 commit comments