From 23b2e8e439ecec24450bd5cf1a3820316e643434 Mon Sep 17 00:00:00 2001 From: Joseph VTX <1395609@senati.pe> Date: Mon, 12 Dec 2022 20:25:53 -0500 Subject: [PATCH] feat(provider): :zap: baileysProvider Baileys WebSocket - Fast --- packages/provider/src/baileys/index.js | 79 ++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 packages/provider/src/baileys/index.js diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js new file mode 100644 index 0000000..16d3e75 --- /dev/null +++ b/packages/provider/src/baileys/index.js @@ -0,0 +1,79 @@ +const { ProviderClass } = require('@bot-whatsapp/bot') +const PINO = require('pino') +const makeWASocket = require('@adiwajshing/baileys').default +const { useMultiFileAuthState } = require('@adiwajshing/baileys') + +class Baileys extends ProviderClass { + constructor() { + super() + this.sock + } + + async baileys() { + const { state, saveCreds } = await useMultiFileAuthState( + 'baileys_auth_whatsapp' + ) + + this.sock = await makeWASocket({ + printQRInTerminal: true, + auth: state, + logger: PINO({ level: 'error' }), + }) + + this.sock.ev.on( + 'connection.update', + ({ connection, lastDisconnect }) => { + if (lastDisconnect?.error) { + saveCreds() + + this.baileys() + } + + if (connection === 'open') { + console.log('Baileys is connected') + } + } + ) + } + + /** + * + * @param {string} number + * @param {string} message + * @example await sendMessage('+51925465621', 'Hello World') + */ + async sendMessage(number, message) { + const numberClean = number.replace('+', '') + await this.sock.sendMessage(`${numberClean}@c.us`, { text: message }) + } + + /** + * + * @param {string} number + * @param {string} message + * @example await sendMessage('+51925465621', 'https://dominio.com/imagen.jpg' | 'img/imagen.jpg') + */ + + async sendImage(number, imageUrl) { + const numberClean = number.replace('+', '') + await this.sock.sendMessage(`${numberClean}@c.us`, { + image: { url: imageUrl }, + }) + } + + /** + * + * @param {string} number + * @param {string} message + * @param {boolean} voiceNote optional + * @example await sendMessage('+51925465621', 'audio.mp3') + */ + + async sendAudio(number, audioUrl, voiceNote = false) { + const numberClean = number.replace('+', '') + await this.sock.sendMessage(`${numberClean}@c.us`, { + audio: { url: audioUrl }, + ptt: voiceNote, + }) + } +}