UNPKG

pockybot

Version:

Spark bot that handles team recognition

74 lines (73 loc) 2.94 kB
"use strict"; 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 Update extends trigger_1.default { constructor(webexService, databaseService, config) { super(); this.webex = webexService; this.database = databaseService; this.config = config; } isToTriggerOn(message) { if (!(this.config.checkRole(message.personId, database_1.Role.Admin) || this.config.checkRole(message.personId, database_1.Role.Update))) { return false; } let parsedMessage = xmlMessageParser_1.default.parseNonPegMessage(message); return parsedMessage.botId === constants_1.default.botId && parsedMessage.command.toLowerCase() === command_1.Command.Update; } async createMessage() { let users; try { users = await this.database.getUsers(); } catch (error) { logger_1.Logger.error(`[Update.createMessage] Error in getting users: ${error.message}`); return { markdown: `Error occurred, some or all users may not have been updated.` }; } try { let usersUpdated = await Promise.all(users.map(async (user) => { let username = await this.getUsername(user.userid); let response = await this.database.updateUser(username, user.userid); if (response === 0) { return 0; } else { logger_1.Logger.error(`[Update.createMessage] User ${username}, ${user.userid} failed to update`); return 1; } })); if (usersUpdated.includes(1)) { return { markdown: 'Error occurred, some or all users may not have been updated' }; } return { markdown: `Users successfully updated.` }; } catch (error) { logger_1.Logger.error(`[Update.createMessage] Error mapping users into usernames: ${error.message}`); return { markdown: `Error occurred, some or all users may not have been updated.` }; } } async getUsername(personId) { try { const data = await this.webex.people.get(personId); return data.displayName; } catch (error) { logger_1.Logger.error(`[Update.getUsername] Error getting username for ${personId}: ${error.message}`); throw new Error('Error getting username'); } } } exports.default = Update;