mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-19 20:19:15 +00:00
working
This commit is contained in:
@@ -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