mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 20:49:15 +00:00
feat(provider): 🚀 send file wwebjs
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
const { Client, LocalAuth, MessageMedia, Buttons } = require('whatsapp-web.js')
|
const { Client, LocalAuth, MessageMedia, Buttons } = require('whatsapp-web.js')
|
||||||
const { ProviderClass } = require('@bot-whatsapp/bot')
|
const { ProviderClass } = require('@bot-whatsapp/bot')
|
||||||
const { Console } = require('console')
|
const { Console } = require('console')
|
||||||
const { createWriteStream } = require('fs')
|
const { createWriteStream, readFileSync } = require('fs')
|
||||||
const {
|
const {
|
||||||
wwebCleanNumber,
|
wwebCleanNumber,
|
||||||
wwebDownloadMedia,
|
wwebDownloadMedia,
|
||||||
@@ -13,6 +13,9 @@ const logger = new Console({
|
|||||||
stdout: createWriteStream('./log'),
|
stdout: createWriteStream('./log'),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const { generalDownload } = require('../../common/download')
|
||||||
|
const mime = require('mime-types')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ⚙️ WebWhatsappProvider: Es una clase tipo adaptor
|
* ⚙️ WebWhatsappProvider: 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)
|
||||||
@@ -35,6 +38,7 @@ class WebWhatsappProvider extends ProviderClass {
|
|||||||
'--disable-setuid-sandbox',
|
'--disable-setuid-sandbox',
|
||||||
'--unhandled-rejections=strict',
|
'--unhandled-rejections=strict',
|
||||||
],
|
],
|
||||||
|
//executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -103,23 +107,6 @@ class WebWhatsappProvider extends ProviderClass {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
/**
|
|
||||||
* Enviar un archivo multimedia
|
|
||||||
* https://docs.wwebjs.dev/MessageMedia.html
|
|
||||||
* @private
|
|
||||||
* @param {*} number
|
|
||||||
* @param {*} mediaInput
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
sendMedia = async (number, mediaInput = null) => {
|
|
||||||
if (!mediaInput) throw new Error(`NO_SE_ENCONTRO: ${mediaInput}`)
|
|
||||||
const fileDownloaded = await wwebDownloadMedia(mediaInput)
|
|
||||||
const media = MessageMedia.fromFilePath(fileDownloaded)
|
|
||||||
return this.vendor.sendMessage(number, media, {
|
|
||||||
sendAudioAsVoice: true,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enviar botones
|
* Enviar botones
|
||||||
* https://docs.wwebjs.dev/Buttons.html
|
* https://docs.wwebjs.dev/Buttons.html
|
||||||
@@ -170,6 +157,105 @@ class WebWhatsappProvider extends ProviderClass {
|
|||||||
return this.vendor.sendMessage(number, message)
|
return this.vendor.sendMessage(number, message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enviar imagen
|
||||||
|
* @param {*} number
|
||||||
|
* @param {*} imageUrl
|
||||||
|
* @param {*} text
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
sendImage = async (number, filePath, text) => {
|
||||||
|
const base64 = readFileSync(filePath, { encoding: 'base64' })
|
||||||
|
const mimeType = mime.lookup(filePath)
|
||||||
|
const media = new MessageMedia(mimeType, base64)
|
||||||
|
return this.vendor.sendMessage(number, media, text)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enviar audio
|
||||||
|
* @param {*} number
|
||||||
|
* @param {*} imageUrl
|
||||||
|
* @param {*} text
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Enviar audio
|
||||||
|
* @param {*} number
|
||||||
|
* @param {*} imageUrl
|
||||||
|
* @param {*} text
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
sendAudio = async (number, filePath, text) => {
|
||||||
|
const base64 = readFileSync(filePath, { encoding: 'base64' })
|
||||||
|
const mimeType = mime.lookup(filePath)
|
||||||
|
const media = new MessageMedia(mimeType, base64)
|
||||||
|
return this.vendor.sendMessage(number, media, text)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Enviar audio
|
||||||
|
* @param {*} number
|
||||||
|
* @param {*} imageUrl
|
||||||
|
* @param {*} text
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
sendAudio = async (number, filePath, text) => {
|
||||||
|
const base64 = readFileSync(filePath, { encoding: 'base64' })
|
||||||
|
const mimeType = mime.lookup(filePath)
|
||||||
|
const media = new MessageMedia(mimeType, base64)
|
||||||
|
return this.vendor.sendMessage(number, media, text)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enviar video
|
||||||
|
* @param {*} number
|
||||||
|
* @param {*} imageUrl
|
||||||
|
* @param {*} text
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
sendVideo = async (number, filePath) => {
|
||||||
|
const base64 = readFileSync(filePath, { encoding: 'base64' })
|
||||||
|
const mimeType = mime.lookup(filePath)
|
||||||
|
const media = new MessageMedia(mimeType, base64)
|
||||||
|
return this.vendor.sendMessage(number, media, {
|
||||||
|
sendMediaAsDocument: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enviar Arhivos/pdf
|
||||||
|
* @param {*} number
|
||||||
|
* @param {*} imageUrl
|
||||||
|
* @param {*} text
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
sendFile = async (number, filePath, text) => {
|
||||||
|
const base64 = readFileSync(filePath, { encoding: 'base64' })
|
||||||
|
const mimeType = mime.lookup(filePath)
|
||||||
|
const media = new MessageMedia(mimeType, base64)
|
||||||
|
return this.vendor.sendMessage(number, media, text)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enviar imagen o multimedia
|
||||||
|
* @param {*} number
|
||||||
|
* @param {*} mediaInput
|
||||||
|
* @param {*} message
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
sendMedia = async (number, mediaUrl, text) => {
|
||||||
|
const fileDownloaded = await generalDownload(mediaUrl)
|
||||||
|
const mimeType = mime.lookup(fileDownloaded)
|
||||||
|
|
||||||
|
if (mimeType.includes('image'))
|
||||||
|
return this.sendImage(number, fileDownloaded, text)
|
||||||
|
if (mimeType.includes('video'))
|
||||||
|
return this.sendVideo(number, fileDownloaded)
|
||||||
|
if (mimeType.includes('audio'))
|
||||||
|
return this.sendAudio(number, fileDownloaded)
|
||||||
|
|
||||||
|
return this.sendFile(number, fileDownloaded)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {*} userId
|
* @param {*} userId
|
||||||
|
|||||||
Reference in New Issue
Block a user