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.216-alpha.0 to 0.0.217-alpha.0

./lib/bundle.bot.cjs

186

core/core.class.js

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

const endFlow =
(flag, inRef = null) =>
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))
clearQueue()
return
}
(flag) =>
async (messages = null, options = { fromGotoFlow: false, end: false }) => {
flag.endFlow = true
endFlowFlag = true
// Procesos de callback que se deben execute como exepciones
if (Array.isArray(messages)) {
// console.log('options.fromGotoFlow', messages)
let counterFor = 0
// 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 (typeof messages === 'string' || messages === null) {
await this.sendProviderAndSave(from, createCtxMessage(messages))
clearQueue()
return
}
if(scopeCtx?.endFlow) break
// Procesos de callback que se deben execute como exepciones
if (Array.isArray(messages)) {
// console.log('options.fromGotoFlow', messages)
counterFor++
// options.fromGotoFlow = false
}
// 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
// options.fromGotoFlow = false
}
clearQueue()
return
}
clearQueue()
return
}

@@ -291,51 +289,51 @@ // 📄 Esta funcion se encarga de enviar un array de mensajes dentro de este ctx

(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))
}
await endFlow(flag)(promises, { fromGotoFlow: true, ...{ end: endFlowFlag } })
return
const ctxMessage = { ...msgParse, ...msg }
await this.sendProviderAndSave(from, ctxMessage).then(() => promises.push(ctxMessage))
}
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 +344,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.
}
const delayMs = msg?.options?.delay ?? this.generalArgs.delay ?? 0
await delay(delayMs)
await this.sendProviderAndSave(from, msg)
for (const msg of parseListMsg) {
if (privateOptions?.idleCtx) {
continue // Saltar al siguiente mensaje si se está en modo idleCtx.
}
if (options?.continue) {
await continueFlow()
return
}
const delayMs = msg?.options?.delay ?? this.generalArgs.delay ?? 0
await delay(delayMs)
await this.sendProviderAndSave(from, msg)
}
if (options?.continue) {
await continueFlow()
return
}
return
}

@@ -472,3 +470,3 @@ // 📄 Se encarga de revisar si el contexto del mensaje tiene callback o idle

await runContext()
return {...flags}
return { ...flags }
}

@@ -475,0 +473,0 @@

@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash')

@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash')

@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash')

@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash')

@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash')

@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash')

@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash')

@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash')

@@ -0,0 +0,0 @@ const { eventDocument, REGEX_EVENT_DOCUMENT } = require('./eventDocument')

const addAction = () => async () => {}
module.exports = { addAction }

@@ -0,0 +0,0 @@ MIT License

{
"name": "@bot-whatsapp/bot",
"version": "0.0.216-alpha.0",
"version": "0.0.217-alpha.0",
"description": "",

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

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

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