mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-19 20:19:15 +00:00
.
This commit is contained in:
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()
|
||||
Reference in New Issue
Block a user