File tree Expand file tree Collapse file tree 1 file changed +22
-2
lines changed
src/api/integrations/channel/whatsapp Expand file tree Collapse file tree 1 file changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -2754,15 +2754,35 @@ export class BaileysStartupService extends ChannelStartupService {
27542754 imageBuffer = Buffer . from ( response . data , 'binary' ) ;
27552755 }
27562756
2757- const webpBuffer = await sharp ( imageBuffer ) . webp ( ) . toBuffer ( ) ;
2757+ const isAnimated = this . isAnimated ( image , imageBuffer ) ;
27582758
2759- return webpBuffer ;
2759+ if ( isAnimated ) {
2760+ return await sharp ( imageBuffer , { animated : true } ) . webp ( { quality : 80 } ) . toBuffer ( ) ;
2761+ } else {
2762+ return await sharp ( imageBuffer ) . webp ( ) . toBuffer ( ) ;
2763+ }
27602764 } catch ( error ) {
27612765 console . error ( 'Erro ao converter a imagem para WebP:' , error ) ;
27622766 throw error ;
27632767 }
27642768 }
27652769
2770+ private isAnimatedWebp ( buffer : Buffer ) : boolean {
2771+ if ( buffer . length < 12 ) return false ;
2772+
2773+ return buffer . indexOf ( Buffer . from ( 'ANIM' ) ) !== - 1 ;
2774+ }
2775+
2776+ private isAnimated ( image : string , buffer : Buffer ) : boolean {
2777+ const lowerCaseImage = image . toLowerCase ( ) ;
2778+
2779+ if ( lowerCaseImage . includes ( '.gif' ) ) return true ;
2780+
2781+ if ( lowerCaseImage . includes ( '.webp' ) ) return this . isAnimatedWebp ( buffer ) ;
2782+
2783+ return false ;
2784+ }
2785+
27662786 public async mediaSticker ( data : SendStickerDto , file ?: any ) {
27672787 const mediaData : SendStickerDto = { ...data } ;
27682788
You can’t perform that action at this time.
0 commit comments