mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 04:29:16 +00:00
.
This commit is contained in:
@@ -3,37 +3,42 @@
|
||||
Se separaran responsabilidades del proyecto en diferentes packages, de esta manera se podra versionar y controlar los diferentes versionamientos y cambios con un mayor desacoplamiento.
|
||||
|
||||
##### Principales Funciones
|
||||
El bot tiene tres funciones principales hasta este momento la cuales divideremos en paquetes para que puedan trabajarse y por separador sin acoplamiento.
|
||||
|
||||
__Package CLI__ (*Command Line Interface*)
|
||||
El bot tiene tres funciones principales hasta este momento la cuales divideremos en paquetes para que puedan trabajarse y por separador sin acoplamiento.
|
||||
|
||||
**Package CLI** (_Command Line Interface_)
|
||||
|
||||
> Sera basicamente un asistente via `cosola` el cual nos ayudara a realizar las instalacion de las dependencias necesarias y a crear un archivo de configuracion para tener un migrado rápido.
|
||||
> La idea esque se pueda ejecutar un commando parecido a `npm create bot@leifermendez` o algo parecido y comienze a instalar todo.
|
||||
> La idea esque se pueda ejecutar un commando parecido a `npm create bot@leifermendez` o algo parecido y comienze a instalar todo.
|
||||
|
||||
🤞 Funciones deseadas:
|
||||
|
||||
- Que actualice y corrija los problema de versionamientos más frecuetes
|
||||
- Verificar la versión de NODE correcta
|
||||
- Verificar OS para brindar mejor soporte de puppeter
|
||||
- Limpiar sesion, borrar carpeta de sesion
|
||||
- Seleccionar provider
|
||||
- Poder usar un archivo .json con la configuración
|
||||
- Que actualice y corrija los problema de versionamientos más frecuetes
|
||||
- Verificar la versión de NODE correcta
|
||||
- Verificar OS para brindar mejor soporte de puppeter
|
||||
- Limpiar sesion, borrar carpeta de sesion
|
||||
- Seleccionar provider
|
||||
- Poder usar un archivo .json con la configuración
|
||||
|
||||
**Package Provider**
|
||||
|
||||
__Package Provider__
|
||||
> Es parte clave del proyecto la idea es poder tener la opcion de incluir otro proveedor de mensajeria como la api oficial o api de twilio
|
||||
|
||||
- WhatsappWeb (*default*)
|
||||
- Whatsapp API official
|
||||
- Twilio
|
||||
- WhatsappWeb (_default_)
|
||||
- Whatsapp API official
|
||||
- Twilio
|
||||
|
||||
**Package Input/Output**
|
||||
|
||||
__Package Input/Output__
|
||||
> Gestionar los diferentes mensajes entranates y poder responder, a la vez de mantener un registro de los datos
|
||||
|
||||
---------
|
||||
__Comunidad__
|
||||
---
|
||||
|
||||
**Comunidad**
|
||||
|
||||
> Forma parte de este proyecto.
|
||||
|
||||
- [Discord](https://link.codigoencasa.com/DISCORD)
|
||||
- [Twitter](https://twitter.com/leifermendez)
|
||||
- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
|
||||
- [Telegram](https://t.me/leifermendez)
|
||||
- [Discord](https://link.codigoencasa.com/DISCORD)
|
||||
- [Twitter](https://twitter.com/leifermendez)
|
||||
- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
|
||||
- [Telegram](https://t.me/leifermendez)
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
'use strict';
|
||||
'use strict'
|
||||
|
||||
var require$$0$3 = require('prompts');
|
||||
var require$$0 = require('kleur');
|
||||
var require$$0$1 = require('fs');
|
||||
var require$$1$1 = require('path');
|
||||
var require$$1 = require('cross-spawn');
|
||||
var require$$2 = require('detect-package-manager');
|
||||
var require$$0$2 = require('rimraf');
|
||||
var require$$0$3 = require('prompts')
|
||||
var require$$0 = require('kleur')
|
||||
var require$$0$1 = require('fs')
|
||||
var require$$1$1 = require('path')
|
||||
var require$$1 = require('cross-spawn')
|
||||
var require$$2 = require('detect-package-manager')
|
||||
var require$$0$2 = require('rimraf')
|
||||
|
||||
const { red: red$2 } = require$$0;
|
||||
const spawn = require$$1;
|
||||
const { detect } = require$$2;
|
||||
const { red: red$2 } = require$$0
|
||||
const spawn = require$$1
|
||||
const { detect } = require$$2
|
||||
const PKG_OPTION = {
|
||||
npm: 'install',
|
||||
yarn: 'add',
|
||||
pnpm: 'add',
|
||||
};
|
||||
}
|
||||
|
||||
const getPkgManage = async () => {
|
||||
const pkg = await detect();
|
||||
const pkg = await detect()
|
||||
return pkg
|
||||
};
|
||||
}
|
||||
|
||||
const installDeps$1 = (pkgManager, packageList) => {
|
||||
const errorMessage = `Ocurrio un error instalando ${packageList}`;
|
||||
let childProcess = [];
|
||||
const errorMessage = `Ocurrio un error instalando ${packageList}`
|
||||
let childProcess = []
|
||||
|
||||
const installSingle = (pkgInstall) => () => {
|
||||
new Promise((resolve) => {
|
||||
@@ -35,112 +35,112 @@ const installDeps$1 = (pkgManager, packageList) => {
|
||||
{
|
||||
stdio: 'inherit',
|
||||
}
|
||||
);
|
||||
)
|
||||
|
||||
childProcess.on('error', (e) => {
|
||||
console.error(e);
|
||||
console.error(red$2(errorMessage));
|
||||
resolve();
|
||||
});
|
||||
console.error(e)
|
||||
console.error(red$2(errorMessage))
|
||||
resolve()
|
||||
})
|
||||
|
||||
childProcess.on('close', (code) => {
|
||||
if (code === 0) {
|
||||
resolve();
|
||||
resolve()
|
||||
} else {
|
||||
console.error(code);
|
||||
console.error(red$2(errorMessage));
|
||||
console.error(code)
|
||||
console.error(red$2(errorMessage))
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
resolve();
|
||||
resolve()
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
console.error(red$2(errorMessage));
|
||||
console.error(e)
|
||||
console.error(red$2(errorMessage))
|
||||
}
|
||||
});
|
||||
};
|
||||
})
|
||||
}
|
||||
|
||||
if (typeof packageList === 'string') {
|
||||
childProcess.push(installSingle(packageList));
|
||||
childProcess.push(installSingle(packageList))
|
||||
} else {
|
||||
for (const pkg of packageList) {
|
||||
childProcess.push(installSingle(pkg));
|
||||
childProcess.push(installSingle(pkg))
|
||||
}
|
||||
}
|
||||
|
||||
const runInstall = () => {
|
||||
return Promise.all(childProcess.map((i) => i()))
|
||||
};
|
||||
}
|
||||
return { runInstall }
|
||||
};
|
||||
}
|
||||
|
||||
var tool = { getPkgManage, installDeps: installDeps$1 };
|
||||
var tool = { getPkgManage, installDeps: installDeps$1 }
|
||||
|
||||
const { readFileSync, existsSync } = require$$0$1;
|
||||
const { join: join$2 } = require$$1$1;
|
||||
const { installDeps } = tool;
|
||||
const { readFileSync, existsSync } = require$$0$1
|
||||
const { join: join$2 } = require$$1$1
|
||||
const { installDeps } = tool
|
||||
|
||||
const PATHS_DIR = [
|
||||
join$2(__dirname, 'pkg-to-update.json'),
|
||||
join$2(__dirname, '..', 'pkg-to-update.json'),
|
||||
];
|
||||
]
|
||||
|
||||
const PKG_TO_UPDATE = () => {
|
||||
const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a));
|
||||
const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8');
|
||||
const dataParse = JSON.parse(data);
|
||||
const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`);
|
||||
const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a))
|
||||
const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8')
|
||||
const dataParse = JSON.parse(data)
|
||||
const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`)
|
||||
return pkg
|
||||
};
|
||||
}
|
||||
|
||||
const installAll$1 = async () => {
|
||||
// const pkg = await getPkgManage()
|
||||
installDeps('npm', PKG_TO_UPDATE()).runInstall();
|
||||
};
|
||||
installDeps('npm', PKG_TO_UPDATE()).runInstall()
|
||||
}
|
||||
|
||||
var install = { installAll: installAll$1 };
|
||||
var install = { installAll: installAll$1 }
|
||||
|
||||
const rimraf = require$$0$2;
|
||||
const { yellow: yellow$2 } = require$$0;
|
||||
const { join: join$1 } = require$$1$1;
|
||||
const rimraf = require$$0$2
|
||||
const { yellow: yellow$2 } = require$$0
|
||||
const { join: join$1 } = require$$1$1
|
||||
|
||||
const PATH_WW = [
|
||||
join$1(process.cwd(), '.wwebjs_auth'),
|
||||
join$1(process.cwd(), 'session.json'),
|
||||
];
|
||||
]
|
||||
|
||||
const cleanSession$1 = () => {
|
||||
const queue = [];
|
||||
const queue = []
|
||||
for (const PATH of PATH_WW) {
|
||||
console.log(yellow$2(`😬 Eliminando: ${PATH}`));
|
||||
queue.push(rimraf(PATH, () => Promise.resolve()));
|
||||
console.log(yellow$2(`😬 Eliminando: ${PATH}`))
|
||||
queue.push(rimraf(PATH, () => Promise.resolve()))
|
||||
}
|
||||
return Promise.all(queue)
|
||||
};
|
||||
}
|
||||
|
||||
var clean = { cleanSession: cleanSession$1 };
|
||||
var clean = { cleanSession: cleanSession$1 }
|
||||
|
||||
const { red: red$1, yellow: yellow$1, green, bgCyan } = require$$0;
|
||||
const { red: red$1, yellow: yellow$1, green, bgCyan } = require$$0
|
||||
|
||||
const checkNodeVersion$1 = () => {
|
||||
console.log(bgCyan('🚀 Revisando tu Node.js'));
|
||||
const version = process.version;
|
||||
const majorVersion = parseInt(version.replace('v', '').split('.').shift());
|
||||
console.log(bgCyan('🚀 Revisando tu Node.js'))
|
||||
const version = process.version
|
||||
const majorVersion = parseInt(version.replace('v', '').split('.').shift())
|
||||
if (majorVersion < 16) {
|
||||
console.error(
|
||||
red$1(
|
||||
`🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}`
|
||||
)
|
||||
);
|
||||
process.exit(1);
|
||||
)
|
||||
process.exit(1)
|
||||
}
|
||||
console.log(green(`Node.js combatible ${version}`));
|
||||
console.log(``);
|
||||
};
|
||||
console.log(green(`Node.js combatible ${version}`))
|
||||
console.log(``)
|
||||
}
|
||||
|
||||
const checkOs$1 = () => {
|
||||
console.log(bgCyan('🙂 Revisando tu Sistema Operativo'));
|
||||
const os = process.platform;
|
||||
console.log(bgCyan('🙂 Revisando tu Sistema Operativo'))
|
||||
const os = process.platform
|
||||
if (!os.includes('win32')) {
|
||||
const messages = [
|
||||
`El sistema operativo actual (${os}) posiblemente requiera`,
|
||||
@@ -149,18 +149,18 @@ const checkOs$1 = () => {
|
||||
`Recuerda pasar por el WIKI`,
|
||||
`🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalaci%C3%B3n`,
|
||||
``,
|
||||
];
|
||||
]
|
||||
|
||||
console.log(yellow$1(messages.join(' \n')));
|
||||
console.log(yellow$1(messages.join(' \n')))
|
||||
}
|
||||
|
||||
console.log(``);
|
||||
};
|
||||
console.log(``)
|
||||
}
|
||||
|
||||
var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 };
|
||||
var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 }
|
||||
|
||||
const { writeFile } = require$$0$1.promises;
|
||||
const { join } = require$$1$1;
|
||||
const { writeFile } = require$$0$1.promises
|
||||
const { join } = require$$1$1
|
||||
|
||||
/**
|
||||
* JSON_TEMPLATE = {[key:string]{...pros}}
|
||||
@@ -179,9 +179,9 @@ const JSON_TEMPLATE = {
|
||||
io: {
|
||||
vendor: '',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const PATH_CONFIG = join(process.cwd(), 'config.json');
|
||||
const PATH_CONFIG = join(process.cwd(), 'config.json')
|
||||
|
||||
const jsonConfig$1 = () => {
|
||||
return writeFile(
|
||||
@@ -189,16 +189,16 @@ const jsonConfig$1 = () => {
|
||||
JSON.stringify(JSON_TEMPLATE, null, 2),
|
||||
'utf-8'
|
||||
)
|
||||
};
|
||||
}
|
||||
|
||||
var configuration = { jsonConfig: jsonConfig$1 };
|
||||
var configuration = { jsonConfig: jsonConfig$1 }
|
||||
|
||||
const prompts = require$$0$3;
|
||||
const { yellow, red } = require$$0;
|
||||
const { installAll } = install;
|
||||
const { cleanSession } = clean;
|
||||
const { checkNodeVersion, checkOs } = check;
|
||||
const { jsonConfig } = configuration;
|
||||
const prompts = require$$0$3
|
||||
const { yellow, red } = require$$0
|
||||
const { installAll } = install
|
||||
const { cleanSession } = clean
|
||||
const { checkNodeVersion, checkOs } = check
|
||||
const { jsonConfig } = configuration
|
||||
|
||||
const startInteractive$1 = async () => {
|
||||
const questions = [
|
||||
@@ -239,49 +239,49 @@ const startInteractive$1 = async () => {
|
||||
hint: 'Espacio para selecionar',
|
||||
instructions: '↑/↓',
|
||||
},
|
||||
];
|
||||
]
|
||||
|
||||
console.clear();
|
||||
checkNodeVersion();
|
||||
checkOs();
|
||||
console.clear()
|
||||
checkNodeVersion()
|
||||
checkOs()
|
||||
const onCancel = () => {
|
||||
console.log('Proceso cancelado!');
|
||||
console.log('Proceso cancelado!')
|
||||
return true
|
||||
};
|
||||
const response = await prompts(questions, { onCancel });
|
||||
}
|
||||
const response = await prompts(questions, { onCancel })
|
||||
const {
|
||||
dependencies = '',
|
||||
cleanTmp = '',
|
||||
providerDb = [],
|
||||
providerWs = [],
|
||||
} = response;
|
||||
} = response
|
||||
/**
|
||||
* Question #1
|
||||
* @returns
|
||||
*/
|
||||
const installOrUdpateDep = async () => {
|
||||
const answer = dependencies.toLowerCase() || 'n';
|
||||
const answer = dependencies.toLowerCase() || 'n'
|
||||
if (answer.includes('n')) return true
|
||||
|
||||
if (answer.includes('y')) {
|
||||
await installAll();
|
||||
await installAll()
|
||||
return true
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Question #2
|
||||
* @returns
|
||||
*/
|
||||
const cleanAllSession = async () => {
|
||||
const answer = cleanTmp.toLowerCase() || 'n';
|
||||
const answer = cleanTmp.toLowerCase() || 'n'
|
||||
if (answer.includes('n')) return true
|
||||
|
||||
if (answer.includes('y')) {
|
||||
await cleanSession();
|
||||
await cleanSession()
|
||||
return true
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const vendorProvider = async () => {
|
||||
if (!providerWs.length) {
|
||||
@@ -289,40 +289,40 @@ const startInteractive$1 = async () => {
|
||||
red(
|
||||
`Debes de seleccionar una WS Provider. Tecla [Space] para seleccionar`
|
||||
)
|
||||
);
|
||||
process.exit(1);
|
||||
)
|
||||
process.exit(1)
|
||||
}
|
||||
console.log(yellow(`'Deberia crer una carpeta en root/provider'`));
|
||||
console.log(yellow(`'Deberia crer una carpeta en root/provider'`))
|
||||
return true
|
||||
};
|
||||
}
|
||||
|
||||
const dbProvider = async () => {
|
||||
const answer = providerDb;
|
||||
const answer = providerDb
|
||||
if (!providerDb.length) {
|
||||
console.log(
|
||||
red(
|
||||
`Debes de seleccionar una DB Provider. Tecla [Space] para seleccionar`
|
||||
)
|
||||
);
|
||||
process.exit(1);
|
||||
)
|
||||
process.exit(1)
|
||||
}
|
||||
if (answer === 'json') {
|
||||
console.log('Deberia crer una carpeta en root/data');
|
||||
console.log('Deberia crer una carpeta en root/data')
|
||||
return 1
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
await installOrUdpateDep();
|
||||
await cleanAllSession();
|
||||
await vendorProvider();
|
||||
await dbProvider();
|
||||
await jsonConfig();
|
||||
};
|
||||
await installOrUdpateDep()
|
||||
await cleanAllSession()
|
||||
await vendorProvider()
|
||||
await dbProvider()
|
||||
await jsonConfig()
|
||||
}
|
||||
|
||||
var interactive = { startInteractive: startInteractive$1 };
|
||||
var interactive = { startInteractive: startInteractive$1 }
|
||||
|
||||
const { startInteractive } = interactive;
|
||||
if (process.env.NODE_ENV === 'dev') startInteractive();
|
||||
var cli = { startInteractive };
|
||||
const { startInteractive } = interactive
|
||||
if (process.env.NODE_ENV === 'dev') startInteractive()
|
||||
var cli = { startInteractive }
|
||||
|
||||
module.exports = cli;
|
||||
module.exports = cli
|
||||
|
||||
@@ -4,15 +4,6 @@
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"cli:dev": "cross-env NODE_ENV=dev node ./index.js",
|
||||
"cli:rollup": "rollup index.js --config ./rollup-cli.config.js",
|
||||
"format:check": "prettier --check .",
|
||||
"format:write": "prettier --write .",
|
||||
"lint:check": "eslint .",
|
||||
"lint:fix": "eslint --fix .",
|
||||
"build:cli": "npm run format:write && npm run lint:fix && npm run cli:rollup"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC"
|
||||
|
||||
@@ -3,7 +3,7 @@ const commonjs = require('@rollup/plugin-commonjs')
|
||||
module.exports = {
|
||||
input: 'index.js',
|
||||
output: {
|
||||
file: 'lib/cli/bundle.cjs',
|
||||
file: 'lib/cli/bundle.cli.cjs',
|
||||
format: 'cjs',
|
||||
},
|
||||
plugins: [commonjs()],
|
||||
|
||||
32
packages/core/classes/bot.class.js
Normal file
32
packages/core/classes/bot.class.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const { EventEmitter } = require('node:events')
|
||||
|
||||
/**
|
||||
* Clase principal del BOT
|
||||
*/
|
||||
class BotClass extends EventEmitter {
|
||||
flowClass
|
||||
databaseClass
|
||||
providerClass
|
||||
constructor(_flow, _database, _provider) {
|
||||
super()
|
||||
this.flowClass = _flow
|
||||
this.databaseClass = _database
|
||||
this.providerClass = _provider
|
||||
|
||||
this.on('message', (ctxMessage) => this.handleOnMessage(ctxMessage))
|
||||
}
|
||||
|
||||
handleOnMessage = (ctxMessage) => {
|
||||
this.databaseClass.saveLog(ctxMessage)
|
||||
this.continue(ctxMessage.body)
|
||||
}
|
||||
|
||||
continue = (message, ref = false) => {
|
||||
const responde = this.flowClass.find(message, ref)
|
||||
if (responde) {
|
||||
this.providerClass.sendMessage(responde.answer)
|
||||
this.continue(null, responde.ref)
|
||||
}
|
||||
}
|
||||
}
|
||||
module.exports = BotClass
|
||||
2
packages/core/index.js
Normal file
2
packages/core/index.js
Normal file
@@ -0,0 +1,2 @@
|
||||
const BotClass = require('./classes/bot.class')
|
||||
module.exports = { instance: BotClass }
|
||||
21
packages/core/package.json
Normal file
21
packages/core/package.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "bot-core",
|
||||
"version": "0.0.1",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"core:dev": "node ./index.js",
|
||||
"core:rollup": "node ../../node_modules/.bin/rollup index.js --config ./rollup-cli.config.js",
|
||||
"format:check": "prettier --check .",
|
||||
"format:write": "prettier --write .",
|
||||
"lint:check": "eslint .",
|
||||
"lint:fix": "eslint --fix .",
|
||||
"test:core": "node ../../node_modules/uvu/bin.js tests",
|
||||
"build:core": "npm run format:write && npm run lint:fix && npm run io:rollup"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {}
|
||||
}
|
||||
10
packages/core/rollup-cli.config.js
Normal file
10
packages/core/rollup-cli.config.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const commonjs = require('@rollup/plugin-commonjs')
|
||||
|
||||
module.exports = {
|
||||
input: 'index.js',
|
||||
output: {
|
||||
file: 'lib/core/bundle.core.cjs',
|
||||
format: 'cjs',
|
||||
},
|
||||
plugins: [commonjs()],
|
||||
}
|
||||
32
packages/core/tests/bot.class.test.js
Normal file
32
packages/core/tests/bot.class.test.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const { test } = require('uvu')
|
||||
const assert = require('uvu/assert')
|
||||
const BotClass = require('../classes/bot.class')
|
||||
|
||||
class MockDB {
|
||||
saveLog = () => {}
|
||||
}
|
||||
|
||||
class MockProvider {
|
||||
sendMessage = () => {}
|
||||
}
|
||||
|
||||
class MockFlow {
|
||||
find = () => {}
|
||||
}
|
||||
|
||||
test(`BotClass emit ping`, () => {
|
||||
let messages = []
|
||||
|
||||
const botBasic = new BotClass(
|
||||
new MockFlow(),
|
||||
new MockDB(),
|
||||
new MockProvider()
|
||||
)
|
||||
|
||||
botBasic.on('message', (ctx) => messages.push(ctx))
|
||||
botBasic.emit('message', 'ping')
|
||||
|
||||
assert.is(messages.join(''), 'ping')
|
||||
})
|
||||
|
||||
test.run()
|
||||
5
packages/index.js
Normal file
5
packages/index.js
Normal file
@@ -0,0 +1,5 @@
|
||||
const inout = require('./io')
|
||||
const provider = require('./provider')
|
||||
const bot = require('./core')
|
||||
|
||||
module.exports = { inout, provider, bot }
|
||||
20
packages/io/classes/flow.class.js
Normal file
20
packages/io/classes/flow.class.js
Normal file
@@ -0,0 +1,20 @@
|
||||
class FlowClass {
|
||||
flow
|
||||
constructor(_flow) {
|
||||
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
|
||||
}
|
||||
ansRef = this.flow.find((n) => n.keyword === keyRef)
|
||||
if (ansRef) return ansRef
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = FlowClass
|
||||
@@ -1,4 +1,3 @@
|
||||
const { addKeyword, addAnswer } = require('./methods')
|
||||
module.exports = { addKeyword, addAnswer }
|
||||
|
||||
|
||||
const FlowClass = require('./classes/flow.class')
|
||||
module.exports = { addKeyword, addAnswer, instance: FlowClass }
|
||||
|
||||
@@ -4,16 +4,6 @@
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"io:dev": "node ./index.js",
|
||||
"io:rollup": "node ../../node_modules/.bin/rollup index.js --config ./rollup-cli.config.js",
|
||||
"format:check": "prettier --check .",
|
||||
"format:write": "prettier --write .",
|
||||
"lint:check": "eslint .",
|
||||
"lint:fix": "eslint --fix .",
|
||||
"test:io": "node ../../node_modules/uvu/bin.js tests",
|
||||
"build:io": "npm run format:write && npm run lint:fix && npm run io:rollup"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
|
||||
@@ -3,7 +3,7 @@ const commonjs = require('@rollup/plugin-commonjs')
|
||||
module.exports = {
|
||||
input: 'index.js',
|
||||
output: {
|
||||
file: 'lib/io/bundle.cjs',
|
||||
file: 'lib/io/bundle.io.cjs',
|
||||
format: 'cjs',
|
||||
},
|
||||
plugins: [commonjs()],
|
||||
|
||||
@@ -6,9 +6,8 @@ const { inout, provider, database } = require('@bot-whatsapp')
|
||||
|
||||
provider.start()
|
||||
provider.close()
|
||||
|
||||
```
|
||||
|
||||
- [ ] whatsapp-web.js _verificar update_
|
||||
- [ ] Meta _verificar tokens_
|
||||
- [ ] Twilio _verificar tokens_
|
||||
- [ ] whatsapp-web.js _verificar update_
|
||||
- [ ] Meta _verificar tokens_
|
||||
- [ ] Twilio _verificar tokens_
|
||||
|
||||
9
packages/provider/classes/provider.class.js
Normal file
9
packages/provider/classes/provider.class.js
Normal file
@@ -0,0 +1,9 @@
|
||||
class ProviderClass {
|
||||
constructor() {}
|
||||
|
||||
sendMessage = (message) => {
|
||||
return message
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ProviderClass
|
||||
2
packages/provider/index.js
Normal file
2
packages/provider/index.js
Normal file
@@ -0,0 +1,2 @@
|
||||
const ProviderClass = require('./classes/provider.class')
|
||||
module.exports = { instance: ProviderClass }
|
||||
10
packages/provider/rollup-cli.config.js
Normal file
10
packages/provider/rollup-cli.config.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const commonjs = require('@rollup/plugin-commonjs')
|
||||
|
||||
module.exports = {
|
||||
input: 'index.js',
|
||||
output: {
|
||||
file: 'lib/provider/bundle.provider.cjs',
|
||||
format: 'cjs',
|
||||
},
|
||||
plugins: [commonjs()],
|
||||
}
|
||||
10
packages/rollup-cli.config.js
Normal file
10
packages/rollup-cli.config.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const commonjs = require('@rollup/plugin-commonjs')
|
||||
|
||||
module.exports = {
|
||||
input: 'index.js',
|
||||
output: {
|
||||
file: 'lib/index.cjs',
|
||||
format: 'cjs',
|
||||
},
|
||||
plugins: [commonjs()],
|
||||
}
|
||||
Reference in New Issue
Block a user