pockybot
Version:
Spark bot that handles team recognition
70 lines (69 loc) • 2.69 kB
JavaScript
"use strict";
/* NOTE: Import all triggers here
to be use as factory.
This will allow responder to just import one file
and manage it all from one file.
*/
Object.defineProperty(exports, "__esModule", { value: true });
const logger_1 = require("../logger");
const status_1 = require("./status");
const welcome_1 = require("./welcome");
const help_1 = require("./help");
const ping_1 = require("./ping");
const keywords_1 = require("./keywords");
const rotation_1 = require("./rotation");
const default_1 = require("./default");
const webex = require("webex/env");
const pg_1 = require("pg");
const config_1 = require("../config");
const query_handler_1 = require("../database/query-handler");
const pocky_db_1 = require("../database/pocky-db");
const db_users_1 = require("../database/db-users");
const db_config_1 = require("../database/db-config");
const utilities_1 = require("../utilities");
// Service instantiation
const queryHandler = new query_handler_1.default(new pg_1.Client());
const dbConfig = new db_config_1.default(queryHandler);
const config = new config_1.default(dbConfig);
const utilities = new utilities_1.default(config);
const dbUsers = new db_users_1.default(webex, queryHandler);
const database = new pocky_db_1.default(queryHandler, dbUsers, utilities);
database.loadConfig(config);
config.updateAll();
// Trigger instantiation
const status = new status_1.default(webex, database, config, utilities);
const welcome = new welcome_1.default(config);
const keywords = new keywords_1.default(config);
const help = new help_1.default(config);
const ping = new ping_1.default();
const rotation = new rotation_1.default(config);
const defaultTrigger = new default_1.default();
const triggers = [
welcome,
help,
ping,
status,
keywords,
rotation,
defaultTrigger
];
/**
* Returns a response Object that allows to create a message.
* @param {string} message - message from room or user.
* @param {string} room - the id of the room in which the message was received.
* @return {SparkMessage} sparkMessage - use in conjunction with messages.create
* contains text or markdown field.
*/
exports.default = async (message, room) => {
try {
const responder = triggers.find(x => x.isToTriggerOnPM(message));
logger_1.Logger.information(`Found a direct trigger: ${responder.constructor.name}`);
return await responder.createMessage(message, room);
}
catch (e) {
logger_1.Logger.error(`Error selecting direct trigger:\n${e.message}`);
return {
markdown: 'An error occurred in selecting the trigger.',
};
}
};