mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 04:29:16 +00:00
extends conditional class
This commit is contained in:
@@ -1,19 +1,18 @@
|
||||
const { EventEmitter } = require('node:events')
|
||||
|
||||
/**
|
||||
* Clase principal del BOT
|
||||
*/
|
||||
class BotClass extends EventEmitter {
|
||||
class BotClass {
|
||||
flowClass
|
||||
databaseClass
|
||||
providerClass
|
||||
constructor(_flow, _database, _provider) {
|
||||
super()
|
||||
this.flowClass = _flow
|
||||
this.databaseClass = _database
|
||||
this.providerClass = _provider
|
||||
|
||||
this.on('message', (ctxMessage) => this.handleOnMessage(ctxMessage))
|
||||
this.providerClass.on('message', (ctxMessage) =>
|
||||
this.handleOnMessage(ctxMessage)
|
||||
)
|
||||
}
|
||||
|
||||
handleOnMessage = (ctxMessage) => {
|
||||
|
||||
@@ -1,2 +1,15 @@
|
||||
const BotClass = require('./classes/bot.class')
|
||||
module.exports = { instance: BotClass }
|
||||
|
||||
/**
|
||||
* Crear instancia de clase
|
||||
* @param {*} args
|
||||
* @returns
|
||||
*/
|
||||
const create = ({ flow, database, provider }) => {
|
||||
return Object.setPrototypeOf(
|
||||
new BotClass(flow, database, provider),
|
||||
provider
|
||||
)
|
||||
}
|
||||
|
||||
module.exports = { create }
|
||||
|
||||
9
packages/database/classes/database.class.js
Normal file
9
packages/database/classes/database.class.js
Normal file
@@ -0,0 +1,9 @@
|
||||
class DatabaseClass {
|
||||
constructor() {}
|
||||
|
||||
saveLog = (ctx) => {
|
||||
return ctx
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = DatabaseClass
|
||||
12
packages/database/index.js
Normal file
12
packages/database/index.js
Normal file
@@ -0,0 +1,12 @@
|
||||
const DatabaseClass = require('./classes/database.class')
|
||||
|
||||
/**
|
||||
* Crear instancia de clase
|
||||
* @param {*} args
|
||||
* @returns
|
||||
*/
|
||||
const create = (args) => {
|
||||
return new DatabaseClass(args)
|
||||
}
|
||||
|
||||
module.exports = { create }
|
||||
11
packages/database/package.json
Normal file
11
packages/database/package.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "@bot-whatsapp/database",
|
||||
"version": "0.0.1",
|
||||
"description": "Esto es el conector a mysql, pg, mongo",
|
||||
"main": "index.js",
|
||||
"private": true,
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {}
|
||||
}
|
||||
10
packages/database/rollup-cli.config.js
Normal file
10
packages/database/rollup-cli.config.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const commonjs = require('@rollup/plugin-commonjs')
|
||||
|
||||
module.exports = {
|
||||
input: 'index.js',
|
||||
output: {
|
||||
file: 'lib/database/bundle.database.cjs',
|
||||
format: 'cjs',
|
||||
},
|
||||
plugins: [commonjs()],
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
const inout = require('./io')
|
||||
const provider = require('./provider')
|
||||
const bot = require('./core')
|
||||
const botcore = require('./core')
|
||||
const database = require('./database')
|
||||
|
||||
module.exports = { inout, provider, bot }
|
||||
module.exports = { inout, provider, botcore, database }
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
const { addKeyword, addAnswer } = require('./methods')
|
||||
const FlowClass = require('./classes/flow.class')
|
||||
module.exports = { addKeyword, addAnswer, instance: FlowClass }
|
||||
|
||||
/**
|
||||
* Crear instancia de clase
|
||||
* @param {*} args
|
||||
* @returns
|
||||
*/
|
||||
const create = (args) => {
|
||||
return new FlowClass(args)
|
||||
}
|
||||
|
||||
module.exports = { addKeyword, addAnswer, create }
|
||||
|
||||
5
packages/provider/adapters/mock.js
Normal file
5
packages/provider/adapters/mock.js
Normal file
@@ -0,0 +1,5 @@
|
||||
const { EventEmitter } = require('node:events')
|
||||
|
||||
class MockProvider extends EventEmitter {}
|
||||
|
||||
module.exports = MockProvider
|
||||
1
packages/provider/adapters/twilio.js
Normal file
1
packages/provider/adapters/twilio.js
Normal file
@@ -0,0 +1 @@
|
||||
class TwilioProvider {}
|
||||
@@ -1,4 +1,8 @@
|
||||
class ProviderClass {
|
||||
/**
|
||||
* events: message | auth | auth_error | ...
|
||||
*
|
||||
*/
|
||||
constructor() {}
|
||||
|
||||
sendMessage = (message) => {
|
||||
|
||||
@@ -1,2 +1,22 @@
|
||||
const ProviderClass = require('./classes/provider.class')
|
||||
module.exports = { instance: ProviderClass }
|
||||
const TwilioProvider = require('./adapters/twilio')
|
||||
const MockProvider = require('./adapters/mock')
|
||||
|
||||
const prepareVendor = ({ vendor, credentials }) => {
|
||||
if (vendor === 'twilio') return new TwilioProvider(credentials)
|
||||
// if (vendor === 'meta') return new TwilioProvider(credentials)
|
||||
// if (vendor === 'wev') return new TwilioProvider(credentials)
|
||||
return new MockProvider()
|
||||
}
|
||||
|
||||
/**
|
||||
* Crear instancia de clase
|
||||
* @param {*} args
|
||||
* @returns
|
||||
*/
|
||||
const create = (args) => {
|
||||
const vendor = prepareVendor(args)
|
||||
return Object.setPrototypeOf(new ProviderClass(), vendor)
|
||||
}
|
||||
|
||||
module.exports = { create }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@bot-whatsapp/provider",
|
||||
"version": "0.0.1",
|
||||
"description": "",
|
||||
"description": "Esto es el conector a Twilio, Meta, etc...",
|
||||
"main": "index.js",
|
||||
"private": true,
|
||||
"keywords": [],
|
||||
|
||||
Reference in New Issue
Block a user