From 5419a664dc136ca352c71534d3a0dde8fad4829b Mon Sep 17 00:00:00 2001 From: reality Date: Mon, 14 Jan 2013 16:24:38 +0000 Subject: [PATCH] Much better! [#131] --- modules/command/api.js | 113 ++++++++++++++++++------------------ modules/command/command.js | 19 +++--- modules/command/commands.js | 28 +++++---- run.js | 2 +- 4 files changed, 84 insertions(+), 78 deletions(-) diff --git a/modules/command/api.js b/modules/command/api.js index b264efa..60509e4 100644 --- a/modules/command/api.js +++ b/modules/command/api.js @@ -1,68 +1,71 @@ var _ = require('underscore')._; -var api = { - 'isBanned': function(user, command) { - var banned = false; - if(_.has(this.dbot.db.bans, command)) { - if(_.include(this.dbot.db.bans[command], user) || _.include(this.dbot.db.bans['*'], user)) { - banned = true; +var api = function(dbot) { + return { + 'isBanned': function(user, command) { + var banned = false; + if(_.has(dbot.db.bans, command)) { + if(_.include(dbot.db.bans[command], user) || _.include(dbot.db.bans['*'], user)) { + banned = true; + } } - } - return banned; - }, + return banned; + }, - /** - * Does the user have the correct access level to use the command? - */ - 'hasAccess': function(user, command) { - var access = true; - var accessNeeded = this.dbot.commands[command].access; + /** + * Does the user have the correct access level to use the command? + */ + 'hasAccess': function(user, command) { + var access = true; + var accessNeeded = dbot.commands[command].access; - if(accessNeeded == 'admin') { - if(!_.include(this.dbot.config.admins, user)) { - access = false; + if(accessNeeded == 'admin') { + if(!_.include(dbot.config.admins, user)) { + access = false; + } + } else if(accessNeeded == 'moderator') { + if(!_.include(dbot.config.moderators, user) && + !_.include(dbot.config.admins, user)) { + access = false; + } } - } else if(accessNeeded == 'moderator') { - if(!_.include(this.dbot.config.moderators, user) && - !_.include(this.dbot.config.admins, user)) { - access = false; + + return access; + }, + + /** + * Is user ignoring command? + */ + 'isIgnoring': function(user, command) { + var module = dbot.commands[command].module; + var ignoring = false; + if(_.has(dbot.db.ignores, user) && _.include(dbot.db.ignores[user], module)) { + ignoring = true; } - } + return ignoring; + }, - return access; - }, - - /** - * Is user ignoring command? - */ - 'isIgnoring': function(user, command) { - var module = this.dbot.commands[command].module; - var ignoring = false; - if(_.has(this.dbot.db.ignores, user) && _.include(this.dbot.db.ignores[user], module)) { - ignoring = true; - } - return ignoring; - }, - - /** - * Apply Regex to event message, store result. Return false if it doesn't - * apply. - */ - 'applyRegex': function(commandName, event) { - var applies = false; - if(_.has(this.dbot.commands[commandName], 'regex')) { - var cRegex = this.dbot.commands[commandName].regex; - var q = event.message.valMatch(cRegex[0], cRegex[1]); - if(q) { + /** + * Apply Regex to event message, store result. Return false if it doesn't + * apply. + */ + 'applyRegex': function(commandName, event) { + var applies = false; + if(_.has(dbot.commands[commandName], 'regex')) { + var cRegex = dbot.commands[commandName].regex; + var q = event.message.valMatch(cRegex[0], cRegex[1]); + if(q) { + applies = true; + event.input = q; + } + } else { applies = true; - event.input = q; } - } else { - applies = true; + return applies; } - return applies; - } + }; }; -exports.fetch = api; - +exports.fetch = function(dbot) { + return api(dbot); +}; diff --git a/modules/command/command.js b/modules/command/command.js index fb8b2b2..c6690cf 100644 --- a/modules/command/command.js +++ b/modules/command/command.js @@ -14,35 +14,34 @@ var command = function(dbot) { * Run the appropriate command given the input. */ this.listener = function(event) { - console.log(Object.keys(this)); var commandName = event.params[0]; - if(!_.has(this.dbot.commands, commandName)) { + if(!_.has(dbot.commands, commandName)) { commandName = '~'; } if(this.api.isBanned(event.user, commandName)) { - event.reply(this.dbot.t('command_ban', {'user': event.user})); + event.reply(dbot.t('command_ban', {'user': event.user})); } else { if(!this.api.isIgnoring(event.user, commandName) && this.api.hasAccess(event.user, commandName) && - this.dbot.commands[commandName].disabled !== true) { + dbot.commands[commandName].disabled !== true) { if(this.api.applyRegex(commandName, event)) { try { - this.dbot.commands[commandName](event); + dbot.commands[commandName](event); } catch(err) { - if(this.dbot.config.debugMode == true) { + if(dbot.config.debugMode == true) { event.reply('- Error in ' + commandName + ':'); event.reply('- Message: ' + err); event.reply('- Top of stack: ' + err.stack.split('\n')[1].trim()); } } - this.dbot.save(); + dbot.save(); } else { if(commandName !== '~') { - if(_.has(this.dbot.usage, commandName)) { - event.reply('Usage: ' + this.dbot.usage[commandName]); + if(_.has(dbot.usage, commandName)) { + event.reply('Usage: ' + dbot.usage[commandName]); } else { - event.reply(this.dbot.t('syntax_error')); + event.reply(dbot.t('syntax_error')); } } } diff --git a/modules/command/commands.js b/modules/command/commands.js index 36861cc..96ac77a 100644 --- a/modules/command/commands.js +++ b/modules/command/commands.js @@ -1,15 +1,16 @@ var _ = require('underscore')._; -var commands = { +var commands = function(dbot) { + return { '~usage': function(event) { var commandName = event.params[1]; - if(_.has(this.dbot.usage, commandName)) { - event.reply(this.dbot.t('usage', { + if(_.has(dbot.usage, commandName)) { + event.reply(dbot.t('usage', { 'command': commandName, - 'usage': this.dbot.usage[commandName] + 'usage': dbot.usage[commandName] })); } else { - event.reply(this.dbot.t('no_usage_info', { + event.reply(dbot.t('no_usage_info', { 'command': commandName })); } @@ -17,13 +18,13 @@ var commands = { '~help': function(event) { var moduleName = event.params[1]; - if(!_.has(this.dbot.modules, moduleName)) { - var moduleName = this.dbot.commands[moduleName].module; + if(!_.has(dbot.modules, moduleName)) { + var moduleName = dbot.commands[moduleName].module; } - if(moduleName && _.has(this.dbot.config[moduleName], 'help')) { - var help = this.dbot.config[moduleName].help; - event.reply(this.dbot.t('help_link', { + if(moduleName && _.has(dbot.config[moduleName], 'help')) { + var help = dbot.config[moduleName].help; + event.reply(dbot.t('help_link', { 'module': moduleName, 'link': help })); @@ -31,9 +32,12 @@ var commands = { if(!moduleName) { moduleName = event.params[1]; } - event.reply(this.dbot.t('no_help', { 'module': moduleName })) + event.reply(dbot.t('no_help', { 'module': moduleName })) } } + }; }; -exports.fetch = commands; +exports.fetch = function(dbot) { + return commands(dbot); +}; diff --git a/run.js b/run.js index 8d33c85..fabfb67 100644 --- a/run.js +++ b/run.js @@ -181,7 +181,7 @@ DBot.prototype.reloadModules = function() { try { var propertyKey = require.resolve(moduleDir + property); if(propertyKey) delete require.cache[propertyKey]; - var propertyObj = require(moduleDir + property).fetch; + var propertyObj = require(moduleDir + property).fetch(this); } catch(err) { console.log(err.stack); return;