mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-18 19:49:16 +00:00
74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
const { Client, LocalAuth } = require('whatsapp-web.js')
|
|
const { ProviderClass } = require('@bot-whatsapp/core')
|
|
|
|
const { cleanNumber, generateImage } = require('./utils')
|
|
|
|
class WebWhatsappProvider extends ProviderClass {
|
|
vendor
|
|
constructor(_vendor) {
|
|
super()
|
|
this.vendor = new Client({
|
|
authStrategy: new LocalAuth(),
|
|
})
|
|
|
|
const listEvents = this.busEvents()
|
|
|
|
for (const { event, func } of listEvents) {
|
|
this.vendor.on(event, func)
|
|
}
|
|
|
|
this.vendor.initialize().catch((e) =>
|
|
this.emit('require_action', {
|
|
instructions: [
|
|
`Debes eliminar la carpeta .wwebjs_auth`,
|
|
`y reiniciar nuevamente el bot `,
|
|
],
|
|
})
|
|
)
|
|
}
|
|
|
|
/**
|
|
* Mapeamos los eventos nativos de whatsapp-web.js a los que la clase Provider espera
|
|
* para tener un standar de eventos
|
|
* @returns
|
|
*/
|
|
busEvents = () => [
|
|
{
|
|
event: 'auth_failure',
|
|
func: (payload) => this.emit('error', payload),
|
|
},
|
|
{
|
|
event: 'qr',
|
|
func: (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)
|
|
},
|
|
},
|
|
{
|
|
event: 'ready',
|
|
func: () => this.emit('ready', true),
|
|
},
|
|
{
|
|
event: 'authenticated',
|
|
func: () => this.emit('ready', true),
|
|
},
|
|
{
|
|
event: 'message',
|
|
func: (payload) => this.emit('message', payload),
|
|
},
|
|
]
|
|
|
|
sendMessage = async (userId, message) => {
|
|
const number = cleanNumber(userId)
|
|
return this.vendor.sendMessage(number, message)
|
|
}
|
|
}
|
|
|
|
module.exports = WebWhatsappProvider
|