Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@bot-whatsapp/bot

Package Overview
Dependencies
Maintainers
1
Versions
286
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bot-whatsapp/bot - npm Package Compare versions

Comparing version 0.0.219-alpha.0 to 0.0.220-alpha.0

193

core/core.class.js

@@ -177,35 +177,38 @@ const { EventEmitter } = require('node:events')

(flag) =>
async (messages = null, options = { fromGotoFlow: false, end: false }) => {
flag.endFlow = true
endFlowFlag = true
async (messages = null, options = { fromGotoFlow: false, end: false }) => {
flag.endFlow = true
endFlowFlag = true
if (typeof messages === 'string' || messages === null) {
// await this.sendProviderAndSave(from, createCtxMessage(messages))
await this.sendProviderAndSave(from, createCtxMessage('__end_flow__'))
clearQueue()
return
}
if (typeof messages === 'string' || messages === null) {
// await this.sendProviderAndSave(from, createCtxMessage(messages))
await this.sendProviderAndSave(from, createCtxMessage({
keyword: state.get('__finger__time__'),
body: '__end_flow__'
}))
clearQueue()
return
}
// Procesos de callback que se deben execute como exepciones
if (Array.isArray(messages)) {
// console.log('options.fromGotoFlow', messages)
// Procesos de callback que se deben execute como exepciones
if (Array.isArray(messages)) {
// console.log('options.fromGotoFlow', messages)
// const indexLimit = messages.findIndex((m) => m.ref === inRef)
for (const iteratorCtxMessage of messages) {
// console.log(`Counter ${indexLimit}`)
// if(indexLimit !== -1 && counterFor === indexLimit) break
const scopeCtx = await resolveCbEveryCtx(iteratorCtxMessage, {
omitEndFlow: options.fromGotoFlow,
idleCtx: !!iteratorCtxMessage?.options?.idle,
triggerKey: iteratorCtxMessage.keyword.startsWith('key_'),
})
// const indexLimit = messages.findIndex((m) => m.ref === inRef)
for (const iteratorCtxMessage of messages) {
// console.log(`Counter ${indexLimit}`)
// if(indexLimit !== -1 && counterFor === indexLimit) break
const scopeCtx = await resolveCbEveryCtx(iteratorCtxMessage, {
omitEndFlow: options.fromGotoFlow,
idleCtx: !!iteratorCtxMessage?.options?.idle,
triggerKey: iteratorCtxMessage.keyword.startsWith('key_'),
})
if (scopeCtx?.endFlow) break
if (scopeCtx?.endFlow) break
// options.fromGotoFlow = false
// options.fromGotoFlow = false
}
}
clearQueue()
return
}
clearQueue()
return
}

@@ -216,4 +219,8 @@ // 📄 Esta funcion se encarga de enviar un array de mensajes dentro de este ctx

const currentPrev = await this.databaseClass.getPrevByNumber(from)
const refIdByEndFlow = currentPrev?.answer === '__end_flow__' ? currentPrev?.ref : options.prev?.ref;
if (options.prev?.options?.capture) {
await cbEveryCtx(options.prev?.ref)
await cbEveryCtx(refIdByEndFlow)
}

@@ -291,51 +298,51 @@

(flag) =>
async (message = null) => {
this.queuePrincipal.clearQueue(from)
flag.fallBack = true
await this.sendProviderAndSave(from, {
...prevMsg,
answer: typeof message === 'string' ? message : message?.body ?? prevMsg.answer,
options: {
...prevMsg.options,
buttons: prevMsg.options?.buttons,
},
})
return
}
async (message = null) => {
this.queuePrincipal.clearQueue(from)
flag.fallBack = true
await this.sendProviderAndSave(from, {
...prevMsg,
answer: typeof message === 'string' ? message : message?.body ?? prevMsg.answer,
options: {
...prevMsg.options,
buttons: prevMsg.options?.buttons,
},
})
return
}
const gotoFlow =
(flag) =>
async (flowInstance, step = 0) => {
const promises = []
flag.gotoFlow = true
async (flowInstance, step = 0) => {
const promises = []
flag.gotoFlow = true
if (!flowInstance?.toJson) {
printer([
`[POSSIBLE_CIRCULAR_DEPENDENCY]: Se ha detectado una dependencia circular.`,
`Para evitar problemas, te recomendamos utilizar 'require'('./ruta_del_flow')`,
`Ejemplo: gotoFlow(helloFlow) --> gotoFlow(require('./flows/helloFlow.js'))`,
`[INFO]: https://bot-whatsapp.netlify.app/docs/goto-flow/`,
])
return
}
if (!flowInstance?.toJson) {
printer([
`[POSSIBLE_CIRCULAR_DEPENDENCY]: Se ha detectado una dependencia circular.`,
`Para evitar problemas, te recomendamos utilizar 'require'('./ruta_del_flow')`,
`Ejemplo: gotoFlow(helloFlow) --> gotoFlow(require('./flows/helloFlow.js'))`,
`[INFO]: https://bot-whatsapp.netlify.app/docs/goto-flow/`,
])
return
}
await delay(flowInstance?.ctx?.options?.delay ?? 0)
await delay(flowInstance?.ctx?.options?.delay ?? 0)
const flowTree = flowInstance.toJson()
const flowTree = flowInstance.toJson()
const flowParentId = flowTree[step]
const flowParentId = flowTree[step]
const parseListMsg = await this.flowClass.find(flowParentId?.ref, true, flowTree)
const parseListMsg = await this.flowClass.find(flowParentId?.ref, true, flowTree)
for (const msg of parseListMsg) {
const msgParse = this.flowClass.findSerializeByRef(msg?.ref)
for (const msg of parseListMsg) {
const msgParse = this.flowClass.findSerializeByRef(msg?.ref)
const ctxMessage = { ...msgParse, ...msg }
await this.sendProviderAndSave(from, ctxMessage).then(() => promises.push(ctxMessage))
const ctxMessage = { ...msgParse, ...msg }
await this.sendProviderAndSave(from, ctxMessage).then(() => promises.push(ctxMessage))
}
await endFlow(flag)(promises, { fromGotoFlow: true, ...{ end: endFlowFlag } })
return
}
await endFlow(flag)(promises, { fromGotoFlow: true, ...{ end: endFlowFlag } })
return
}
// 📄 [options: flowDynamic]: esta funcion se encarga de responder un array de respuesta esta limitado a 5 mensajes

@@ -346,38 +353,38 @@ // para evitar bloque de whatsapp

(flag, inRef, privateOptions) =>
async (listMsg = [], options = { continue: true }) => {
if (!options.hasOwnProperty('continue')) {
options = { ...options, continue: true }
}
async (listMsg = [], options = { continue: true }) => {
if (!options.hasOwnProperty('continue')) {
options = { ...options, continue: true }
}
flag.flowDynamic = true
flag.flowDynamic = true
if (!Array.isArray(listMsg)) {
listMsg = [{ body: listMsg, ...options }]
}
if (!Array.isArray(listMsg)) {
listMsg = [{ body: listMsg, ...options }]
}
const parseListMsg = listMsg.map((opt, index) => createCtxMessage(opt, index))
const parseListMsg = listMsg.map((opt, index) => createCtxMessage(opt, index))
// Si endFlowFlag existe y no se omite la finalización del flujo, no hacer nada.
if (endFlowFlag && !privateOptions?.omitEndFlow) {
return
}
// Si endFlowFlag existe y no se omite la finalización del flujo, no hacer nada.
if (endFlowFlag && !privateOptions?.omitEndFlow) {
return
}
this.queuePrincipal.setFingerTime(from, inRef) // Debe decirle al sistema que finalizó el flujo aquí.
this.queuePrincipal.setFingerTime(from, inRef) // Debe decirle al sistema que finalizó el flujo aquí.
for (const msg of parseListMsg) {
if (privateOptions?.idleCtx) {
continue // Saltar al siguiente mensaje si se está en modo idleCtx.
for (const msg of parseListMsg) {
if (privateOptions?.idleCtx) {
continue // Saltar al siguiente mensaje si se está en modo idleCtx.
}
const delayMs = msg?.options?.delay ?? this.generalArgs.delay ?? 0
await delay(delayMs)
await this.sendProviderAndSave(from, msg)
}
const delayMs = msg?.options?.delay ?? this.generalArgs.delay ?? 0
await delay(delayMs)
await this.sendProviderAndSave(from, msg)
}
if (options?.continue) {
await continueFlow()
if (options?.continue) {
await continueFlow()
return
}
return
}
return
}

@@ -394,4 +401,4 @@ // 📄 Se encarga de revisar si el contexto del mensaje tiene callback o idle

}
const currentPrev = await this.databaseClass.getPrevByNumber(from)
if(currentPrev?.answer === '__end_flow__') return undefined
// const currentPrev = await this.databaseClass.getPrevByNumber(from)
// if (currentPrev?.answer === '__end_flow__') return undefined

@@ -492,2 +499,4 @@ if (ctxMessage?.options?.idle) {

await state.update({ '__finger__time__': refToContinue?.ref })
// 📄🤘(tiene return) [options: nested(array)]: Si se tiene flujos hijos los implementa

@@ -494,0 +503,0 @@ if (!endFlowFlag && prevMsg?.options?.nested?.length) {

{
"name": "@bot-whatsapp/bot",
"version": "0.0.219-alpha.0",
"version": "0.0.220-alpha.0",
"description": "",

@@ -5,0 +5,0 @@ "main": "./lib/bundle.bot.cjs",

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc