@intuitionrobotics/thunderstorm
Version:
74 lines • 3.63 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Slack_ServerApiError = exports.Slack_ServerApiError_Class = exports.SlackModule = exports.SlackModule_Class = void 0;
const ts_common_1 = require("@intuitionrobotics/ts-common");
const web_api_1 = require("@slack/web-api");
class SlackModule_Class extends ts_common_1.Module {
constructor() {
super("SlackModule");
this.messageMap = {};
}
init() {
if (!this.config.token)
return;
// throw new ImplementationMissingException('Missing config token for SlackModule. Please add it');
this.web = new web_api_1.WebClient(this.config.token, Object.assign({ rejectRateLimitedCalls: true }, this.config.slackConfig));
}
postMessage(slackMessage) {
return __awaiter(this, void 0, void 0, function* () {
const parameters = typeof slackMessage === 'string' ? {
text: slackMessage,
channel: this.config.defaultChannel
} : slackMessage;
const time = this.messageMap[parameters.text];
if (time && (0, ts_common_1.currentTimeMillies)() - time < (this.config.throttlingTime || ts_common_1.Minute))
return;
try {
return yield this.postMessageImpl(parameters);
}
catch (e) {
this.logError(`Error while sending a message to channel: ${parameters.channel}`, e);
}
});
}
postMessageImpl(message) {
return __awaiter(this, void 0, void 0, function* () {
const res = yield this.web.chat.postMessage(message);
this.messageMap[message.text] = (0, ts_common_1.currentTimeMillies)();
this.logDebug(`A message was posted to channel: ${message.channel} with message id ${res.ts} which contains the message ${message.text}`);
});
}
}
exports.SlackModule_Class = SlackModule_Class;
exports.SlackModule = new SlackModule_Class();
class Slack_ServerApiError_Class extends ts_common_1.Module {
constructor() {
super("Slack_ServerApiError");
this.setDefaultConfig({ exclude: [], minLevel: ts_common_1.ServerErrorSeverity.Info });
}
init() {
}
__processApplicationError(errorLevel, message) {
return __awaiter(this, void 0, void 0, function* () {
if (ts_common_1.ServerErrorSeverity_Ordinal.indexOf(errorLevel) < ts_common_1.ServerErrorSeverity_Ordinal.indexOf(this.config.minLevel))
return;
for (const key of this.config.exclude || []) {
if (message.includes(key))
return;
}
yield exports.SlackModule.postMessage(`\`\`\`${message}\`\`\``);
});
}
}
exports.Slack_ServerApiError_Class = Slack_ServerApiError_Class;
exports.Slack_ServerApiError = new Slack_ServerApiError_Class();
//# sourceMappingURL=SlackModule.js.map