UNPKG

norrisbot

Version:

A Slack bot that kicks asses (roundhouse-kicks to be accurate...)

74 lines (56 loc) 2.14 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _client = require('@slack/client'); var _utils = require('./utils'); var _jokes = require('./data/jokes'); var _jokes2 = _interopRequireDefault(_jokes); var _pictures = require('./data/pictures'); var _pictures2 = _interopRequireDefault(_pictures); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var defaultOptions = { triggerOnWords: ['Chuck Norris', 'norrisbot'], specialCategories: ['nerdy'], messageColor: '#590088', usePictures: true, logger: console, rtmOptions: {} }; var norrisbot = function norrisbot(botToken) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var botId = void 0; var opt = Object.assign({}, defaultOptions, options); var rtm = new _client.RtmClient(botToken, opt.rtmOptions); var web = new _client.WebClient(botToken); var allowedJokes = (0, _utils.filterJokesByCategories)(_jokes2.default, opt.specialCategories); rtm.on(_client.RTM_EVENTS.MESSAGE, function (event) { if ((0, _utils.isMessage)(event) && (0, _utils.isMessageToChannel)(event) && !(0, _utils.isFromUser)(event, botId) && (0, _utils.messageContainsText)(event, opt.triggerOnWords)) { var joke = (0, _utils.pickRandom)(allowedJokes); var msgOptions = { as_user: true, attachments: [{ color: opt.messageColor, title: joke.text }] }; if (opt.usePictures) { msgOptions.attachments[0].image_url = (0, _utils.pickRandom)(_pictures2.default); } web.chat.postMessage(event.channel, '', msgOptions); opt.logger.info('Posting message to ' + event.channel, msgOptions); } }); rtm.on(_client.CLIENT_EVENTS.RTM.AUTHENTICATED, function (rtmStartData) { botId = rtmStartData.self.id; opt.logger.info('Logged in as ' + rtmStartData.self.name + ' (id: ' + botId + ') of team ' + rtmStartData.team.name); }); return { rtm: rtm, web: web, start: function start() { rtm.start(); } }; }; exports.default = norrisbot;