mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-21 21:19:17 +00:00
issue
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
|||||||
/node_modules
|
/node_modules
|
||||||
|
/packages/*/node_modules
|
||||||
session.json
|
session.json
|
||||||
chats/*
|
chats/*
|
||||||
!chats/.gitkeep
|
!chats/.gitkeep
|
||||||
|
|||||||
9
packages/COMMON_MISTAKE.md
Normal file
9
packages/COMMON_MISTAKE.md
Normal 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**
|
||||||
15
packages/cli/node_modules/.bin/cross-env
generated
vendored
15
packages/cli/node_modules/.bin/cross-env
generated
vendored
@@ -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
|
|
||||||
15
packages/cli/node_modules/.bin/cross-env-shell
generated
vendored
15
packages/cli/node_modules/.bin/cross-env-shell
generated
vendored
@@ -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
|
|
||||||
7
packages/cli/node_modules/.bin/cross-env-shell.cmd
generated
vendored
7
packages/cli/node_modules/.bin/cross-env-shell.cmd
generated
vendored
@@ -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" %*
|
|
||||||
)
|
|
||||||
7
packages/cli/node_modules/.bin/cross-env.cmd
generated
vendored
7
packages/cli/node_modules/.bin/cross-env.cmd
generated
vendored
@@ -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" %*
|
|
||||||
)
|
|
||||||
32
packages/core/LIST_EVENTS.md
Normal file
32
packages/core/LIST_EVENTS.md
Normal 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
|
||||||
|
}
|
||||||
|
```
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
const { printer } = require('../utils/interactive')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [ ] Escuchar eventos del provider asegurarte que los provider emitan eventos
|
* [ ] Escuchar eventos del provider asegurarte que los provider emitan eventos
|
||||||
* [ ] Guardar historial en db
|
* [ ] Guardar historial en db
|
||||||
@@ -13,32 +15,45 @@ class BotClass {
|
|||||||
this.databaseClass = _database
|
this.databaseClass = _database
|
||||||
this.providerClass = _provider
|
this.providerClass = _provider
|
||||||
|
|
||||||
this.providerClass.on('require_action', (a) => console.log('here??', a))
|
for (const { event, func } of this.listenerBusEvents()) {
|
||||||
this.providerClass.on('ready', (a) => console.log('ready??', a))
|
this.providerClass.on(event, func)
|
||||||
this.providerClass.on('auth_failure', (a) =>
|
}
|
||||||
console.log('auth_failure??', a)
|
|
||||||
)
|
|
||||||
this.providerClass.on('authenticated', (a) =>
|
|
||||||
console.log('authenticated??', a)
|
|
||||||
)
|
|
||||||
this.providerClass.on('message', (message) =>
|
this.providerClass.on('message', (message) =>
|
||||||
console.log('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
|
* @private
|
||||||
* @param {*} ctxMessage
|
* @param {*} ctxMessage
|
||||||
*/
|
*/
|
||||||
handleOnMessage = (ctxMessage) => {
|
handleMsg = ({ body }) => {
|
||||||
this.databaseClass.saveLog(ctxMessage)
|
this.databaseClass.saveLog(body)
|
||||||
this.continue(ctxMessage)
|
const a = this.flowClass.find(body)
|
||||||
}
|
console.log(a)
|
||||||
|
|
||||||
handleEvents = (eventName) => {
|
|
||||||
if (eventName === 'message') return
|
|
||||||
if (eventName === 'auth_success') return
|
|
||||||
if (eventName === 'auth_error') return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -17,5 +17,7 @@
|
|||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {}
|
"devDependencies": {
|
||||||
|
"kleur": "^4.1.5"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
10
packages/core/utils/interactive.js
Normal file
10
packages/core/utils/interactive.js
Normal 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 }
|
||||||
@@ -4,6 +4,7 @@ class MockDatabase {
|
|||||||
constructor() {}
|
constructor() {}
|
||||||
|
|
||||||
save = (ctx) => {
|
save = (ctx) => {
|
||||||
|
console.log('Guardando DB...', ctx)
|
||||||
this.listHistory.push(ctx)
|
this.listHistory.push(ctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,11 @@ class WebWhatsappProvider extends ProviderClass {
|
|||||||
event: 'qr',
|
event: 'qr',
|
||||||
func: (qr) => {
|
func: (qr) => {
|
||||||
this.emit('require_action', {
|
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)
|
generateImage(qr)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,8 +10,6 @@ const cleanNumber = (number) => {
|
|||||||
const generateImage = (base64) => {
|
const generateImage = (base64) => {
|
||||||
let qr_svg = qr.image(base64, { type: 'svg', margin: 4 })
|
let qr_svg = qr.image(base64, { type: 'svg', margin: 4 })
|
||||||
qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.svg`))
|
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 }
|
module.exports = { cleanNumber, generateImage }
|
||||||
|
|||||||
Reference in New Issue
Block a user