UNPKG

pockybot

Version:

Spark bot that handles team recognition

70 lines (69 loc) 2.69 kB
"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.', }; } };