mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-17 19:26:23 +00:00
working
This commit is contained in:
17
.vscode/launch.json
vendored
Normal file
17
.vscode/launch.json
vendored
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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": [
|
||||
|
||||
@@ -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**
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ const FlowClass = require('./classes/flow.class')
|
||||
* @param {*} args
|
||||
* @returns
|
||||
*/
|
||||
const create = async (args) => {
|
||||
const create = (args) => {
|
||||
return new FlowClass(args)
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
])
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user