mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 20:49:15 +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.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",
|
"test": "npm run test.unit && npm run test.e2e",
|
||||||
"cli": "node ./packages/cli/bin/cli.js",
|
"cli": "node ./packages/cli/bin/cli.js",
|
||||||
|
"dev:debug": "node --inspect ./example-app/app.js",
|
||||||
"dev": "node ./example-app/app.js"
|
"dev": "node ./example-app/app.js"
|
||||||
},
|
},
|
||||||
"workspaces": [
|
"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
|
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 **.wwebjs_auth**
|
||||||
- Eliminar **node_modules**
|
|
||||||
- **yarn**
|
|
||||||
|
|||||||
@@ -18,10 +18,6 @@ class BotClass {
|
|||||||
for (const { event, func } of this.listenerBusEvents()) {
|
for (const { event, func } of this.listenerBusEvents()) {
|
||||||
this.providerClass.on(event, func)
|
this.providerClass.on(event, func)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.providerClass.on('message', (message) =>
|
|
||||||
console.log('message?', message)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
listenerBusEvents = () => [
|
listenerBusEvents = () => [
|
||||||
@@ -50,10 +46,18 @@ class BotClass {
|
|||||||
* @private
|
* @private
|
||||||
* @param {*} ctxMessage
|
* @param {*} ctxMessage
|
||||||
*/
|
*/
|
||||||
handleMsg = ({ body }) => {
|
handleMsg = ({ body, to, from }) => {
|
||||||
this.databaseClass.saveLog(body)
|
this.databaseClass.saveLog(body)
|
||||||
const a = this.flowClass.find(body)
|
const messageToSend = this.flowClass.find(body) || []
|
||||||
console.log(a)
|
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
|
this.flow = _flow
|
||||||
}
|
}
|
||||||
|
|
||||||
find = (message, ref = false) => {
|
find = (keyOrWord, symbol = false) => {
|
||||||
let keyRef = ref
|
let messages = []
|
||||||
let ansRef = null
|
const findIn = (keyOrWord, symbol = false, flow = this.flow) => {
|
||||||
if (!keyRef) {
|
if (symbol) {
|
||||||
keyRef =
|
const refSymbol = flow.find((c) => c.keyword === keyOrWord)
|
||||||
this.flow.find((n) => n.keyword.includes(message))?.ref || null
|
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
|
findIn(keyOrWord, symbol)
|
||||||
return false
|
return messages
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const FlowClass = require('./classes/flow.class')
|
|||||||
* @param {*} args
|
* @param {*} args
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
const create = async (args) => {
|
const create = (args) => {
|
||||||
return new FlowClass(args)
|
return new FlowClass(args)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,23 +6,27 @@ class MockProvider extends ProviderClass {
|
|||||||
this.init()
|
this.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
delaySendMessage = (miliseconds, eventName) =>
|
delaySendMessage = (miliseconds, eventName, payload) =>
|
||||||
new Promise((res) =>
|
new Promise((res) =>
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const payload = { data: eventName }
|
|
||||||
this.emit(eventName, payload)
|
this.emit(eventName, payload)
|
||||||
res
|
res
|
||||||
}, miliseconds)
|
}, miliseconds)
|
||||||
)
|
)
|
||||||
|
|
||||||
sendMessage = async (userId, message) => {
|
sendMessage = async (userId, message) => {
|
||||||
|
console.log(`Enviando... ${userId}, ${message}`)
|
||||||
return Promise.resolve({ userId, message })
|
return Promise.resolve({ userId, message })
|
||||||
}
|
}
|
||||||
|
|
||||||
init = () =>
|
init = () =>
|
||||||
Promise.all([
|
Promise.all([
|
||||||
this.delaySendMessage(500, 'ready'),
|
this.delaySendMessage(500, 'ready', null),
|
||||||
this.delaySendMessage(1500, 'message'),
|
this.delaySendMessage(1500, 'message', {
|
||||||
|
from: 'XXXXXX',
|
||||||
|
body: 'ola',
|
||||||
|
hasMedia: false,
|
||||||
|
}),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user