mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 20:49:15 +00:00
feat(provider): ⚡ added new venom provider
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
"exports": {
|
"exports": {
|
||||||
"./mock": "./lib/mock/index.cjs",
|
"./mock": "./lib/mock/index.cjs",
|
||||||
"./twilio": "./lib/twilio/index.cjs",
|
"./twilio": "./lib/twilio/index.cjs",
|
||||||
"./web-whatsapp": "./lib/web-whatsapp/index.cjs"
|
"./web-whatsapp": "./lib/web-whatsapp/index.cjs",
|
||||||
|
"./venom": "./lib/venom/index.cjs"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,4 +30,13 @@ module.exports = [
|
|||||||
},
|
},
|
||||||
plugins: [commonjs()],
|
plugins: [commonjs()],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
input: join(__dirname, 'src', 'venom', 'index.js'),
|
||||||
|
output: {
|
||||||
|
banner: banner['banner.output'].join(''),
|
||||||
|
file: join(__dirname, 'lib', 'venom', 'index.cjs'),
|
||||||
|
format: 'cjs',
|
||||||
|
},
|
||||||
|
plugins: [commonjs()],
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,25 +1,64 @@
|
|||||||
const { ProviderClass } = require('@bot-whatsapp/bot')
|
const { ProviderClass } = require('@bot-whatsapp/bot')
|
||||||
const venom = require('venom-bot')
|
const venom = require('venom-bot')
|
||||||
const { cleanNumber } = require('../web-whatsapp/utils')
|
const { cleanNumber, generateImage } = require('./utils/utils')
|
||||||
|
|
||||||
class VenomProvider extends ProviderClass {
|
class VenomProvider extends ProviderClass {
|
||||||
constructor() {
|
constructor() {
|
||||||
super()
|
super()
|
||||||
this.client
|
this.vendor
|
||||||
venom
|
venom
|
||||||
.create({
|
.create(
|
||||||
|
{
|
||||||
session: 'session-1', //nombre de la sesion o id
|
session: 'session-1', //nombre de la sesion o id
|
||||||
multidevice: true, // Para el funcinamiento de multiusuarios.(default: true)
|
multidevice: true,
|
||||||
|
},
|
||||||
|
(base64Qrimg) => this.generateQr(base64Qrimg)
|
||||||
|
)
|
||||||
|
.then((client) => {
|
||||||
|
this.vendor = client
|
||||||
|
this.start()
|
||||||
})
|
})
|
||||||
.then((client) => (this.client = client))
|
|
||||||
.catch((erro) => {
|
.catch((erro) => {
|
||||||
console.log(erro)
|
console.log(erro)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
generateQr = (qr) => {
|
||||||
|
this.emit('require_action', {
|
||||||
|
instructions: [
|
||||||
|
`Debes escanear el QR Code para iniciar session reivsa qr.svg`,
|
||||||
|
`Recuerda que el QR se actualiza cada minuto `,
|
||||||
|
`Necesitas ayuda: https://link.codigoencasa.com/DISCORD`,
|
||||||
|
],
|
||||||
|
})
|
||||||
|
//generateImage(qr)
|
||||||
|
}
|
||||||
|
|
||||||
|
start = () => {
|
||||||
|
this.vendor.onMessage((payload) => {
|
||||||
|
payload.from = cleanNumber(payload.from, true)
|
||||||
|
this.emit('message', payload)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
sendMessage = async (number, message) => {
|
sendMessage = async (number, message) => {
|
||||||
const numero = cleanNumber(number)
|
const numero = cleanNumber(number)
|
||||||
return this.client.sendText(numero, message)
|
return this.client.sendText(numero, message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sendButtons = async (number, message, buttons = []) => {
|
||||||
|
const buttonMessage = new Buttons(message, buttons, '', '')
|
||||||
|
return this.vendor.sendMessage(number, buttonMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
sendMessage = async (userId, message, { options }) => {
|
||||||
|
console.log('entramos')
|
||||||
|
const number = cleanNumber(userId)
|
||||||
|
if (options?.buttons?.length)
|
||||||
|
return this.sendButtons(number, message, options.buttons)
|
||||||
|
if (options?.media) return this.sendMedia(number, options.media)
|
||||||
|
return this.vendor.sendText(number, message)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports = VenomProvider
|
||||||
|
|||||||
14
packages/provider/src/venom/utils/utils.js
Normal file
14
packages/provider/src/venom/utils/utils.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
const qr = require('qr-image')
|
||||||
|
|
||||||
|
const cleanNumber = (number, full = false) => {
|
||||||
|
number = number.replace('@c.us', '')
|
||||||
|
number = !full ? `${number}@c.us` : `${number}`
|
||||||
|
return number
|
||||||
|
}
|
||||||
|
|
||||||
|
const generateImage = (base64) => {
|
||||||
|
let qr_svg = qr.image(base64, { type: 'svg', margin: 4 })
|
||||||
|
qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.svg`))
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { cleanNumber, generateImage }
|
||||||
@@ -31,6 +31,7 @@ class WebWhatsappProvider extends ProviderClass {
|
|||||||
for (const { event, func } of listEvents) {
|
for (const { event, func } of listEvents) {
|
||||||
this.vendor.on(event, func)
|
this.vendor.on(event, func)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.vendor.emit('preinit')
|
this.vendor.emit('preinit')
|
||||||
this.vendor.initialize().catch((e) => {
|
this.vendor.initialize().catch((e) => {
|
||||||
logger.log(e)
|
logger.log(e)
|
||||||
|
|||||||
Reference in New Issue
Block a user