This commit is contained in:
Leifer Mendez
2022-11-11 12:12:19 +01:00
parent 1954a5a90a
commit a8dc44b41e
7 changed files with 57 additions and 23 deletions

17
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,17 @@
{
// Use IntelliSense para saber los atributos posibles.
// Mantenga el puntero para ver las descripciones de los existentes atributos.
// Para más información, visite: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Iniciar el programa",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\example-app\\app.js"
}
]
}

View File

@@ -21,6 +21,7 @@
"test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit",
"test": "npm run test.unit && npm run test.e2e",
"cli": "node ./packages/cli/bin/cli.js",
"dev:debug": "node --inspect ./example-app/app.js",
"dev": "node ./example-app/app.js"
},
"workspaces": [

View File

@@ -5,5 +5,3 @@
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

@@ -18,10 +18,6 @@ class BotClass {
for (const { event, func } of this.listenerBusEvents()) {
this.providerClass.on(event, func)
}
this.providerClass.on('message', (message) =>
console.log('message?', message)
)
}
listenerBusEvents = () => [
@@ -50,10 +46,18 @@ class BotClass {
* @private
* @param {*} ctxMessage
*/
handleMsg = ({ body }) => {
handleMsg = ({ body, to, from }) => {
this.databaseClass.saveLog(body)
const a = this.flowClass.find(body)
console.log(a)
const messageToSend = this.flowClass.find(body) || []
if (Array.isArray(messageToSend)) this.sendFlow(messageToSend, from)
}
sendFlow = (messageToSend, numberOrId) => {
const queue = []
for (const message of messageToSend) {
queue.push(this.providerClass.sendMessage(numberOrId, message))
}
return Promise.all(queue)
}
/**

View File

@@ -4,16 +4,26 @@ class FlowClass {
this.flow = _flow
}
find = (message, ref = false) => {
let keyRef = ref
let ansRef = null
if (!keyRef) {
keyRef =
this.flow.find((n) => n.keyword.includes(message))?.ref || null
find = (keyOrWord, symbol = false) => {
let messages = []
const findIn = (keyOrWord, symbol = false, flow = this.flow) => {
if (symbol) {
const refSymbol = flow.find((c) => c.keyword === keyOrWord)
if (refSymbol && refSymbol.answer)
messages.push(refSymbol.answer)
if (refSymbol && refSymbol.ref) findIn(refSymbol.ref, true)
} else {
const refSymbolByKeyworkd = flow.find((c) =>
c.keyword.includes(keyOrWord)
)
if (refSymbolByKeyworkd && refSymbolByKeyworkd.ref)
findIn(refSymbolByKeyworkd.ref, true)
return messages
}
}
ansRef = this.flow.find((n) => n.keyword === keyRef)
if (ansRef) return ansRef
return false
findIn(keyOrWord, symbol)
return messages
}
}

View File

@@ -6,7 +6,7 @@ const FlowClass = require('./classes/flow.class')
* @param {*} args
* @returns
*/
const create = async (args) => {
const create = (args) => {
return new FlowClass(args)
}

View File

@@ -6,23 +6,27 @@ class MockProvider extends ProviderClass {
this.init()
}
delaySendMessage = (miliseconds, eventName) =>
delaySendMessage = (miliseconds, eventName, payload) =>
new Promise((res) =>
setTimeout(() => {
const payload = { data: eventName }
this.emit(eventName, payload)
res
}, miliseconds)
)
sendMessage = async (userId, message) => {
console.log(`Enviando... ${userId}, ${message}`)
return Promise.resolve({ userId, message })
}
init = () =>
Promise.all([
this.delaySendMessage(500, 'ready'),
this.delaySendMessage(1500, 'message'),
this.delaySendMessage(500, 'ready', null),
this.delaySendMessage(1500, 'message', {
from: 'XXXXXX',
body: 'ola',
hasMedia: false,
}),
])
}