This commit is contained in:
Leifer Mendez
2022-11-08 21:41:16 +01:00
parent 2114800b84
commit 576092fc96
26 changed files with 408 additions and 801 deletions

View 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
View File

@@ -0,0 +1,2 @@
const BotClass = require('./classes/bot.class')
module.exports = { instance: BotClass }

View 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": {}
}

View 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()],
}

View 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()