pockybot
Version:
Spark bot that handles team recognition
52 lines (51 loc) • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const trigger_1 = require("../../models/trigger");
const constants_1 = require("../../constants");
const logger_1 = require("../logger");
const database_1 = require("../../models/database");
const command_1 = require("../../models/command");
const xmlMessageParser_1 = require("../parsers/xmlMessageParser");
class Finish extends trigger_1.default {
constructor(winnersService, resultsService, pmResultsService, resetService, config, webex) {
super();
this.winnersService = winnersService;
this.resultsService = resultsService;
this.pmResultsService = pmResultsService;
this.reset = resetService;
this.config = config;
this.webex = webex;
}
isToTriggerOn(message) {
if (!(this.config.checkRole(message.personId, database_1.Role.Admin) || this.config.checkRole(message.personId, database_1.Role.Finish))) {
return false;
}
let parsedMessage = xmlMessageParser_1.default.parseNonPegMessage(message);
return parsedMessage.botId === constants_1.default.botId && parsedMessage.command.toLowerCase() === command_1.Command.Finish;
}
async createMessage(commandMessage, room) {
let results;
try {
results = await this.resultsService.returnResultsMarkdown();
logger_1.Logger.debug('[Finish.createMessage] Got results');
}
catch (error) {
logger_1.Logger.error(`[Finish.createMessage] Error returning results: ${error.message}`);
return { markdown: 'error returning results' };
}
this.webex.messages.create({
markdown: results,
roomId: room
});
try {
await this.pmResultsService.pmResults();
logger_1.Logger.information(`[Finish.createMessage] Finished sending PMs.`);
}
catch (error) {
logger_1.Logger.error(`[Finish.createMessage] Error PMing results: ${error.message}`);
return { markdown: `Error while trying to PM results` };
}
return undefined;
}
}
exports.default = Finish;