Files
bot-whatsapp/packages/provider/src/baileys/index.js
Joseph VTX 23b2e8e439 feat(provider): baileysProvider
Baileys WebSocket - Fast
2022-12-12 20:25:53 -05:00

80 lines
2.1 KiB
JavaScript

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,
})
}
}