mirror of
https://github.com/cheveguerra/botLeiferAurik-Mod_2.0.git
synced 2026-04-17 19:36:17 +00:00
feat: Funciones
This commit is contained in:
144
app.js
144
app.js
@@ -45,11 +45,7 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
// console.log("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
|
// console.log("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
|
||||||
console.log("+++++++++++++++++++++++++++++++++++++ INICIO +++++++++++++++++++++++++++++++++++++++");
|
console.log("+++++++++++++++++++++++++++++++++++++ INICIO +++++++++++++++++++++++++++++++++++++++");
|
||||||
// console.log("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
|
// console.log("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
|
||||||
|
|
||||||
client.theMsg = msg;
|
client.theMsg = msg;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
console.log("HORA:"+new Date().toLocaleTimeString()+" FROM:"+from+", BODY:"+body+", HASMEDIA:"+hasMedia);
|
console.log("HORA:"+new Date().toLocaleTimeString()+" FROM:"+from+", BODY:"+body+", HASMEDIA:"+hasMedia);
|
||||||
newBody = removeDiacritics(body) //MOD by CHV - Agregamos para quitar acentos
|
newBody = removeDiacritics(body) //MOD by CHV - Agregamos para quitar acentos
|
||||||
// newBody = remplazos(newBody);
|
// newBody = remplazos(newBody);
|
||||||
@@ -146,15 +142,13 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
// const buttons_reply = new Buttons("Por favor vuelve a intentar, mandando *SOLO* la palabra *gallina* con una diagonal al principio 👇🏽 \n\n */gallina*\n ", [{body: "/gallina", id: 'errorGallina'}], 'Error', 'O haz clic en el siguiente botón') // Reply button
|
// const buttons_reply = new Buttons("Por favor vuelve a intentar, mandando *SOLO* la palabra *gallina* con una diagonal al principio 👇🏽 \n\n */gallina*\n ", [{body: "/gallina", id: 'errorGallina'}], 'Error', 'O haz clic en el siguiente botón') // Reply button
|
||||||
// for (const component of [buttons_reply]) await client.sendMessage(from, component);
|
// for (const component of [buttons_reply]) await client.sendMessage(from, component);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ver si viene de un paso anterior
|
* Ver si viene de un paso anterior
|
||||||
* Aqui podemos ir agregando más pasos
|
* Aqui podemos ir agregando más pasos
|
||||||
* a tu gusto!
|
* a tu gusto!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const lastStep = await lastTrigger(from) || null;
|
const lastStep = await lastTrigger(from) || null;
|
||||||
// console.log("LAST STEP="+lastStep+", FROM:"+from);
|
// console.log("LAST STEP="+lastStep+", FROM:"+from);
|
||||||
if (lastStep) {
|
if (lastStep) {
|
||||||
@@ -167,7 +161,7 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
await sendMessage(client, from, remplazos(thisMsg, client), response.trigger);
|
await sendMessage(client, from, remplazos(thisMsg, client), response.trigger);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Respondemos al primero paso si encuentra palabras clave
|
* Respondemos al primero paso si encuentra palabras clave
|
||||||
*/
|
*/
|
||||||
@@ -189,7 +183,6 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
console.log('NUEVA RESPUESTA=', nuevaRespuesta)
|
console.log('NUEVA RESPUESTA=', nuevaRespuesta)
|
||||||
|
|
||||||
if(nuevaRespuesta.search("/URL")>-1){
|
if(nuevaRespuesta.search("/URL")>-1){
|
||||||
|
|
||||||
// Necesita instalado axios version 0.27.2 (npm i axios@0.27.2), si se instala una version mas nueva manda error de "GET no definido" o algo asi.
|
// Necesita instalado axios version 0.27.2 (npm i axios@0.27.2), si se instala una version mas nueva manda error de "GET no definido" o algo asi.
|
||||||
// console.log(theUrl);
|
// console.log(theUrl);
|
||||||
console.log("========== GET URL ============");
|
console.log("========== GET URL ============");
|
||||||
@@ -201,7 +194,6 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
console.log('PASOREQUERIDO=', pasoRequerido)
|
console.log('PASOREQUERIDO=', pasoRequerido)
|
||||||
if(pasoRequerido=="soporte"){
|
if(pasoRequerido=="soporte"){
|
||||||
// var theUrl=nuevaRespuesta.substring(5).replace("XXPARAM1XX",newBody);
|
// var theUrl=nuevaRespuesta.substring(5).replace("XXPARAM1XX",newBody);
|
||||||
|
|
||||||
// const RES = await axios.get(theUrl).then(function (response) {
|
// const RES = await axios.get(theUrl).then(function (response) {
|
||||||
// const { AffectedRows } = response.data['respuesta'][0]
|
// const { AffectedRows } = response.data['respuesta'][0]
|
||||||
// console.log('AFFECTED_ROWS = ', AffectedRows)
|
// console.log('AFFECTED_ROWS = ', AffectedRows)
|
||||||
@@ -218,13 +210,101 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
// return error
|
// return error
|
||||||
// });
|
// });
|
||||||
// console.log('RES=', RES)
|
// console.log('RES=', RES)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
if(response.hasOwnProperty('url') && response.hasOwnProperty('values')){
|
* Llama el API para tre categoria de Guna.
|
||||||
let theURL = response.url;
|
* @param {*} ctx El objeto del mensaje.
|
||||||
let url0 = theURL
|
*/
|
||||||
// console.log('EL_URL=', theURL)
|
async function getGunaCats(ctx) {
|
||||||
|
// let par1 = ctx.theMsg.body
|
||||||
|
// let theUrl = `http://localhost:8888/dbrquery?j={"query":"selectTipoFerreroMty","exec":"ExecuteQuery","params":{"par1":"${par1}"}}`
|
||||||
|
// const RES = await axios.get(theUrl).then(function (response) {
|
||||||
|
// console.log('getGunaCats = ', response.data.respuesta.length, response.data.respuesta)
|
||||||
|
// let elMensaje = "%saludo%,\nEscoge una de nuestras categorías:\n\n"
|
||||||
|
// let lasOpciones = "["
|
||||||
|
// for(reg=0;reg<response.data.respuesta.length;reg++) {
|
||||||
|
// // console.log("*** ", response.data.respuesta[reg])
|
||||||
|
// lasOpciones = lasOpciones + `{id:'${response.data.respuesta[reg].CAT_PT_DESC}', title:'${response.data.respuesta[reg].CAT_PT_DESC}'}`
|
||||||
|
// if(reg<response.data.respuesta.length-1) {lasOpciones=lasOpciones + ','}
|
||||||
|
// elMensaje = elMensaje + (reg+1) + " .- " + response.data.respuesta[reg].CAT_PT_DESC + "\n"
|
||||||
|
// }
|
||||||
|
// lasOpciones = lasOpciones + "]"
|
||||||
|
// console.log("lasOpciones="+lasOpciones)
|
||||||
|
// const productList = new List(
|
||||||
|
// "Aqui está la lista de nuestras categorias",
|
||||||
|
// "Ver las categorías",
|
||||||
|
// [
|
||||||
|
// {
|
||||||
|
// title: "Lista de categprías",
|
||||||
|
// rows: lasOpciones,
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "Selecciona una categoría"
|
||||||
|
// )
|
||||||
|
|
||||||
|
// client.sendMessage(from, productList)
|
||||||
|
// // sendMessagList(client, from, null, productList);
|
||||||
|
// return "1"
|
||||||
|
// }).catch(function (error) {
|
||||||
|
// console.log(error);
|
||||||
|
// return error
|
||||||
|
// });
|
||||||
|
|
||||||
|
const productList = {
|
||||||
|
"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",
|
||||||
|
"sections": [
|
||||||
|
{"title":"Selecciona un mensaje:",
|
||||||
|
"rows":[
|
||||||
|
{"id": "paq3", "title": "Me gusta el paquete 3"},
|
||||||
|
{"id": "paqA", "title": "Por favor mas info del paquete de Angular"},
|
||||||
|
{"id": "pakA", "title": "Me gustó el pak de Angular"},
|
||||||
|
{"id": "pak3", "title": "Estoy interesado en el pak 3"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title":"Por favor selecciona un producto"
|
||||||
|
}
|
||||||
|
sendMessageList(client, from, null, productList)
|
||||||
|
// client.sendMessage(from, productList)
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Llama el API para desbloquear un usuario.
|
||||||
|
* @param {*} ctx El objeto del mensaje.
|
||||||
|
*/
|
||||||
|
async function desbloqueaUsuario(ctx) {
|
||||||
|
let par1 = ctx.theMsg.body
|
||||||
|
let theUrl = `http://localhost:8888/dbrquery?j={"query":"update_usuario_guna_nobajas","exec":"ExecuteCommand","params":{"par1":"${par1}", "par2":"XXPARAM2XX", "par3":"XXPARAM3XX"}}`
|
||||||
|
const RES = await axios.get(theUrl).then(function (response) {
|
||||||
|
const { AffectedRows } = response.data['respuesta'][0]
|
||||||
|
console.log('AFFECTED_ROWS = ', AffectedRows)
|
||||||
|
if(response.data['respuesta'][0]['AffectedRows']=="1"){
|
||||||
|
sendMessage(client, from, "Listo, usuario *"+response.data['params']['par1']+"* desbloqueado, por favor *cerrar navegadores* y reingresar.", response.trigger, step);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
sendMessage(client, from, "El usuario *"+response.data['params']['par1']+"* no *existe* o esta dado de *baja*, por favor revisarlo y volver a intentar.", response.trigger, step);
|
||||||
|
}
|
||||||
|
return response
|
||||||
|
}).catch(function (error) {
|
||||||
|
console.log(error);
|
||||||
|
return error
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Si quieres ejecutar una función.
|
||||||
|
*/
|
||||||
|
if(response.hasOwnProperty('funcion')){
|
||||||
|
console.log("############# Encontramos Funcion, ejecutamos funcion " + response.funcion)
|
||||||
|
laFuncion = response.funcion + "(client)"
|
||||||
|
eval(laFuncion)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(response.hasOwnProperty('urlXXXXXXX') && response.hasOwnProperty('values')){
|
||||||
|
let theURL = response.url;
|
||||||
|
let url0 = theURL
|
||||||
let vals = response.values // Traemos los valores desde el response.json
|
let vals = response.values // Traemos los valores desde el response.json
|
||||||
let j = theURL.split('j=')[1] // Traemos el JSON del URL.
|
let j = theURL.split('j=')[1] // Traemos el JSON del URL.
|
||||||
let j2 = JSON.parse(j)
|
let j2 = JSON.parse(j)
|
||||||
@@ -239,23 +319,29 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
cont++
|
cont++
|
||||||
}
|
}
|
||||||
// console.log('THE_URL=', url2)
|
// console.log('THE_URL=', url2)
|
||||||
desbloqueaUsuario(url2, step) //Llamamos al API para desbloquear el usuario.
|
desbloqueaUsuario2(url2, step) //Llamamos al API para desbloquear el usuario.
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Si quieres enviar imagen
|
* Si quieres enviar imagen.
|
||||||
*/
|
*/
|
||||||
if (!response.delay && response.media) {
|
if (!response.delay && response.media) {
|
||||||
// console.log("++++++++++++++++++++++++++++ SEND MEDIA NO DELAY +++++++++++++++++++++++++++++++++++");
|
// console.log("++++++++++++++++++++++++++++ SEND MEDIA NO DELAY +++++++++++++++++++++++++++++++++++");
|
||||||
sendMedia(client, from, response.media, response.trigger);
|
sendMedia(client, from, response.media, response.trigger);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Si quieres enviar imagen con retraso.
|
||||||
|
*/
|
||||||
if (response.delay && response.media) {
|
if (response.delay && response.media) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// console.log("++++++++++++++++++++++++++++ SEND MEDIA AND DELAY +++++++++++++++++++++++++++++++++++");
|
// console.log("++++++++++++++++++++++++++++ SEND MEDIA AND DELAY +++++++++++++++++++++++++++++++++++");
|
||||||
sendMedia(client, from, response.media, response.trigger);
|
sendMedia(client, from, response.media, response.trigger);
|
||||||
}, response.delay)
|
}, response.delay)
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Si quieres enviar mensaje con retraso.
|
||||||
|
*/
|
||||||
if (response.delay){
|
if (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.
|
// 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(() => {
|
setTimeout(() => {
|
||||||
@@ -267,6 +353,9 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
}, response.delay)
|
}, response.delay)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
/**
|
||||||
|
* Si quieres enviar un mensaje.
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
// 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.
|
// 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 => {
|
response.replyMessage.forEach( async messages => {
|
||||||
@@ -402,7 +491,6 @@ if(message=='/spam'){
|
|||||||
/**
|
/**
|
||||||
* Este evento es necesario para el filtro de Dialogflow
|
* Este evento es necesario para el filtro de Dialogflow
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const listenMessageFromBot = () => client.on('message_create', async botMsg => {
|
const listenMessageFromBot = () => client.on('message_create', async botMsg => {
|
||||||
const { body } = botMsg;
|
const { body } = botMsg;
|
||||||
const dialogflowFilterConfig = fs.readFileSync('./flow/dialogflow.json', 'utf8');
|
const dialogflowFilterConfig = fs.readFileSync('./flow/dialogflow.json', 'utf8');
|
||||||
@@ -468,7 +556,7 @@ client.initialize();
|
|||||||
* @param {*} theURL El URL para llamar al API
|
* @param {*} theURL El URL para llamar al API
|
||||||
* @param {*} step
|
* @param {*} step
|
||||||
*/
|
*/
|
||||||
async function desbloqueaUsuario (theUrl, step) {
|
async function desbloqueaUsuario2(theUrl, step) {
|
||||||
const {from} = client.theMsg
|
const {from} = client.theMsg
|
||||||
const RES = await axios.get(theUrl).then(function (response) {
|
const RES = await axios.get(theUrl).then(function (response) {
|
||||||
const { AffectedRows } = response.data['respuesta'][0]
|
const { AffectedRows } = response.data['respuesta'][0]
|
||||||
@@ -484,10 +572,6 @@ client.initialize();
|
|||||||
console.log(error);
|
console.log(error);
|
||||||
return error
|
return error
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// const r = await axios.get(theUrl).then(function (response) {
|
// const r = await axios.get(theUrl).then(function (response) {
|
||||||
// console.log('AXIOS RES=', response)
|
// console.log('AXIOS RES=', response)
|
||||||
// }).catch(function (error) {
|
// }).catch(function (error) {
|
||||||
|
|||||||
@@ -342,23 +342,20 @@
|
|||||||
"Desbloqueo":{
|
"Desbloqueo":{
|
||||||
"keywords": "*",
|
"keywords": "*",
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"/URL=http://localhost:8888/dbrquery?j={\"query\":\"update_usuario_guna_nobajas\",\"exec\":\"ExecuteCommand\",\"params\":{\"par1\":\"XXPARAM1XX\"}}"
|
"Mensaje de desbloqueo de usuarios."
|
||||||
],
|
],
|
||||||
"url":"http://localhost:8888/dbrquery?j={\"query\":\"update_usuario_guna_nobajas\",\"exec\":\"ExecuteCommand\",\"params\":{\"par1\":\"XXPARAM1XX\", \"par2\":\"XXPARAM2XX\", \"par3\":\"XXPARAM3XX\"}}",
|
"funcion":"desbloqueaUsuario",
|
||||||
"values":["%body%","CDIAZ","%solonumero%"],
|
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null,
|
||||||
"pasoRequerido":"soporte"
|
"pasoRequerido":"soporte"
|
||||||
},
|
},
|
||||||
"gunaCats":{
|
"gunaCats":{
|
||||||
"keywords": "*",
|
"keywords": "/guna",
|
||||||
"replyMessage":[
|
"replyMessage":[
|
||||||
"/URL=http://localhost:8888/dbrquery?j={\"query\":\"update_usuario_guna_nobajas\",\"exec\":\"ExecuteCommand\",\"params\":{\"par1\":\"XXPARAM1XX\"}}"
|
"Mensaje de getGunaCats"
|
||||||
],
|
],
|
||||||
"url":"http://localhost:8888/dbrquery?j={\"query\":\"update_usuario_guna_nobajas\",\"exec\":\"ExecuteCommand\",\"params\":{\"par1\":\"XXPARAM1XX\", \"par2\":\"XXPARAM2XX\", \"par3\":\"XXPARAM3XX\"}}",
|
"funcion":"getGunaCats",
|
||||||
"values":["%body%","CDIAZ","%solonumero%"],
|
|
||||||
"media":null,
|
"media":null,
|
||||||
"trigger":null,
|
"trigger":null
|
||||||
"pasoRequerido":"soporte"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user