From a8dc44b41ec0502f7c9b7ae35e12b5d83f13d066 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 11 Nov 2022 12:12:19 +0100 Subject: [PATCH] working --- .vscode/launch.json | 17 ++++++++++++++ package.json | 1 + packages/COMMON_MISTAKE.md | 2 -- packages/core/classes/bot.class.js | 18 +++++++++------ packages/io/classes/flow.class.js | 28 ++++++++++++++++-------- packages/io/index.js | 2 +- packages/provider/adapters/mock/index.js | 12 ++++++---- 7 files changed, 57 insertions(+), 23 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8da750d --- /dev/null +++ b/.vscode/launch.json @@ -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": [ + "/**" + ], + "program": "${workspaceFolder}\\example-app\\app.js" + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index f49c488..9b8778a 100644 --- a/package.json +++ b/package.json @@ -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": [ diff --git a/packages/COMMON_MISTAKE.md b/packages/COMMON_MISTAKE.md index 77d9ee2..35be423 100644 --- a/packages/COMMON_MISTAKE.md +++ b/packages/COMMON_MISTAKE.md @@ -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** diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index bf0882b..b2ffef5 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -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) } /** diff --git a/packages/io/classes/flow.class.js b/packages/io/classes/flow.class.js index fa0a173..b83e850 100644 --- a/packages/io/classes/flow.class.js +++ b/packages/io/classes/flow.class.js @@ -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 } } diff --git a/packages/io/index.js b/packages/io/index.js index a3afc25..c47f212 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -6,7 +6,7 @@ const FlowClass = require('./classes/flow.class') * @param {*} args * @returns */ -const create = async (args) => { +const create = (args) => { return new FlowClass(args) } diff --git a/packages/provider/adapters/mock/index.js b/packages/provider/adapters/mock/index.js index f801ac7..ac2ec39 100644 --- a/packages/provider/adapters/mock/index.js +++ b/packages/provider/adapters/mock/index.js @@ -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, + }), ]) }