merge with master, command uses nickserv auth in db [#421]

This commit is contained in:
reality 2013-04-24 20:45:20 +00:00
commit 9625f1d316
9 changed files with 106 additions and 58 deletions

View File

@ -5,22 +5,24 @@ var api = function(dbot) {
/**
* Does the user have the correct access level to use the command?
*/
'hasAccess': function(user, command) {
var access = true;
'hasAccess': function(server, user, command, callback) {
var accessNeeded = dbot.commands[command].access;
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;
if(accessNeeded == 'admin' || accessNeeded == 'moderator') {
if(!_.include(dbot.config[accessNeeded + 's'], user)) { // lol
callback(false);
} else {
if(_.has(dbot.modules, 'nickserv') && this.config.useNickserv == true) {
dbot.api.nickserv.auth(server, user, function(result) {
callback(result);
});
} else {
callback(true);
}
}
} else {
callback(true);
}
return access;
},
/**

View File

@ -5,9 +5,8 @@
* ignoring that command.
*/
var _ = require('underscore')._;
var command = function(dbot) {
this.dbot = dbot;
/**
* Run the appropriate command given the input.
*/
@ -21,40 +20,42 @@ var command = function(dbot) {
}
}
dbot.api.ignore.isUserIgnoring(event.server, event.user, commandName, function(isIgnoring) {
dbot.api.ignore.isUserBanned(event.server, event.user, commandName, function(isBanned) {
if(isBanned) {
event.reply(dbot.t('command_ban', {'user': event.user}));
} else if(!isIgnoring &&
this.api.hasAccess(event.user, commandName) &&
dbot.commands[commandName].disabled !== true) {
if(this.api.applyRegex(commandName, event)) {
try {
var command = dbot.commands[commandName];
var results = command.apply(dbot.modules[command.module], [event]);
if(_.has(command, 'hooks') && results !== false) {
_.each(command['hooks'], function(hook) {
hook.apply(hook.module, _.values(results));
}, this);
this.api.hasAccess(event.server, event.user, commandName, function(hasAccess) {
dbot.api.ignore.isUserIgnoring(event.server, event.user, commandName, function(isIgnoring) {
dbot.api.ignore.isUserBanned(event.server, event.user, commandName, function(isBanned) {
if(isBanned) {
event.reply(dbot.t('command_ban', {'user': event.user}));
} else if(!isIgnoring &&
hasAccess &&
dbot.commands[commandName].disabled !== true) {
if(this.api.applyRegex(commandName, event)) {
try {
var command = dbot.commands[commandName];
var results = command.apply(dbot.modules[command.module], [event]);
if(_.has(command, 'hooks') && results !== false) {
_.each(command['hooks'], function(hook) {
hook.apply(hook.module, _.values(results));
}, this);
}
} catch(err) {
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());
}
}
} catch(err) {
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());
}
}
dbot.save();
} else {
if(commandName !== '~') {
if(_.has(dbot.usage, commandName)) {
event.reply('Usage: ' + dbot.usage[commandName]);
} else {
event.reply(dbot.t('syntax_error'));
dbot.save();
} else {
if(commandName !== '~') {
if(_.has(dbot.usage, commandName)) {
event.reply('Usage: ' + dbot.usage[commandName]);
} else {
event.reply(dbot.t('syntax_error'));
}
}
}
}
}
}.bind(this));
}.bind(this));
}.bind(this));
}.bind(this);

View File

@ -1,5 +1,6 @@
{
"ignorable": false,
"help": "http://github.com/reality/depressionbot/blob/master/modules/command/README.md",
"dependencies": [ "ignore", "users" ]
"dependencies": [ "ignore", "users" ],
"useNickserv": false
}

View File

@ -97,6 +97,18 @@ p#revnum {
padding:10px;
margin-bottom:0px;
}
p#branch {
border-right:1px solid #ccc;
border-left:1px solid #ccc;
border-bottom:1px solid #ccc;
margin:auto;
display:inline-block;
padding:10px;
margin-top:0px;
border-bottom-left-radius:5px;
border-bottom-right-radius:5px;
}
h2 {
border-bottom: 1px solid #ccc;
border-top:1px solid #ccc;

15
public/project.js Normal file
View File

@ -0,0 +1,15 @@
$(document).ready(function() {
$.get("https://api.github.com/repos/#{repo}/pulls", function(data) {
if ($.parseJSON(data).length) { $("#pullreq").show();}
});
});
$(document).keypress(function(e) {
WebFontConfig={google:{families:["Ubuntu::latin"]}};(function(){var e=document.createElement("script");e.src=("https:"==document.location.protocol?"https":"http")+"://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js";e.type="text/javascript";e.async="true";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})()
$('body').css({
"background-image":"url('http://i.imgur.com/Yh8V2Oa.jpg')",
"font-family": "Ubuntu, \"Source Sans Pro\",sans-serif"
});
$('a').css("color","#DD4814");
$('#title').css("color","white");
$('#main').css("border-color","#420432");
});

View File

@ -223,3 +223,18 @@ div.imgwrap > img {
.thumbnail:hover > div.imgwrap > span.nicks {
display: inline;
}
/* footer */
#footer {
margin-top:5px;
margin-right:10px;
margin-left:10px;
}
#footer a {
float:right;
padding-left:2px;
padding-right:2px;
background-color:#f5f5f5;
border-radius:3px;
}

12
run.js
View File

@ -222,10 +222,14 @@ DBot.prototype.reloadModules = function() {
process.nextTick(function() {
_.each(moduleNames, function(name) {
var moduleDir = './modules/' + name + '/';
var rawModule = require(moduleDir + name);
var module = rawModule.fetch(this);
this.rawModules.push(rawModule);
try {
var moduleDir = './modules/' + name + '/';
var rawModule = require(moduleDir + name);
var module = rawModule.fetch(this);
this.rawModules.push(rawModule);
} catch(err) {
console.log(err);
}
module.name = name;
module.db = this.ddb.databanks[name];

View File

@ -14,6 +14,9 @@ html(lang='en')
a(href='/') #{name} web interface
div.container#main
block content
div#footer
a#project(href='/project') About
script(type="text/javascript", src="/bootstrap/js/bootstrap.min.js")
script(type="text/javascript", src="/d3/d3.v3.min.js")
script(type="text/javascript", src="/script.js")

View File

@ -7,14 +7,7 @@ html(lang='#{curr839}')
link(rel="stylesheet", type="text/css", href="/bootstrap/css/bootstrap.min.css")
link(rel='stylesheet', type='text/css', href='/styles.css')
link(rel="stylesheet", href="/project.css")
title #{pagetitle}
script
$(document).ready(function() {
$.get("https://api.github.com/repos/#{repo}/pulls", function(data) {
if ($.parseJSON(data).length) { $("#pullreq").show();}
});
});
script(src="../project.js")
body
div.container
div#page
@ -30,6 +23,8 @@ html(lang='#{curr839}')
#{revnum}
pre#gitdiff
#{diff}
p#branch
#{branch}
h3 #{milestonehead}
table#milestones.center
tr
@ -50,7 +45,7 @@ html(lang='#{curr839}')
print #{Math.round(wdth)+"%"}
td #{milestone.open_issues}
td #{milestone.closed_issues}
a(#href="https://github.com/"+repo+"/")
a(href="https://github.com/"+repo+"/")
#{propaganda}
h3 #{languagetranshead}
table#translations