Skip to content

Commit

Permalink
fix(provider): 🔥 baileys fix
Browse files Browse the repository at this point in the history
  • Loading branch information
leifermendez committed Jan 1, 2023
1 parent e37f280 commit 928365d
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 15 deletions.
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
[![BotWhatsapp Releases(Prod)](https://github.com/codigoencasa/bot-whatsapp/actions/workflows/releases.yml/badge.svg)](https://github.com/codigoencasa/bot-whatsapp/actions/workflows/releases.yml)


<p align="center">
<img width="300" src="https://i.imgur.com/Oauef6t.png">
</p>

<div style="width:100%;text-align:center"><img src="https://i.imgur.com/Oauef6t.png" width="300" /></div>


**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites.
**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)**

## Comenzar

Expand All @@ -25,12 +26,13 @@ Entiende más a fondo sus funcionalidades explicadas en nuestra documentación.
## Recursos
- [📄 Documentación](https://bot-whatsapp.netlify.app/)
- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1)
- [💻 Discord](https://link.codigoencasa.com/DISCORD)
- [👌 Twitter](https://twitter.com/leifermendez)
- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
- [💻 Discord](https://link.codigoencasa.com/DISCORD)
- [👌 Twitter](https://twitter.com/leifermendez)
- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)

## Comunidad
<!-- readme: collaborators,contributors -start -->

<!-- readme: collaborators,contributors -end -->


31 changes: 22 additions & 9 deletions packages/provider/src/baileys/index.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
const { ProviderClass } = require('@bot-whatsapp/bot')
const { Sticker } = require('wa-sticker-formatter')
const pino = require('pino')
const rimraf = require('rimraf')
const mime = require('mime-types')
const { join } = require('path')
const { existsSync, createWriteStream } = require('fs')
const { Console } = require('console')

const {
default: makeWASocket,
useMultiFileAuthState,
Browsers,
DisconnectReason,
} = require('@adiwajshing/baileys')
const {
Expand All @@ -21,6 +24,9 @@ const logger = new Console({
stdout: createWriteStream(`${process.cwd()}/baileys.log`),
})

const NAME_DIR_SESSION = `sessions`
const PATH_BASE = join(process.cwd(), NAME_DIR_SESSION)

/**
* ⚙️ BaileysProvider: Es una clase tipo adaptor
* que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas)
Expand All @@ -38,28 +44,35 @@ class BaileysProvider extends ProviderClass {
* Iniciar todo Bailey
*/
initBailey = async () => {
const { state, saveCreds } = await useMultiFileAuthState('sessions')
const { state, saveCreds } = await useMultiFileAuthState(
NAME_DIR_SESSION
)
this.saveCredsGlobal = saveCreds

try {
const sock = makeWASocket({
printQRInTerminal: false,
auth: state,
browser: Browsers.macOS('Desktop'),
syncFullHistory: false,
logger: pino({ level: 'error' }),
})

sock.ev.on('connection.update', async (update) => {
const { connection, lastDisconnect, qr } = update

if (connection === 'close') {
const shouldReconnect =
lastDisconnect?.error?.output?.statusCode !==
DisconnectReason.loggedOut
const statusCode = lastDisconnect?.error?.output?.statusCode

if (statusCode === DisconnectReason.loggedOut) {
rimraf(PATH_BASE, (err) => {
if (err) return
})

this.initBailey()
}

if (shouldReconnect) {
await saveCreds()
this.initBailey()
}
if (statusCode && statusCode !== DisconnectReason.loggedOut) {
this.initBailey()
}

if (qr) {
Expand Down

0 comments on commit 928365d

Please sign in to comment.