mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 20:49:15 +00:00
fix(provider): 🔥 send message togther with media
fix(provider): 🔥 send message togther with media
This commit is contained in:
@@ -33,7 +33,7 @@ class BaileysProvider extends ProviderClass {
|
|||||||
/**
|
/**
|
||||||
* Iniciar todo Bailey
|
* Iniciar todo Bailey
|
||||||
*/
|
*/
|
||||||
async initBailey() {
|
initBailey = async () => {
|
||||||
const { state, saveCreds } = await useMultiFileAuthState('sessions')
|
const { state, saveCreds } = await useMultiFileAuthState('sessions')
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -135,9 +135,10 @@ class BaileysProvider extends ProviderClass {
|
|||||||
* @example await sendMessage('+XXXXXXXXXXX', 'https://dominio.com/imagen.jpg' | 'img/imagen.jpg')
|
* @example await sendMessage('+XXXXXXXXXXX', 'https://dominio.com/imagen.jpg' | 'img/imagen.jpg')
|
||||||
*/
|
*/
|
||||||
|
|
||||||
sendMedia = async (number, imageUrl) => {
|
sendMedia = async (number, imageUrl, text) => {
|
||||||
await this.vendor.sendMessage(number, {
|
await this.vendor.sendMessage(number, {
|
||||||
image: { url: imageUrl },
|
image: { url: imageUrl },
|
||||||
|
text,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,21 +167,6 @@ class BaileysProvider extends ProviderClass {
|
|||||||
sendText = async (number, message) => {
|
sendText = async (number, message) => {
|
||||||
return this.vendor.sendMessage(number, { text: message })
|
return this.vendor.sendMessage(number, { text: message })
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* TODO: Necesita terminar de implementar el sendMedia y sendButton guiarse:
|
|
||||||
* https://github.com/leifermendez/bot-whatsapp/blob/4e0fcbd8347f8a430adb43351b5415098a5d10df/packages/provider/src/web-whatsapp/index.js#L165
|
|
||||||
* @param {string} number
|
|
||||||
* @param {string} message
|
|
||||||
* @example await sendMessage('+XXXXXXXXXXX', 'Hello World')
|
|
||||||
*/
|
|
||||||
sendMessage = async (numberIn, message, { options }) => {
|
|
||||||
const number = baileyCleanNumber(numberIn)
|
|
||||||
|
|
||||||
// if (options?.buttons?.length)
|
|
||||||
// return this.sendButtons(number, message, options.buttons)
|
|
||||||
if (options?.media) return this.sendMedia(number, options.media)
|
|
||||||
return this.sendText(number, message)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -224,6 +210,23 @@ class BaileysProvider extends ProviderClass {
|
|||||||
|
|
||||||
await this.vendor.sendMessage(`${numberClean}@c.us`, buttonMessage)
|
await this.vendor.sendMessage(`${numberClean}@c.us`, buttonMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO: Necesita terminar de implementar el sendMedia y sendButton guiarse:
|
||||||
|
* https://github.com/leifermendez/bot-whatsapp/blob/4e0fcbd8347f8a430adb43351b5415098a5d10df/packages/provider/src/web-whatsapp/index.js#L165
|
||||||
|
* @param {string} number
|
||||||
|
* @param {string} message
|
||||||
|
* @example await sendMessage('+XXXXXXXXXXX', 'Hello World')
|
||||||
|
*/
|
||||||
|
sendMessage = async (numberIn, message, { options }) => {
|
||||||
|
const number = baileyCleanNumber(numberIn)
|
||||||
|
|
||||||
|
// if (options?.buttons?.length)
|
||||||
|
// return this.sendButtons(number, message, options.buttons)
|
||||||
|
if (options?.media)
|
||||||
|
return this.sendMedia(number, options.media, message)
|
||||||
|
return this.sendText(number, message)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = BaileysProvider
|
module.exports = BaileysProvider
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const {
|
|||||||
venomCleanNumber,
|
venomCleanNumber,
|
||||||
venomGenerateImage,
|
venomGenerateImage,
|
||||||
venomisValidNumber,
|
venomisValidNumber,
|
||||||
|
venomDownloadMedia,
|
||||||
} = require('./utils')
|
} = require('./utils')
|
||||||
|
|
||||||
const logger = new Console({
|
const logger = new Console({
|
||||||
@@ -104,6 +105,19 @@ class VenomProvider extends ProviderClass {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enviar imagen o multimedia
|
||||||
|
* @param {*} number
|
||||||
|
* @param {*} mediaInput
|
||||||
|
* @param {*} message
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
sendMedia = async (number, mediaInput, message) => {
|
||||||
|
if (!mediaInput) throw new Error(`NO_SE_ENCONTRO: ${mediaInput}`)
|
||||||
|
const fileDownloaded = await venomDownloadMedia(mediaInput)
|
||||||
|
return this.vendor.sendImage(number, fileDownloaded, '.', message)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enviar mensaje al usuario
|
* Enviar mensaje al usuario
|
||||||
* @param {*} userId
|
* @param {*} userId
|
||||||
@@ -115,7 +129,8 @@ class VenomProvider extends ProviderClass {
|
|||||||
const number = venomCleanNumber(userId)
|
const number = venomCleanNumber(userId)
|
||||||
if (options?.buttons?.length)
|
if (options?.buttons?.length)
|
||||||
return this.sendButtons(number, message, options.buttons)
|
return this.sendButtons(number, message, options.buttons)
|
||||||
if (options?.media) return this.sendMedia(number, options.media)
|
if (options?.media)
|
||||||
|
return this.sendMedia(number, options.media, message)
|
||||||
return this.vendor.sendText(number, message)
|
return this.vendor.sendText(number, message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
const { writeFile } = require('fs')
|
const { writeFile, createWriteStream } = require('fs')
|
||||||
|
const { tmpdir } = require('os')
|
||||||
|
const http = require('http')
|
||||||
|
const https = require('https')
|
||||||
const combineImage = require('combine-image')
|
const combineImage = require('combine-image')
|
||||||
|
|
||||||
const venomCleanNumber = (number, full = false) => {
|
const venomCleanNumber = (number, full = false) => {
|
||||||
@@ -35,9 +38,43 @@ const venomGenerateImage = async (base) => {
|
|||||||
cleanImage.write(PATH_QR)
|
cleanImage.write(PATH_QR)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Incompleta
|
||||||
|
* Descargar archivo multimedia para enviar
|
||||||
|
* @param {*} url
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
const venomDownloadMedia = (url) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const ext = url.split('.').pop()
|
||||||
|
const checkProtocol = url.includes('https:')
|
||||||
|
const handleHttp = checkProtocol ? https : http
|
||||||
|
const name = `tmp-${Date.now()}.${ext}`
|
||||||
|
const fullPath = `${tmpdir()}/${name}`
|
||||||
|
const file = createWriteStream(fullPath)
|
||||||
|
handleHttp.get(url, function (response) {
|
||||||
|
response.pipe(file)
|
||||||
|
file.on('finish', function () {
|
||||||
|
file.close()
|
||||||
|
resolve(fullPath)
|
||||||
|
})
|
||||||
|
file.on('error', function () {
|
||||||
|
console.log('errro')
|
||||||
|
file.close()
|
||||||
|
reject(null)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const venomisValidNumber = (rawNumber) => {
|
const venomisValidNumber = (rawNumber) => {
|
||||||
const regexGroup = /\@g.us\b/gm
|
const regexGroup = /\@g.us\b/gm
|
||||||
const exist = rawNumber.match(regexGroup)
|
const exist = rawNumber.match(regexGroup)
|
||||||
return !exist
|
return !exist
|
||||||
}
|
}
|
||||||
module.exports = { venomCleanNumber, venomGenerateImage, venomisValidNumber }
|
module.exports = {
|
||||||
|
venomCleanNumber,
|
||||||
|
venomGenerateImage,
|
||||||
|
venomisValidNumber,
|
||||||
|
venomDownloadMedia,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user