diff --git a/modules/admin/README.md b/modules/admin/README.md new file mode 100644 index 0000000..0a0583c --- /dev/null +++ b/modules/admin/README.md @@ -0,0 +1,57 @@ +## Admin + +Administrator functionality. + +### Description + +Various administration functionality such as banning users, hot-reloading the +code and ordering him to talk. Note that commands added here are handled with +their own listener, rather than being part of the command logic which is handled +by the Command module. Functionality in this module can be slightly unsafe as +not everything is thoroughly sanity checked. + +### Commands + +#### join [#channel] +Join the given channel. + +#### part [#channel] +Leave the given channel. + +#### opme [#channel] +Gives the caller ops in a given channel if possible. If called without a +channel, it will attempt to give the caller ops in the current channel. + +#### greload +Perform a git pull, and then execute the 'reload' command. Saves a lot of time +updating! + +#### reload +Reload all of the modules currently in use by DBot. By using this, all module +functionality should be reloadable and replaceable without having to restart the +bot or interrupt the connection to the server. + +#### say [#channel] [message] +Have DBot post the given message in the given channel (uses the server from +which you are sending the message). You may replace channel with '@' to have him +post the message in the current channel. Channel may also be replaced with a +nick on the server. + +#### load [module] +Load a new module. This works by adding a module name to the roster and then +triggering a reload of all modules, at which point the new module is actually +loaded by the standard DBot process. + +#### unload [module] +Unload a currently loaded module. This removes the module, and then triggers a +reload of all modules. + +#### ban [user] [command] +Ban a user from using a command. Command may be replaced with '\*,' which will +ban a user from use of all commands. Users banned from all commands will still +be subject to module listeners. + +#### unban [user] [command] +Unban a user from using a given command. If a user was previously banned using +the '\*' wildcard, they may also be unbanned from such by replacing command with +an asterisk here as well. diff --git a/modules/admin/admin.js b/modules/admin/admin.js index a230c9f..1cc12f3 100644 --- a/modules/admin/admin.js +++ b/modules/admin/admin.js @@ -116,13 +116,6 @@ var admin = function(dbot) { } else { event.reply(dbot.t('unban_error', {'user': username})); } - }, - - // Lock quote category so quotes can't be removed - 'lock': function(event) { - var category = event.params[1]; - dbot.db.locks.push(category); - event.reply(dbot.t('qlock', {'category': category})); } }; diff --git a/modules/admin/config.json b/modules/admin/config.json index e1a07bb..1d1582a 100644 --- a/modules/admin/config.json +++ b/modules/admin/config.json @@ -1,3 +1,3 @@ { - "dbKeys": [ "bans", "locks" ] + "dbKeys": [ "bans" ] } diff --git a/modules/quotes/quotes.js b/modules/quotes/quotes.js index 7d8b1f3..7ece49c 100644 --- a/modules/quotes/quotes.js +++ b/modules/quotes/quotes.js @@ -157,17 +157,13 @@ var quotes = function(dbot) { if(rmAllowed == true || dbot.config.admins.include(event.user)) { var key = event.input[1].trim().toLowerCase(); if(quotes.hasOwnProperty(key)) { - if(!dbot.db.locks.include(key) || dbot.config.admins.include(event.user)) { - var quote = quotes[key].pop(); - if(quotes[key].length === 0) { - delete quotes[key]; - } - resetRemoveTimer(event, key, quote); - - event.reply(dbot.t('removed_from', {'quote': quote, 'category': key})); - } else { - event.reply(dbot.t('locked_category', {'category': q[1]})); + var quote = quotes[key].pop(); + if(quotes[key].length === 0) { + delete quotes[key]; } + resetRemoveTimer(event, key, quote); + + event.reply(dbot.t('removed_from', {'quote': quote, 'category': key})); } else { event.reply(dbot.t('no_quotes', {'category': q[1]})); } @@ -182,22 +178,18 @@ var quotes = function(dbot) { var quote = event.input[2]; if(quotes.hasOwnProperty(key)) { - if(!dbot.db.locks.include(key)) { - var category = quotes[key]; - var index = category.indexOf(quote); - if(index !== -1) { - category.splice(index, 1); - if(category.length === 0) { - delete quotes[key]; - } - resetRemoveTimer(event, key, quote); - - event.reply(dbot.t('removed_from', {'category': key, 'quote': quote})); - } else { - event.reply(dbot.t('q_not_exist_under', {'category': key, 'quote': quote})); + var category = quotes[key]; + var index = category.indexOf(quote); + if(index !== -1) { + category.splice(index, 1); + if(category.length === 0) { + delete quotes[key]; } + resetRemoveTimer(event, key, quote); + + event.reply(dbot.t('removed_from', {'category': key, 'quote': quote})); } else { - event.reply(dbot.t('locked_category', {'category': key})); + event.reply(dbot.t('q_not_exist_under', {'category': key, 'quote': quote})); } } else { event.reply(dbot.t('category_not_found', {'category': key}));