mirror of
https://github.com/cheveguerra/botLeiferAurik-Mod_2.0.git
synced 2026-04-21 05:09:23 +00:00
Compare commits
18 Commits
bot-whatsa
...
master_202
| Author | SHA1 | Date | |
|---|---|---|---|
| 5916ba6615 | |||
| 4b5aabf09a | |||
| 487ba83f7c | |||
| 7591feb598 | |||
| 554d9b2f4f | |||
| ee4c00cb46 | |||
| c31fc1d201 | |||
| dfd2c7d97d | |||
| 44921e7b78 | |||
| 55012a9d88 | |||
| 1660cf46c3 | |||
| ef9917e954 | |||
| 7febd90e56 | |||
| e8847800f6 | |||
| ee79cd9dab | |||
| b8bf6d1107 | |||
| 4cc92a1d80 | |||
| 828030e424 |
15
.env
Normal file
15
.env
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
######DATABASE: none, mysql, dialogflow
|
||||||
|
|
||||||
|
DEFAULT_MESSAGE=true
|
||||||
|
SAVE_MEDIA=true
|
||||||
|
PORT=3005
|
||||||
|
DATABASE=none
|
||||||
|
LANGUAGE=es
|
||||||
|
SQL_HOST=
|
||||||
|
SQL_USER=
|
||||||
|
SQL_PASS=
|
||||||
|
SQL_DATABASE=
|
||||||
|
KEEP_DIALOG_FLOW=false
|
||||||
|
MULTI_DEVICE=true
|
||||||
|
DIALOGFLOW_MEDIA_FOR_SLOT_FILLING=false
|
||||||
|
GDRIVE_FOLDER_ID=
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -8,7 +8,6 @@ media/*
|
|||||||
mediaSend/*
|
mediaSend/*
|
||||||
!mediaSend/.gitkeep
|
!mediaSend/.gitkeep
|
||||||
!mediaSend/nota-de-voz.mp3
|
!mediaSend/nota-de-voz.mp3
|
||||||
.env
|
|
||||||
.wwebjs_auth
|
.wwebjs_auth
|
||||||
backup
|
backup
|
||||||
backup/*
|
backup/*
|
||||||
23
Dockerfile
Normal file
23
Dockerfile
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
FROM node:18-alpine as node
|
||||||
|
|
||||||
|
# Installs latest Chromium (92) package.
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
chromium \
|
||||||
|
nss \
|
||||||
|
freetype \
|
||||||
|
harfbuzz \
|
||||||
|
ca-certificates \
|
||||||
|
ttf-freefont \
|
||||||
|
nodejs \
|
||||||
|
yarn
|
||||||
|
|
||||||
|
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
|
||||||
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
|
||||||
|
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
||||||
|
|
||||||
|
# Puppeteer v10.0.0 works with Chromium 92.
|
||||||
|
COPY . .
|
||||||
|
RUN npm install puppeteer@10.0.0
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
CMD ["npm", "start"]
|
||||||
53
README.md
53
README.md
@@ -4,19 +4,29 @@
|
|||||||
Este proyecto es un clon de la **version 1** (legacy) de [Leifer Mendez](https://github.com/leifermendez/bot-whatsapp) y tiene las siguientes modificaciones:
|
Este proyecto es un clon de la **version 1** (legacy) de [Leifer Mendez](https://github.com/leifermendez/bot-whatsapp) y tiene las siguientes modificaciones:
|
||||||
|
|
||||||
- Permite **submenus**.
|
- Permite **submenus**.
|
||||||
- Un submenú es una regla que **sólo se dispara** cuando la regla anterior es la especificada, los submenus se definen agregando el parametro "```pasoRequerido```" en el **response.json**.
|
- Un submenú es un paso que **sólo se dispara** cuando el paso anterior es el especificado, los submenus se definen agregando el parametro "```pasoRequerido```" en el **response.json**, entonces si queremos que el paso **zapatos** solo se muestre cuando antes pasamos por el **menú inicial**, agregamos el parámetro "pasoRequerido" a la regla "zapatos", de esta forma si alguien pone el número **1** sin estar en el menú principal, **no** los va a mandar a **zapatos**.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"menu":{
|
"menu":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"%saludo%\nHoy es %dia_semana%.\n"
|
"%saludo%",
|
||||||
|
"Escribe 1 para zapatos.",
|
||||||
|
"Escribe 2 para bolsos."
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null
|
"trigger":null
|
||||||
},
|
},
|
||||||
"submenu":{
|
"zapatos":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"Este submenu solo se dispara si **ANTES** se disparó la regla 'menu'"
|
"Esta es la lista de nuestros zapatos."
|
||||||
|
],
|
||||||
|
"media":null,
|
||||||
|
"trigger":null,
|
||||||
|
"pasoRequerido":"menu"
|
||||||
|
},
|
||||||
|
"bolsos":{
|
||||||
|
"replyMessage":[
|
||||||
|
"Esta es la lista de nuestros bolsos."
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
@@ -47,11 +57,38 @@ Este proyecto es un clon de la **version 1** (legacy) de [Leifer Mendez](https:/
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
- Permite **remplazos** en el texto de los mensajes por ejemplo:
|
- Permite **remplazos** en el texto de los mensajes por ejemplo:
|
||||||
- __%saludo%__ para que aparezca "Buenos días, tardes o noches" dependiendo de la hora.
|
- Ponemos __%saludo%__ para que aparezca "Buenos días, tardes o noches" dependiendo de la hora.
|
||||||
- __%primer_nombre%__ para que aparezca el nombre (hasta el primer espacio) del remitente.
|
- Ponemos __%primer_nombre%__ para que aparezca el nombre (hasta el primer espacio) del remitente.
|
||||||
- __%dia_semana%__ para que aparezca "lunes, martes, miercoles, etc" dependiendo del día de la semana.
|
- Ponemos __%dia_semana%__ para que aparezca "lunes, martes, miercoles, etc" dependiendo del día de la semana.
|
||||||
- __%msjant_XX%__ para que aparezca el mensaje xx anterior, es decir, si quieres mostrar el texto de 2 mensajes anteriores se pone %msjant_2%.
|
- Ponemos __%msjant_XX%__ para que aparezca el mensaje xx anterior, es decir, si quieres mostrar el texto de 2 mensajes anteriores se pone %msjant_2%.
|
||||||
- etc, etc, se pueden agregar mas remplazos en la funcion "remplazos" en el archivo "adapter\index.js".
|
- etc, etc, se pueden agregar mas remplazos en la funcion "remplazos" en el archivo "adapter\index.js".
|
||||||
|
- Permite el envío de **multiples mensajes** definidos en la **misma respuesta** del **response.json**. (Esta modificación se la robe por completo a [KJoaquin](https://github.com/KJoaquin), el lo solucionó [aquí](https://github.com/codigoencasa/bot-whatsapp/issues/111#issuecomment-1353504575) 🙌🏽 y yo solo lo adapté a mi repo!)
|
||||||
|
|
||||||
|
Antes:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"ejemploViejo":{
|
||||||
|
"replyMessage":["¿Hola como estas?"],
|
||||||
|
"media":null,
|
||||||
|
"trigger":null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Ahora **replyMessage** debe de contener un arreglo con los mensajes que se van a enviar:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"ejemploNuevo":{
|
||||||
|
"replyMessage":[
|
||||||
|
{ "mensaje":["¿Hola como estas?"]},
|
||||||
|
{ "mensaje":["Este es el *segundo* mensaje.","Contiene dos lineas 🤪"]},
|
||||||
|
{ "mensaje":["Este es el *tercer* mensaje"]}
|
||||||
|
],
|
||||||
|
"media":null,
|
||||||
|
"trigger":null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
- Las modificaciones están enfocadas al uso de los archivos __initial.json__ y __response.json__, yo no uso MySQL o DialogFlow, así que no sé si las modificaciones funcionen con esos modulos, en particular el __remplazo %msjant_XX%__ depende de los archivos __JSON__ que se crean en el directorio "chats".
|
- Las modificaciones están enfocadas al uso de los archivos __initial.json__ y __response.json__, yo no uso MySQL o DialogFlow, así que no sé si las modificaciones funcionen con esos modulos, en particular el __remplazo %msjant_XX%__ depende de los archivos __JSON__ que se crean en el directorio "chats".
|
||||||
- Tiene agregado el parche de **botones y listas**, así que funcionan sin problema (las listas no funcionan si el bot esta ligado a un número que use **Whatsapp Business**).
|
- Tiene agregado el parche de **botones y listas**, así que funcionan sin problema (las listas no funcionan si el bot esta ligado a un número que use **Whatsapp Business**).
|
||||||
- Tiene los ultimos parches de **DialogFlow** (27-dic-2022) (When Dialogflow asks for an Image, then **Upload it to Google Drive** and then generate Shared Link)
|
- Tiene los ultimos parches de **DialogFlow** (27-dic-2022) (When Dialogflow asks for an Image, then **Upload it to Google Drive** and then generate Shared Link)
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ const get = (message, num) => new Promise((resolve, reject) => { //MOD by CHV -
|
|||||||
else{x = null;}
|
else{x = null;}
|
||||||
} else
|
} else
|
||||||
{ console.log("NO CUMPLE PASO REQ");
|
{ console.log("NO CUMPLE PASO REQ");
|
||||||
// console.log("pasoReq=" + resps[stepsInitial[i].key.toString()].pasoRequerido + " - PasoAnt=" + ultimoStep)
|
console.log("pasoReq=" + resps[stepsInitial[i].key.toString()].pasoRequerido + " - PasoAnt=" + ultimoStep)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ const get = (message, num) => new Promise((resolve, reject) => { //MOD by CHV -
|
|||||||
// console.log(elNum)
|
// console.log(elNum)
|
||||||
|
|
||||||
if(vamosA != "" && vamosA != undefined && cumplePasoPrevio == true){
|
if(vamosA != "" && vamosA != undefined && cumplePasoPrevio == true){
|
||||||
console.log("ASIGNAMOS VAMOSA = " + vamosA);
|
// console.log("ASIGNAMOS VAMOSA = " + vamosA);
|
||||||
pasoAnterior[elNum] = vamosA;
|
pasoAnterior[elNum] = vamosA;
|
||||||
}
|
}
|
||||||
// console.log("ULTIMOSTEP="+ultimoStep)
|
// console.log("ULTIMOSTEP="+ultimoStep)
|
||||||
@@ -131,8 +131,9 @@ const reply = (step) => new Promise((resolve, reject) => {
|
|||||||
const responseFind = stepsReponse[step] || {};
|
const responseFind = stepsReponse[step] || {};
|
||||||
resData = {
|
resData = {
|
||||||
...resData,
|
...resData,
|
||||||
...responseFind,
|
...responseFind
|
||||||
replyMessage:responseFind.replyMessage.join('')}
|
// replyMessage:responseFind.replyMessage.join('')
|
||||||
|
}
|
||||||
resolve(resData);
|
resolve(resData);
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
43
app.js
43
app.js
@@ -157,7 +157,12 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
if (lastStep) {
|
if (lastStep) {
|
||||||
const response = await responseMessages(lastStep)
|
const response = await responseMessages(lastStep)
|
||||||
console.log("CLIENT="+client+", FROM:"+from+", REPLYMESSAGE:"+response.replyMessage);
|
console.log("CLIENT="+client+", FROM:"+from+", REPLYMESSAGE:"+response.replyMessage);
|
||||||
await sendMessage(client, from, response.replyMessage, lastStep);
|
// await sendMessage(client, from, response.replyMessage, lastStep); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo.
|
||||||
|
response.replyMessage.forEach( async messages => {
|
||||||
|
var thisMsg = messages.mensaje
|
||||||
|
if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')}
|
||||||
|
await sendMessage(client, from, remplazos(thisMsg, client), response.trigger);
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -193,14 +198,20 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
}, response.delay)
|
}, response.delay)
|
||||||
}
|
}
|
||||||
if (response.delay){
|
if (response.delay){
|
||||||
// console.log("+++++++++++++++++++ SENDING MSG WITH DELAY ("+response.delay+") +++++++++++++++++");
|
// await sendMessage(client, from, nuevaRespuesta, response.trigger, step); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo.
|
||||||
setTimeout(() => {
|
response.replyMessage.forEach( async messages => {
|
||||||
sendMessage(client, from, nuevaRespuesta, response.trigger, step);
|
var thisMsg = messages.mensaje
|
||||||
// console.log(" ************* Msg with delay SENT ****************")
|
if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')}
|
||||||
|
await sendMessage(client, from, remplazos(thisMsg, client), response.trigger);
|
||||||
}, response.delay)
|
}, response.delay)
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
await sendMessage(client, from, nuevaRespuesta, response.trigger, step);
|
// await sendMessage(client, from, nuevaRespuesta, response.trigger, step); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo.
|
||||||
|
response.replyMessage.forEach( async messages => {
|
||||||
|
var thisMsg = messages.mensaje
|
||||||
|
if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')}
|
||||||
|
await sendMessage(client, from, remplazos(thisMsg, client), response.trigger);
|
||||||
|
})
|
||||||
}
|
}
|
||||||
if(response.hasOwnProperty('actions')){
|
if(response.hasOwnProperty('actions')){
|
||||||
const { actions } = response;
|
const { actions } = response;
|
||||||
@@ -240,8 +251,8 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
return new Promise(resolve => setTimeout(resolve, ms));
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
}
|
}
|
||||||
async function retardo() {
|
async function retardo() {
|
||||||
for (i=0;i<masivo.length;i++) {
|
for (sp=0;sp<masivo.length;sp++) {
|
||||||
console.log(masivo[i].numero+"@c.us");
|
console.log(masivo[sp].numero+"@c.us");
|
||||||
var rnd = getRandomInt(1,7); // Random entre 1 y 6 segundos.
|
var rnd = getRandomInt(1,7); // Random entre 1 y 6 segundos.
|
||||||
if(rnd==1||rnd==4){saludo = "Hola ";}
|
if(rnd==1||rnd==4){saludo = "Hola ";}
|
||||||
else if(rnd==2||rnd==5){saludo = "Saludos ";}
|
else if(rnd==2||rnd==5){saludo = "Saludos ";}
|
||||||
@@ -252,12 +263,12 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
else if(rnd==4){caritas = "👧🏽🧔🏽";}
|
else if(rnd==4){caritas = "👧🏽🧔🏽";}
|
||||||
else if(rnd==5){caritas = "👩🏻🦰🧔🏽";}
|
else if(rnd==5){caritas = "👩🏻🦰🧔🏽";}
|
||||||
else if(rnd==6){caritas = "🧔🏽👩🏻🦰";}
|
else if(rnd==6){caritas = "🧔🏽👩🏻🦰";}
|
||||||
if(i % 15 === 0){console.log("******** VAN 15, HACEMOS PAUSA DE 10 SEGUNDOS ********"); await sleep(10000);} //
|
if(sp % 15 === 0){console.log("******** VAN 15, HACEMOS PAUSA DE 10 SEGUNDOS ********"); await sleep(10000);} //
|
||||||
console.log(`============= Mandamos el mensaje ${i} ==============`);
|
console.log(`============= Mandamos el mensaje ${sp} ==============`);
|
||||||
var elTextoDelMensaje = caritas + " *" + saludo + "amigo tendero* ❗❗👋🏻\n🕊️ *GUNA* trae para ti dinámicas digitales, con las que podrás participar para ganar increíbles premios. 🏆💸💰\nSigue los siguientes pasos: 😃\n*1.* 📲Sigue la página de Yo Soy Guna en Facebook en la siguiente liga ➡️ https://www.facebook.com/yosoyguna\n*2.* 👉🏻Es importante des click en el botón Me Gusta 👍\n*3.* 🧐Sigue la dinámica que publicaremos , subiendo tu foto 📸 con los siguientes #yosoyguna #gunatenderos #gunachampions\n*4.* 🥳🎉En esta misma página , podrás ver publicados los ganadores🏅 y el tiempo en que serán elegidos. 💲 Además de tener acceso a increíbles promociones 🤑";
|
var elTextoDelMensaje = caritas + " *" + saludo + "amigo tendero* ❗❗👋🏻\n🕊️ *GUNA* trae para ti dinámicas digitales, con las que podrás participar para ganar increíbles premios. 🏆💸💰\nSigue los siguientes pasos: 😃\n*1.* 📲Sigue la página de Yo Soy Guna en Facebook en la siguiente liga ➡️ https://www.facebook.com/yosoyguna\n*2.* 👉🏻Es importante des click en el botón Me Gusta 👍\n*3.* 🧐Sigue la dinámica que publicaremos , subiendo tu foto 📸 con los siguientes #yosoyguna #gunatenderos #gunachampions\n*4.* 🥳🎉En esta misma página , podrás ver publicados los ganadores🏅 y el tiempo en que serán elegidos. 💲 Además de tener acceso a increíbles promociones 🤑";
|
||||||
sendMedia(client, masivo[i].numero+"@c.us", "envioMasivoGuna.jpg");
|
sendMedia(client, masivo[sp].numero+"@c.us", "envioMasivoGuna.jpg");
|
||||||
await sleep(500);
|
await sleep(500);
|
||||||
client.sendMessage(masivo[i].numero+"@c.us", remplazos(elTextoDelMensaje, client));
|
client.sendMessage(masivo[sp].numero+"@c.us", remplazos(elTextoDelMensaje, client));
|
||||||
// client.sendMessage(masivo[i].numero+"@c.us", "Este es un mensaje de prueba para *"+masivo[i].numero+"*, HORA:*"+new Date().toLocaleTimeString()+"*");
|
// client.sendMessage(masivo[i].numero+"@c.us", "Este es un mensaje de prueba para *"+masivo[i].numero+"*, HORA:*"+new Date().toLocaleTimeString()+"*");
|
||||||
console.log(`Esperamos ${rnd} segundos...`);
|
console.log(`Esperamos ${rnd} segundos...`);
|
||||||
await sleep(rnd*1000);
|
await sleep(rnd*1000);
|
||||||
@@ -276,7 +287,13 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
//Si quieres tener un mensaje por defecto
|
//Si quieres tener un mensaje por defecto
|
||||||
if (process.env.DEFAULT_MESSAGE === 'true') {
|
if (process.env.DEFAULT_MESSAGE === 'true') {
|
||||||
const response = await responseMessages('DEFAULT')
|
const response = await responseMessages('DEFAULT')
|
||||||
await sendMessage(client, from, response.replyMessage, response.trigger);
|
// await sendMessage(client, from, response.replyMessage, response.trigger); // Mod by CHV - Para mandar varios mensajes en el mismo response, se cambio esta linea por el forEach de abajo.
|
||||||
|
response.replyMessage.forEach( async messages => {
|
||||||
|
var thisMsg = messages.mensaje
|
||||||
|
if(Array.isArray(messages.mensaje)){thisMsg = messages.mensaje.join('\n')}
|
||||||
|
await sendMessage(client, from, remplazos(thisMsg, client), response.trigger);
|
||||||
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Si quieres enviar botones
|
* Si quieres enviar botones
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ const sendMessage = async (client, number = null, text = null, trigger = null, r
|
|||||||
number = cleanNumber(number)
|
number = cleanNumber(number)
|
||||||
const message = text
|
const message = text
|
||||||
client.sendMessage(number, message);
|
client.sendMessage(number, message);
|
||||||
|
console.log(number, message, regla)
|
||||||
await readChat(number, message, trigger, regla) //MOD by CHV - Agregamos el parametro "regla"
|
await readChat(number, message, trigger, regla) //MOD by CHV - Agregamos el parametro "regla"
|
||||||
console.log(`⚡⚡⚡ Enviando mensajes....`);
|
console.log(`⚡⚡⚡ Enviando mensajes....`);
|
||||||
// console.log("********************* SEND MESSAGE **************************************");
|
// console.log("********************* SEND MESSAGE **************************************");
|
||||||
|
|||||||
@@ -55,6 +55,10 @@
|
|||||||
"keywords": ["6"],
|
"keywords": ["6"],
|
||||||
"key": "botonespaq3"
|
"key": "botonespaq3"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"keywords": "7|*doble*mensaje*",
|
||||||
|
"key": "doblemensaje"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"keywords": ["cursos"],
|
"keywords": ["cursos"],
|
||||||
"key": "cursos"
|
"key": "cursos"
|
||||||
|
|||||||
@@ -1,39 +1,63 @@
|
|||||||
{
|
{
|
||||||
"DEFAULT":{
|
"DEFAULT":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"*Esta respuesta es un respuesta default* cuando no se consigue una palabra clave \n",
|
{ "mensaje":[
|
||||||
"la puedes desactivar en tu archivo .env DEFAULT_MESSAGE=false \n",
|
"*Esta es una respuesta por default* para cuando no se encuentra una palabra clave predefinida.",
|
||||||
"tambien te quiero recordar que si presentas algun error pasarte por el repositorio \n",
|
"Se puede desactivar en el archivo .env DEFAULT_MESSAGE=false",
|
||||||
"https://github.com/leifermendez/bot-whatsapp#chatbot-whatsapp-opensource \n",
|
"tambien te quiero recordar que si presentas algun error pasarte por el repositorio",
|
||||||
"y recuerda tener la ultima versión del proyecto \n\n",
|
"https://github.com/leifermendez/bot-whatsapp#chatbot-whatsapp-opensource",
|
||||||
"Prueba escribiendo *hola* \n"
|
"y recuerda tener la ultima versión del proyecto.",
|
||||||
|
"Prueba escribiendo */Menu*"
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null
|
"trigger":null
|
||||||
},
|
},
|
||||||
|
"doblemensaje":{
|
||||||
|
"replyMessage":[
|
||||||
|
{"mensaje":["Este es un ejemplo del envío de *varios* mensajes con la *misma regla* en el *response.json*"]},
|
||||||
|
{
|
||||||
|
"mensaje":["Este es el *segundo* mensaje.","Contiene dos lineas 🤪"]
|
||||||
|
},
|
||||||
|
{"mensaje":["Este es el *tercer* mensaje, los *tres* van definidos en la *misma regla* del *response.json*"]}
|
||||||
|
],
|
||||||
|
"media":null,
|
||||||
|
"trigger":null,
|
||||||
|
"goto":"menu"
|
||||||
|
},
|
||||||
"menu":{
|
"menu":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"%saludo% %primer_nombre%, este es el menú, selecciona una opción: \n",
|
{
|
||||||
"Pon *1* para mensajes anteriores.\n",
|
"mensaje":[
|
||||||
"Pon *2* para ver remplazos.\n",
|
"%saludo% %primer_nombre%, este es el *menú*, selecciona una opción:",
|
||||||
"Pon *3* para pedir nombre (RegExp).\n",
|
"Pon *1* para ver mensajes anteriores.",
|
||||||
"Pon *4* para un ejemplo de listas y expresiones regulares.\n",
|
"Pon *2* para ver remplazos.",
|
||||||
"Pon *5* para un ejemplo de botones.\n",
|
"Pon *3* para pedir nombre (RegExp).",
|
||||||
"Pon *6* para un ejemplo de botones y regExp.\n"
|
"Pon *4* para un ejemplo de listas y expresiones regulares.",
|
||||||
],
|
"Pon *5* para un ejemplo de botones.",
|
||||||
|
"Pon *6* para un ejemplo de botones y regExp.",
|
||||||
|
"Pon *7* para un ejemplo de envío de *tres* mensajes en una *misma* regla."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
] ,
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null
|
"trigger":null
|
||||||
},
|
},
|
||||||
"opcion1":{
|
"opcion1":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"Seleccionaste la opción 1\n",
|
{
|
||||||
"*Ultimo mensaje:*\n",
|
"mensaje":[
|
||||||
"%msjant_0%\n",
|
"Seleccionaste la *opción 1*",
|
||||||
"*Penultimo mensaje:*\n",
|
"*Ultimo mensaje:*",
|
||||||
"%msjant_1%\n",
|
"%msjant_0%",
|
||||||
"*Antepenultimo mensaje:*\n",
|
"*Penultimo mensaje:*",
|
||||||
"%msjant_2% \n\n",
|
"%msjant_1%",
|
||||||
"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 3 sin necesidad de volver a iniciar con */menu*."
|
"*Antepenultimo mensaje:*",
|
||||||
|
"%msjant_2% \n",
|
||||||
|
"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
@@ -41,12 +65,16 @@
|
|||||||
},
|
},
|
||||||
"opcion2":{
|
"opcion2":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"Seleccionaste la opción 2\n",
|
{
|
||||||
"Remplazamos %saludo.% con *\"%saludo%\"*\n",
|
"mensaje":[
|
||||||
"Remplazamos %dia_semana.% con *\"%dia_semana%\"*\n",
|
"Seleccionaste la *opción 2*",
|
||||||
"Remplazamos %hora24.%:%minutos.% con *\"%hora24%:%minutos%\"*\n",
|
"Remplazamos %saludo.% con *\"%saludo%\"*",
|
||||||
"Remplazamos %.rnd_👍🏽,🤞🏼,🤪,🤔% con '%rnd_👍🏽,🤞🏼,🤪,🤔%'\n\n",
|
"Remplazamos %dia_semana.% con *\"%dia_semana%\"*",
|
||||||
"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 3 sin necesidad de volver a iniciar con */menu*."
|
"Remplazamos %hora24.%:%minutos.% con *\"%hora24%:%minutos%\"*",
|
||||||
|
"Remplazamos %.rnd_👍🏽,🤞🏼,🤪,🤔% con '%rnd_👍🏽,🤞🏼,🤪,🤔%'\n",
|
||||||
|
"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
@@ -54,18 +82,26 @@
|
|||||||
},
|
},
|
||||||
"opcion3":{
|
"opcion3":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"Seleccionaste la opción 3\n\n",
|
{
|
||||||
"Por favor dame tu nombre.\n\n",
|
"mensaje":[
|
||||||
"Aquí vamos a aceptar *cualquier* texto, porque en el *initial.json* tenemos keywords : \"***\" (un asterisco en expresiones regulares quiere decir *\"cualquier cosa\"*)\n",
|
"Seleccionaste la *opción 3*\n",
|
||||||
"Y en *response.json* en la opción correspondiente tenemos \"pasoRequerido\" : \"menu\", que quiere decir que SOLO se va a disparar cuando el paso anterior sea \"menu\"."
|
"Por favor dame tu nombre.\n",
|
||||||
|
"Aquí vamos a aceptar *cualquier* texto, porque en el *initial.json* tenemos keywords : \"*\" (un asterisco en expresiones regulares quiere decir *\"cualquier cosa\"*)",
|
||||||
|
"Y en *response.json* en la opción correspondiente tenemos \"pasoRequerido\" : \"menu\", que quiere decir que SOLO se va a disparar cuando el paso anterior sea \"menu\"."
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"pasoRequerido":"menu"
|
"pasoRequerido":"menu"
|
||||||
},
|
},
|
||||||
"recibenombre":{
|
"recibenombre":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"Gracias por tu nombre *%msjant_0%*.\n\n",
|
{
|
||||||
"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 3 sin necesidad de volver a iniciar con */menu*."
|
"mensaje":[
|
||||||
|
"Gracias por tu nombre *%msjant_0%*.\n",
|
||||||
|
"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
@@ -74,7 +110,11 @@
|
|||||||
},
|
},
|
||||||
"gRevisaCliente":{
|
"gRevisaCliente":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"/URL=http://localhost:8888/dbrquery?j={\"query\":\"select_revisacliente_GUNA\",\"exec\":\"ExecuteQuery\",\"params\":{\"par1\":\"XXPARAM1XX\"}}"
|
{
|
||||||
|
"mensaje":[
|
||||||
|
"/URL=http://localhost:8888/dbrquery?j={\"query\":\"select_revisacliente_GUNA\",\"exec\":\"ExecuteQuery\",\"params\":{\"par1\":\"XXPARAM1XX\"}}"
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
@@ -82,7 +122,11 @@
|
|||||||
},
|
},
|
||||||
"gGuardainfo":{
|
"gGuardainfo":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"/URL=http://localhost:8888/dbrquery?j={\"query\":\"insert_registroGallina_GUNA\",\"exec\":\"ExecuteCommand\",\"params\":{\"par1\":\"XXPARAM1XX\", \"par2\":\"XXPARAM2XX\", \"par3\":\"XXPARAM3XX\", \"par4\":\"XXPARAM4XX\"}}"
|
{
|
||||||
|
"mensaje":[
|
||||||
|
"/URL=http://localhost:8888/dbrquery?j={\"query\":\"insert_registroGallina_GUNA\",\"exec\":\"ExecuteCommand\",\"params\":{\"par1\":\"XXPARAM1XX\", \"par2\":\"XXPARAM2XX\", \"par3\":\"XXPARAM3XX\", \"par4\":\"XXPARAM4XX\"}}"
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
@@ -90,14 +134,26 @@
|
|||||||
},
|
},
|
||||||
"rnd":{
|
"rnd":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"%saludo%\nHoy es %dia_semana%.\nSon las %hora24%:%minutos% hrs.\nSon las %hora12%:%minutos% %ampm%\n*Palabra random:* %rnd_arbol,burro,cabra,dinosaurio,elefante,fuego,gorila%\n*Emoji random:* %rnd_👍🏽,😁,🤣,🤔,🤦🏽♂️,🙄,😎%\n*Número random:* %rnd_1,2,3,4,5,6,7%\n"
|
{
|
||||||
|
"mensaje":[
|
||||||
|
"%saludo%",
|
||||||
|
"Hoy es %dia_semana%.",
|
||||||
|
"Son las %hora24%:%minutos% hrs.",
|
||||||
|
"Son las %hora12%:%minutos% %ampm%",
|
||||||
|
"*Palabra random:* %rnd_arbol,burro,cabra,dinosaurio,elefante,fuego,gorila%",
|
||||||
|
"*Emoji random:* %rnd_👍🏽,😁,🤣,🤔,🤦🏽♂️,🙄,😎%",
|
||||||
|
"*Número random:* %rnd_1,2,3,4,5,6,7%\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null
|
"trigger":null
|
||||||
},
|
},
|
||||||
"rnd2":{
|
"rnd2":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
""
|
{
|
||||||
|
"mensaje":[""]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
@@ -114,12 +170,14 @@
|
|||||||
},
|
},
|
||||||
"lista":{
|
"lista":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"*%saludo%*, este es un ejemplo de listas"
|
{
|
||||||
|
"mensaje":["*%saludo%*, este es un ejemplo de listas"]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"actions":{
|
"actions":{
|
||||||
"body":"Hola *%primer_nombre%*, estos son ejemplos del uso de expresiones regulares, todas las opciones de la lista disparan la misma regla:\n\n'*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*'\n\nAutomáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.",
|
"body":"Hola *%primer_nombre%*, estos son ejemplos del uso de expresiones regulares, *todas* las opciones de la *lista* disparan la misma regla:\n\n'*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*'\n\nAutomáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.",
|
||||||
"buttonText":"Ver los ejemplos de RegEx",
|
"buttonText":"Ver los ejemplos de RegEx",
|
||||||
"sections": [
|
"sections": [
|
||||||
{"title":"Selecciona un mensaje:",
|
{"title":"Selecciona un mensaje:",
|
||||||
@@ -138,14 +196,16 @@
|
|||||||
},
|
},
|
||||||
"botones":{
|
"botones":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"*%saludo%*, este es un ejemplo de botones"
|
{
|
||||||
|
"mensaje":["*%saludo%*, este es un ejemplo de botones"]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":"https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif",
|
"media":"https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif",
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"actions":{
|
"actions":{
|
||||||
"title":"¿Que te interesa ver %primer_nombre%?",
|
"title":"¿Que te interesa ver %primer_nombre%?",
|
||||||
"message":"Recuerda todo este contenido es gratis y estaria genial que me sigas!",
|
"message":"Recuerda todo este contenido es gratis y estaria genial que me sigas!",
|
||||||
"footer":"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.",
|
"footer":"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*.",
|
||||||
"buttons":[
|
"buttons":[
|
||||||
{"body":"Cursos"},
|
{"body":"Cursos"},
|
||||||
{"body":"Youtube"},
|
{"body":"Youtube"},
|
||||||
@@ -156,56 +216,86 @@
|
|||||||
"goto":"menu"
|
"goto":"menu"
|
||||||
},
|
},
|
||||||
"cursos":{
|
"cursos":{
|
||||||
"replyMessage":["*%saludo% %primer_nombre%*, seleccionaste *Cursos*\n\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*."],
|
"replyMessage":[
|
||||||
|
{
|
||||||
|
"mensaje":["*%saludo% %primer_nombre%*, seleccionaste *Cursos*\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."]
|
||||||
|
}
|
||||||
|
],
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
"goto":"menu"
|
"goto":"menu"
|
||||||
},
|
},
|
||||||
"youtube":{
|
"youtube":{
|
||||||
"replyMessage":["*%saludo% %primer_nombre%*, seleccionaste *YouTube*\n\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*."],
|
"replyMessage":[
|
||||||
|
{
|
||||||
|
"mensaje":["*%saludo% %primer_nombre%*, seleccionaste *YouTube*\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."]
|
||||||
|
}
|
||||||
|
],
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
"goto":"menu"
|
"goto":"menu"
|
||||||
},
|
},
|
||||||
"telegram":{
|
"telegram":{
|
||||||
"replyMessage":["*%saludo% %primer_nombre%*, seleccionaste *Telegram*\n\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*."],
|
"replyMessage":[
|
||||||
|
{
|
||||||
|
"mensaje":["*%saludo% %primer_nombre%*, seleccionaste *Telegram*\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."]
|
||||||
|
}
|
||||||
|
],
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
"goto":"menu"
|
"goto":"menu"
|
||||||
},
|
},
|
||||||
"manzana":{
|
"manzana":{
|
||||||
"replyMessage":["*%saludo% %primer_nombre%*, seleccionaste *manzana*\n\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*."],
|
"replyMessage":[
|
||||||
|
{
|
||||||
|
"mensaje":["*%saludo% %primer_nombre%*, seleccionaste *manzana*\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."]
|
||||||
|
}
|
||||||
|
],
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
"goto":"menu"
|
"goto":"menu"
|
||||||
},
|
},
|
||||||
"mango":{
|
"mango":{
|
||||||
"replyMessage":["*%saludo% %primer_nombre%*, seleccionaste *mango*\n\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*."],
|
"replyMessage":[
|
||||||
|
{
|
||||||
|
"mensaje":["*%saludo% %primer_nombre%*, seleccionaste *mango*\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."]
|
||||||
|
}
|
||||||
|
],
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
"goto":"menu"
|
"goto":"menu"
|
||||||
},
|
},
|
||||||
"platano":{
|
"platano":{
|
||||||
"replyMessage":["*%saludo% %primer_nombre%*, seleccionaste *platano*\n\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*."],
|
"replyMessage":[
|
||||||
|
{
|
||||||
|
"mensaje":["*%saludo% %primer_nombre%*, seleccionaste *platano*\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."]
|
||||||
|
}
|
||||||
|
],
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
"goto":"menu"
|
"goto":"menu"
|
||||||
},
|
},
|
||||||
"paq3":{
|
"paq3":{
|
||||||
"replyMessage":["*%saludo% %primer_nombre%*, seleccionaste el *paquete 3 de Angular*\n\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*."],
|
"replyMessage":[
|
||||||
|
{
|
||||||
|
"mensaje":["*%saludo% %primer_nombre%*, seleccionaste el *paquete 3 de Angular*\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 7 sin necesidad de volver a iniciar con */menu*."]
|
||||||
|
}
|
||||||
|
],
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"pasoRequerido":"menu",
|
"pasoRequerido":"menu",
|
||||||
"goto":"menu"
|
"goto":"menu"
|
||||||
},
|
},
|
||||||
"botonespaq3":{
|
"botonespaq3":{
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"*%saludo%*, este es un ejemplo de botones y regExp"
|
{
|
||||||
|
"mensaje":["*%saludo%*, este es un ejemplo de botones y regExp"]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"actions":{
|
"actions":{
|
||||||
"title":"Hola %primer_nombre%, escoge un mensaje:",
|
"title":"Hola %primer_nombre%, escoge un mensaje:",
|
||||||
"message":"Estos son ejemplos del uso de expresiones regulares, todos los botones disparan la misma regla:\n\n'*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*'\n\n",
|
"message":"Estos son ejemplos del uso de expresiones regulares, *todos* los botones disparan la misma regla:\n\n'*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*'\n\n",
|
||||||
"footer":"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.",
|
"footer":"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.",
|
||||||
"buttons":[
|
"buttons":[
|
||||||
{"body":"Me gusta el paquete 3"},
|
{"body":"Me gusta el paquete 3"},
|
||||||
|
|||||||
22
package-lock.json
generated
22
package-lock.json
generated
@@ -25,7 +25,7 @@
|
|||||||
"qrcode-terminal": "^0.12.0",
|
"qrcode-terminal": "^0.12.0",
|
||||||
"socket.io": "^4.5.1",
|
"socket.io": "^4.5.1",
|
||||||
"stormdb": "^0.6.0",
|
"stormdb": "^0.6.0",
|
||||||
"whatsapp-web.js": "github:pedroslopez/whatsapp-web.js#fix-buttons-list",
|
"whatsapp-web.js": "github:cheveguerra/whatsapp-web.js#WaWJS",
|
||||||
"xlsx": "^0.18.5"
|
"xlsx": "^0.18.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -1526,9 +1526,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/engine.io-parser": {
|
"node_modules/engine.io-parser": {
|
||||||
"version": "5.0.4",
|
"version": "5.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.5.tgz",
|
||||||
"integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==",
|
"integrity": "sha512-mjEyaa4zhuuRhaSLOdjEb57X0XPP9JEsnXI4E+ivhwT0GgzUogARx4MqoY1jQyB+4Bkz3BUOmzL7t9RMKmlG3g==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
}
|
}
|
||||||
@@ -2142,9 +2142,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/gcp-metadata": {
|
"node_modules/gcp-metadata": {
|
||||||
"version": "5.1.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.2.0.tgz",
|
||||||
"integrity": "sha512-QVjouEXvNVG/nde6VZDXXFTB02xQdztaumkWCHUff58qsdCS05/8OPh68fQ2QnArfAzZTwfEc979FHSHsU8EWg==",
|
"integrity": "sha512-aFhhvvNycky2QyhG+dcfEdHBF0FRbYcf39s6WNHUDysKSrbJ5vuFbjydxBcmewtXeV248GP8dWT3ByPNxsyHCw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"gaxios": "^5.0.0",
|
"gaxios": "^5.0.0",
|
||||||
"json-bigint": "^1.0.0"
|
"json-bigint": "^1.0.0"
|
||||||
@@ -4774,9 +4774,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/systeminformation": {
|
"node_modules/systeminformation": {
|
||||||
"version": "5.16.9",
|
"version": "5.17.1",
|
||||||
"resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.16.9.tgz",
|
"resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.17.1.tgz",
|
||||||
"integrity": "sha512-QTlv3GGSromPeLVW3pzM6uxU8RbkacW9e0+ZX23GAXaX+XE0UToSygAxCJDHSty6RB9lAFHCHg+FfiXFChi/+w==",
|
"integrity": "sha512-NX/EjbKznOTgt2pfCzZb5bPj5YJOO9mCUrRXquGMtmlfs+BowVaMsJSUUCvqOm9wexx4/F+ng4JQp6I4sG+SyA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -5121,7 +5121,7 @@
|
|||||||
},
|
},
|
||||||
"node_modules/whatsapp-web.js": {
|
"node_modules/whatsapp-web.js": {
|
||||||
"version": "1.18.4",
|
"version": "1.18.4",
|
||||||
"resolved": "git+ssh://git@github.com/pedroslopez/whatsapp-web.js.git#d1b2df9051bcfca3a1eb0c4b73f45f3ef6be784b",
|
"resolved": "git+ssh://git@github.com/cheveguerra/whatsapp-web.js.git#b3e5d99f521c6d594fd2e204f12d3fd8ae4eba3b",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pedroslopez/moduleraid": "^5.0.2",
|
"@pedroslopez/moduleraid": "^5.0.2",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "test-ws-bot",
|
"name": "chv-wweb-bot",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "app.js",
|
"main": "app.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
"qrcode-terminal": "^0.12.0",
|
"qrcode-terminal": "^0.12.0",
|
||||||
"socket.io": "^4.5.1",
|
"socket.io": "^4.5.1",
|
||||||
"stormdb": "^0.6.0",
|
"stormdb": "^0.6.0",
|
||||||
"whatsapp-web.js": "github:pedroslopez/whatsapp-web.js#fix-buttons-list",
|
"whatsapp-web.js": "github:cheveguerra/whatsapp-web.js#WaWJS2",
|
||||||
"xlsx": "^0.18.5"
|
"xlsx": "^0.18.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
Reference in New Issue
Block a user