This commit is contained in:
Leifer Mendez
2022-11-10 22:59:08 +01:00
parent 228530a454
commit 1954a5a90a
13 changed files with 93 additions and 65 deletions

1
.gitignore vendored
View File

@@ -1,4 +1,5 @@
/node_modules
/packages/*/node_modules
session.json
chats/*
!chats/.gitkeep

View File

@@ -0,0 +1,9 @@
```
throw new Error('Evaluation failed: ' + helper_js_1.helper.getExceptionMessage(exceptionDetails));
```
Problema sucede cuando usas la misma sesion luego de reiniciar el bot más de 3 veces lo mejor es seguir los pasos
- Eliminar **.wwebjs_auth**
- Eliminar **node_modules**
- **yarn**

View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../../../../node_modules/cross-env/src/bin/cross-env.js" "$@"
ret=$?
else
node "$basedir/../../../../node_modules/cross-env/src/bin/cross-env.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../../../../node_modules/cross-env/src/bin/cross-env-shell.js" "$@"
ret=$?
else
node "$basedir/../../../../node_modules/cross-env/src/bin/cross-env-shell.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env-shell.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env-shell.js" %*
)

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env.js" %*
)

View File

@@ -0,0 +1,32 @@
- **require_action**: Indica que accion se necesita por parte del usuario y debe contener `instructions` obligatorio
```json
{
"instructions": `Debes escanear el QR Code para iniciar session reivsa qr.svg`,
... otros argumentos
}
```
- **ready**: Indica que todo los procesos para usar el provider han pasado correctamente. Ejemplo validacion de token credenciales etc
retorna: `true`
- **auth_failure**: Indica que un problema ocurrio en el inicio del provider `instructions` obligatorio
```json
{
"instructions": `Debes escanear el QR Code para iniciar session reivsa qr.svg`,
... otros argumentos
}
```
- **message**: Indica que mensaje a entrado se debe contemplar la siguiente estructura
```json
{
"from": 'Numero de telefono o id que identifique al usuario',
"body": 'Mensaje en string que esta entrando',
"hasMedia": 'boolean true o false indicando is tiene un archivo multimedia',
... otros argumentos
}
```

View File

@@ -1,3 +1,5 @@
const { printer } = require('../utils/interactive')
/**
* [ ] Escuchar eventos del provider asegurarte que los provider emitan eventos
* [ ] Guardar historial en db
@@ -13,32 +15,45 @@ class BotClass {
this.databaseClass = _database
this.providerClass = _provider
this.providerClass.on('require_action', (a) => console.log('here??', a))
this.providerClass.on('ready', (a) => console.log('ready??', a))
this.providerClass.on('auth_failure', (a) =>
console.log('auth_failure??', a)
)
this.providerClass.on('authenticated', (a) =>
console.log('authenticated??', a)
)
for (const { event, func } of this.listenerBusEvents()) {
this.providerClass.on(event, func)
}
this.providerClass.on('message', (message) =>
console.log('message?', message)
)
}
listenerBusEvents = () => [
{
event: 'require_action',
func: ({ instructions }) =>
printer(instructions, '⚡⚡ ACCION REQUERIDA ⚡⚡'),
},
{
event: 'ready',
func: () => printer('Provider conectado y listo'),
},
{
event: 'auth_failure',
func: ({ instructions }) =>
printer(instructions, '⚡⚡ ERROR AUTH ⚡⚡'),
},
{
event: 'message',
func: (msg) => this.handleMsg(msg),
},
]
/**
* @private
* @param {*} ctxMessage
*/
handleOnMessage = (ctxMessage) => {
this.databaseClass.saveLog(ctxMessage)
this.continue(ctxMessage)
}
handleEvents = (eventName) => {
if (eventName === 'message') return
if (eventName === 'auth_success') return
if (eventName === 'auth_error') return
handleMsg = ({ body }) => {
this.databaseClass.saveLog(body)
const a = this.flowClass.find(body)
console.log(a)
}
/**

View File

@@ -17,5 +17,7 @@
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {}
"devDependencies": {
"kleur": "^4.1.5"
}
}

View File

@@ -0,0 +1,10 @@
const { yellow, red, bgRed } = require('kleur')
const printer = (message, title) => {
console.clear()
if (title) console.log(bgRed(`${title}`))
console.log(yellow(Array.isArray(message) ? message.join('\n') : message))
console.log(``)
}
module.exports = { printer }

View File

@@ -4,6 +4,7 @@ class MockDatabase {
constructor() {}
save = (ctx) => {
console.log('Guardando DB...', ctx)
this.listHistory.push(ctx)
}
}

View File

@@ -30,7 +30,11 @@ class WebWhatsappProvider extends ProviderClass {
event: 'qr',
func: (qr) => {
this.emit('require_action', {
instructions: `Debes escanear el QR Code para iniciar session reivsa qr.svg`,
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)
},

View File

@@ -10,8 +10,6 @@ const cleanNumber = (number) => {
const generateImage = (base64) => {
let qr_svg = qr.image(base64, { type: 'svg', margin: 4 })
qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.svg`))
console.log(`⚡ Recuerda que el QR se actualiza cada minuto ⚡'`)
console.log(`⚡ Actualiza F5 el navegador para mantener el mejor QR⚡`)
}
module.exports = { cleanNumber, generateImage }