var _ = require('underscore')._; var api = function(dbot) { return { /** * Does the user have the correct access level to use the command? */ 'hasAccess': function(event, command, callback) { var accessNeeded = dbot.commands[command].access, allowedNicks, user = event.rUser; if(_.isUndefined(accessNeeded) || accessNeeded == null) { return callback(true); } else if(!_.isFunction(accessNeeded)) { if(_.has(dbot.access, accessNeeded)) { accessNeeded = dbot.access[accessNeeded]; } else { return callback(true); } } allowedNicks = accessNeeded(event); if(!_.include(allowedNicks, user.primaryNick) && !_.include(allowedNicks, user.currentNick)) { callback(false); } else { if(_.has(dbot.modules, 'nickserv') && this.config.useNickserv == true) { dbot.api.nickserv.auth(user.server, user.currentNick, function(result, primary) { if(result == true && primary == user.primaryNick) { callback(true); } else { callback(false); } }); } else { callback(true); } } }, /** * Apply Regex to event message, store result. Return false if it doesn't * apply. */ 'applyRegex': function(commandName, event) { var applies = false; event.message = event.message.substring(1); if(_.has(dbot.commands[commandName], 'regex')) { var cRegex = dbot.commands[commandName].regex; if(_.isArray(cRegex) && cRegex.length === 2) { var q = event.message.valMatch(cRegex[0], cRegex[1]); if(q) { applies = true; event.input = q; } } else { var q = event.message.match(cRegex); if(q) { applies = true; event.input = q; } } } else { applies = true; } return applies; } }; }; exports.fetch = function(dbot) { return api(dbot); };