mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-17 19:26:23 +00:00
feat(provider): ⚡ added new venom provider
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
"exports": {
|
||||
"./mock": "./lib/mock/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()],
|
||||
},
|
||||
{
|
||||
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 venom = require('venom-bot')
|
||||
const { cleanNumber } = require('../web-whatsapp/utils')
|
||||
const { cleanNumber, generateImage } = require('./utils/utils')
|
||||
|
||||
class VenomProvider extends ProviderClass {
|
||||
constructor() {
|
||||
super()
|
||||
this.client
|
||||
this.vendor
|
||||
venom
|
||||
.create({
|
||||
session: 'session-1', //nombre de la sesion o id
|
||||
multidevice: true, // Para el funcinamiento de multiusuarios.(default: true)
|
||||
.create(
|
||||
{
|
||||
session: 'session-1', //nombre de la sesion o id
|
||||
multidevice: true,
|
||||
},
|
||||
(base64Qrimg) => this.generateQr(base64Qrimg)
|
||||
)
|
||||
.then((client) => {
|
||||
this.vendor = client
|
||||
this.start()
|
||||
})
|
||||
.then((client) => (this.client = client))
|
||||
.catch((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) => {
|
||||
const numero = cleanNumber(number)
|
||||
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) {
|
||||
this.vendor.on(event, func)
|
||||
}
|
||||
|
||||
this.vendor.emit('preinit')
|
||||
this.vendor.initialize().catch((e) => {
|
||||
logger.log(e)
|
||||
|
||||
Reference in New Issue
Block a user