forked from GitHub/dbot
initial support for warnings without web component [#506]
This commit is contained in:
parent
051ea2ca28
commit
7d79d2330f
@ -8,7 +8,8 @@
|
|||||||
"password": "lolturtles",
|
"password": "lolturtles",
|
||||||
"channels": [
|
"channels": [
|
||||||
"#realitest"
|
"#realitest"
|
||||||
]
|
],
|
||||||
|
"admin_channel": "#realitest"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"admins": [ "batman" ],
|
"admins": [ "batman" ],
|
||||||
|
4
modules/warning/config.json
Normal file
4
modules/warning/config.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"dependencies": [ "report", "users", "web" ],
|
||||||
|
"dbKeys": [ "warnings" ]
|
||||||
|
}
|
43
modules/warning/pages.js
Normal file
43
modules/warning/pages.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
var _ = require('underscore')._;
|
||||||
|
|
||||||
|
var pages = function(dbot) {
|
||||||
|
return {
|
||||||
|
'/warnings': function(req, res) {
|
||||||
|
res.render('warnings_servers', {
|
||||||
|
'name': dbot.config.name,
|
||||||
|
'servers': _.keys(this.warnings)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
'/warnings/:server': function(req, res) {
|
||||||
|
var server = req.params.server;
|
||||||
|
|
||||||
|
if(_.has(this.warnings, server)) {
|
||||||
|
res.render('warnings_users', {
|
||||||
|
'name': dbot.config.name,
|
||||||
|
'users': _.keys(this.warnings[server])
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
res.render('error');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
'/warnings/:server/:user': function(req, res) {
|
||||||
|
var server = req.params.server,
|
||||||
|
user = req.params.user;
|
||||||
|
|
||||||
|
if(_.has(this.warnings, server) && _.has(this.warnings.server, user)) {
|
||||||
|
res.render('warnings', {
|
||||||
|
'name': dbot.config.name,
|
||||||
|
'warnings': this.warnings[server][user]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
res.render('error');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.fetch = function(dbot) {
|
||||||
|
return pages(dbot);
|
||||||
|
};
|
11
modules/warning/strings.json
Normal file
11
modules/warning/strings.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"no_warnings": {
|
||||||
|
"en": "No warnings found for {user}."
|
||||||
|
},
|
||||||
|
"warning_info": {
|
||||||
|
"en": "{user} has {num} warnings. More info can be found at {url}"
|
||||||
|
},
|
||||||
|
"warn_notify": {
|
||||||
|
"en": "Attention: {warner} has issued a warning to {warnee} for \"{reason}.\" More info can be found at {url}"
|
||||||
|
}
|
||||||
|
}
|
61
modules/warning/warning.js
Normal file
61
modules/warning/warning.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
var _ = require('underscore')._;
|
||||||
|
|
||||||
|
var warning = function(dbot) {
|
||||||
|
this.warnings = dbot.db.warnings;
|
||||||
|
|
||||||
|
this.commands = {
|
||||||
|
'~warn': function(event) {
|
||||||
|
var warner = event.user,
|
||||||
|
server = event.server,
|
||||||
|
warnee = dbot.api.users.resolveUser(server, event.input[1]),
|
||||||
|
reason = event.input[2],
|
||||||
|
adminChannel = dbot.config.servers[server].admin_channel;
|
||||||
|
|
||||||
|
// Store the warn
|
||||||
|
if(!_.has(this.warnings, server)) this.warnings[server] = {};
|
||||||
|
if(!_.has(this.warnings[server], warnee)) this.warnings[server][warnee] = [];
|
||||||
|
|
||||||
|
this.warnings[server][warnee].push({
|
||||||
|
'warner': warner,
|
||||||
|
'reason': reason,
|
||||||
|
'time': new Date().getTime()
|
||||||
|
});
|
||||||
|
|
||||||
|
// Notify interested parties
|
||||||
|
var notifyString = dbot.t('warn_notify', {
|
||||||
|
'warner': warner,
|
||||||
|
'warnee': warnee,
|
||||||
|
'reason': reason,
|
||||||
|
'url': dbot.api.web.getUrl('warnings/' + server + '/' + warnee)
|
||||||
|
});
|
||||||
|
if(!_.isUndefined(adminChannel)) {
|
||||||
|
adminChannel = event.channel.name;
|
||||||
|
}
|
||||||
|
dbot.api.report.notify(server, adminChannel, notifyString);
|
||||||
|
dbot.say(server, adminChannel, notifyString);
|
||||||
|
dbot.say(server, warnee, notifyString);
|
||||||
|
},
|
||||||
|
|
||||||
|
'~warnings': function(event) {
|
||||||
|
var warnee = event.params[1],
|
||||||
|
server = event.server;
|
||||||
|
|
||||||
|
if(_.has(this.warnings, server) && _.has(this.warnings[server], warnee)) {
|
||||||
|
event.reply(dbot.t('warning_info', {
|
||||||
|
'user': warnee,
|
||||||
|
'num': this.warnings[server][warnee].length,
|
||||||
|
'url': dbot.api.web.getUrl('warnings/' + server + '/' + warnee)
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
event.reply(dbot.t('no_warnings', { 'user': warnee }));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.commands['~warn'].regex = [/~warn ([^ ]+) (.+)/, 3];
|
||||||
|
this.commands['~warn'].access = 'moderator';
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.fetch = function(dbot) {
|
||||||
|
return new warning(dbot);
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user