UNPKG

pockybot

Version:

Spark bot that handles team recognition

138 lines (137 loc) 6.52 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 results_1 = require("./results"); const winners_1 = require("./winners"); const reset_1 = require("./reset"); const peg_1 = require("./peg"); const unpeg_1 = require("./unpeg"); const status_1 = require("./status"); const update_1 = require("./update"); const finish_1 = require("./finish"); 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 numberconfig_1 = require("./numberconfig"); const stringconfig_1 = require("./stringconfig"); const roleconfig_1 = require("./roleconfig"); const locationconfig_1 = require("./locationconfig"); const userlocation_1 = require("./userlocation"); const removeuser_1 = require("./removeuser"); const locationweight_1 = require("./locationweight"); const default_1 = require("./default"); const webex = require('webex/env'); const pg_1 = require("pg"); const utilities_1 = require("../utilities"); 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 db_location_1 = require("../database/db-location"); const winners_service_1 = require("../services/winners-service"); const results_service_1 = require("../services/results-service"); const pm_results_service_1 = require("../services/pm-results-service"); const format_results_service_1 = require("../services/format-results-service"); const category_results_service_1 = require("../services/category-results-service"); const peg_service_1 = require("../services/peg-service"); const get_user_location_service_1 = require("../services/get-user-location-service"); const set_user_location_service_1 = require("../services/set-user-location-service"); const delete_user_location_service_1 = require("../services/delete-user-location-service"); // 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 dbLocation = new db_location_1.default(queryHandler); const pockyDb = new pocky_db_1.default(queryHandler, dbUsers, utilities); const pegService = new peg_service_1.DefaultPegService(config, utilities, dbLocation); const categoryResultsService = new category_results_service_1.DefaultCategoryResultsService(); const winnersService = new winners_service_1.DefaultWinnersService(pockyDb, config, utilities, pegService); const formatResultsService = new format_results_service_1.DefaultFormatResultsService(config, categoryResultsService); const resultsService = new results_service_1.DefaultResultsService(pockyDb, formatResultsService, pegService, winnersService); const pmResultsService = new pm_results_service_1.DefaultPmResultsService(pockyDb, webex, utilities, pegService, resultsService); const getUserLocationService = new get_user_location_service_1.DefaultGetUserLocationService(dbLocation, dbUsers); const setUserLocationService = new set_user_location_service_1.DefaultSetUserLocationService(dbLocation, dbUsers); const deleteUserLocationService = new delete_user_location_service_1.DefaultDeleteUserLocationService(dbLocation); pockyDb.loadConfig(config); config.updateAll(); // Trigger instantiation const peg = new peg_1.default(webex, pockyDb, dbUsers, config); const unpeg = new unpeg_1.default(webex, dbUsers, utilities); const reset = new reset_1.default(pockyDb, config); const winners = new winners_1.default(winnersService, config); const results = new results_1.default(resultsService, config); const status = new status_1.default(webex, pockyDb, config, utilities); const update = new update_1.default(webex, dbUsers, config); const finish = new finish_1.default(winnersService, resultsService, pmResultsService, reset, config, webex); const welcome = new welcome_1.default(config); const keywords = new keywords_1.default(config); const numberConfig = new numberconfig_1.default(config); const stringConfig = new stringconfig_1.default(config); const roleConfig = new roleconfig_1.default(dbUsers, config); const help = new help_1.default(config); const ping = new ping_1.default(); const rotation = new rotation_1.default(config); const locationConfig = new locationconfig_1.default(dbLocation, config); const userLocation = new userlocation_1.default(config, getUserLocationService, setUserLocationService, deleteUserLocationService); const removeUser = new removeuser_1.default(config, dbUsers, dbLocation, pockyDb); const locationWeight = new locationweight_1.default(dbLocation, config); const defaultTrigger = new default_1.default(); const triggers = [ peg, welcome, help, ping, results, winners, reset, status, update, finish, unpeg, keywords, rotation, numberConfig, stringConfig, roleConfig, locationConfig, locationWeight, userLocation, removeUser, 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.isToTriggerOn(message)); if (responder) { logger_1.Logger.information(`[Index.default] Found a trigger: ${responder.constructor.name}`); return await responder.createMessage(message, room); } else { logger_1.Logger.information(`[Index.default] No trigger found.`); return null; } } catch (e) { logger_1.Logger.error(`[Index.default] Error selecting trigger: ${e.message}`); return { markdown: 'An error occurred in selecting the trigger.', }; } };