UNPKG

sparkbotadv

Version:

Spark features provided by bot

99 lines (80 loc) 3.06 kB
/** * @file Defines Search functions for Spark * @author guillain guillain@gmail.com * @license GPL-3.0 */ // The Flint mgr event exports.CrisisRoom = function (bot, trigger) { if (/help/i.test(trigger.args['1'])){ bot.say(trigger.args['0']+' [open|close|help]'); } else if (/open/i.test(trigger.args['1'])){ openCrisisRoom(bot,trigger); } else if (/close/i.test(trigger.args['1'])){ closeCrisisRoom(bot,trigger); } else { bot.say('I\'ve not understood your command for the Crisis Room'); } }; // The Flint event is expecting a function that has a bot, person, and id parameter. checkinCrisisRoom = function (eventBot, person, id) { // retrieve value of key 'crisisRoom'. When this is ran initially, this will return 'undefined'. var crisisRoom = eventBot.recall('crisisRoom'); // if room bot has crisisRoom.enabled... if(eventBot && eventBot.active && crisisRoom.enabled) { // wait 5 seconds, add person back, and let them know they can never leave! setTimeout(() => { var email = person.emails['0']; var name = person.displayName.split(' ')['0']; // reference first name // add person back to room... eventBot.add(email); // let person know where they ended up... eventBot.say('<@personEmail:%s|%s>, you can **check out any time you like**, but you can **never** leave!', email, name); }, 5000); // 5000 ms = 5 seconds } }; // Recall crisisRoom exports.recallCrisisRoom = function (bot) { // retrieve value of key 'crisisRoom'. When this is ran initially, this will return 'undefined'. var crisisRoom = bot.recall('crisisRoom'); // if enabled... if(crisisRoom && crisisRoom.enabled) { // resume event bot.on('personExits', checkinCrisisRoom); } return crisisRoom; }; openCrisisRoom = function (bot,trigger) { var crisisRoom = bot.recall('crisisRoom'); // if crisisRoom has not been initialized to bot memory... if(!crisisRoom) { // init key crisisRoom = bot.store('crisisRoom', {}); // store default value crisisRoom.enabled = false; } // if not enabled... if(!crisisRoom.enabled) { crisisRoom.enabled = true; // create event bot.on('personExits', checkinCrisisRoom); // announce crisisRoom is open bot.say('**Crisis Room** mode activated!'); } else { // announce crisisRoom is already open bot.say('**Crisis Room** mode is already activated!'); } }; closeCrisisRoom = function (bot,trigger) { // retrieve value of key 'crisisRoom'. When this is ran initially, this will return 'undefined'. var crisisRoom = bot.recall('crisisRoom'); if(crisisRoom && crisisRoom.enabled) { crisisRoom.enabled = false; // remove event (removeListener is an inherited function from EventEmitter) bot.removeListener('personExits', checkinCrisisRoom); // announce crisisRoom is closed bot.say('**Crisis Room** mode deactivated!'); } else { // announce crisisRoom is already closed bot.say('**Crisis Room** mode is already deactivated!'); } };