feat(provider): 🚀 implements all send media to venom provider

This commit is contained in:
aurik3
2023-01-25 16:10:13 -05:00
parent 14d1a61fa2
commit 9dd7c02b6a

View File

@@ -2,18 +2,20 @@ const { ProviderClass } = require('@bot-whatsapp/bot')
const venom = require('venom-bot') const venom = require('venom-bot')
const { createWriteStream } = require('fs') const { createWriteStream } = require('fs')
const { Console } = require('console') const { Console } = require('console')
const mime = require('mime-types')
const { const {
venomCleanNumber, venomCleanNumber,
venomGenerateImage, venomGenerateImage,
venomisValidNumber, venomisValidNumber,
venomDownloadMedia,
} = require('./utils') } = require('./utils')
const logger = new Console({ const logger = new Console({
stdout: createWriteStream(`${process.cwd()}/venom.log`), stdout: createWriteStream(`${process.cwd()}/venom.log`),
}) })
const { generalDownload } = require('../../common/download')
/** /**
* ⚙️ VenomProvider: Es una clase tipo adaptor * ⚙️ VenomProvider: Es una clase tipo adaptor
* que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas) * que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas)
@@ -134,6 +136,53 @@ class VenomProvider extends ProviderClass {
// return this.vendor.sendButtons(number, "Title", buttons1, "Description"); // return this.vendor.sendButtons(number, "Title", buttons1, "Description");
} }
/**
* Enviar audio
* @alpha
* @param {string} number
* @param {string} message
* @param {boolean} voiceNote optional
* @example await sendMessage('+XXXXXXXXXXX', 'audio.mp3')
*/
sendAudio = async (number, audioPath, voiceNote = false) => {
return this.vendor.sendVoice(number, audioPath)
}
/**
* Enviar imagen
* @param {*} number
* @param {*} imageUrl
* @param {*} text
* @returns
*/
sendImage = async (number, filePath, text) => {
return this.vendor.sendImage(number, filePath, 'image-name', text)
}
/**
*
* @param {string} number
* @param {string} filePath
* @example await sendMessage('+XXXXXXXXXXX', './document/file.pdf')
*/
sendFile = async (number, filePath, text) => {
const fileName = filePath.split('/').pop()
return this.vendor.sendFile(number, filePath, fileName, text)
}
/**
* Enviar video
* @param {*} number
* @param {*} imageUrl
* @param {*} text
* @returns
*/
sendVideo = async (number, filePath, text) => {
return this.vendor.sendVideoAsGif(number, filePath, 'video.gif', text)
}
/** /**
* Enviar imagen o multimedia * Enviar imagen o multimedia
* @param {*} number * @param {*} number
@@ -141,10 +190,18 @@ class VenomProvider extends ProviderClass {
* @param {*} message * @param {*} message
* @returns * @returns
*/ */
sendMedia = async (number, mediaInput, message) => { sendMedia = async (number, mediaUrl, text) => {
if (!mediaInput) throw new Error(`NO_SE_ENCONTRO: ${mediaInput}`) const fileDownloaded = await generalDownload(mediaUrl)
const fileDownloaded = await venomDownloadMedia(mediaInput) const mimeType = mime.lookup(fileDownloaded)
return this.vendor.sendImage(number, fileDownloaded, '.', message)
if (mimeType.includes('image'))
return this.sendImage(number, fileDownloaded, text)
if (mimeType.includes('video'))
return this.sendVideo(number, fileDownloaded, text)
if (mimeType.includes('audio'))
return this.sendAudio(number, fileDownloaded)
return this.sendFile(number, fileDownloaded, text)
} }
/** /**