3
0
mirror of https://github.com/reality/dbot.git synced 2025-02-17 14:01:04 +01:00

two space indent for log and karma, karma logging

This commit is contained in:
reality 2016-12-14 21:58:42 +00:00
parent ef86954025
commit a57b123fed
2 changed files with 188 additions and 185 deletions

View File

@ -5,147 +5,150 @@
var _ = require('underscore')._; var _ = require('underscore')._;
var karma = function(dbot) { var karma = function(dbot) {
this.lastKarma = {}; this.lastKarma = {};
this.internalAPI = { this.internalAPI = {
'getKarma': function(item, callback) { 'getKarma': function(item, callback) {
this.db.read('karma', item.toLowerCase(), callback); this.db.read('karma', item.toLowerCase(), callback);
}.bind(this), }.bind(this),
'setKarma': function(item, value, callback) { 'setKarma': function(item, value, callback) {
this.db.save('karma', item.toLowerCase(), { this.db.save('karma', item.toLowerCase(), {
'item': item.toLowerCase(), 'item': item.toLowerCase(),
'karma': value 'karma': value
}, callback); }, callback);
}.bind(this) }.bind(this)
}; };
this.commands = { this.commands = {
'karma': function(event) { 'karma': function(event) {
var item = event.params[1] || event.user; var item = event.params[1] || event.user;
this.internalAPI.getKarma(item, function(err, karma) { this.internalAPI.getKarma(item, function(err, karma) {
if(!err && karma) { if(!err && karma) {
karma = karma.karma; karma = karma.karma;
} else { } else {
karma = 0; karma = 0;
}
event.reply(dbot.t('karma', {
'item': item,
'karma': karma
}));
});
},
'setkarma': function(event) {
var item = event.params[1],
value = parseInt(event.params[2]);
this.internalAPI.setKarma(item, value, function(err, karma) {
event.reply(dbot.t('newkarma', {
'item': item,
'value': value
}));
});
},
'unkarmaiest': function(event) {
var karmas = {};
this.db.scan('karma', function(karma) {
if(karma && !_.isUndefined(karma.item)) {
karmas[karma.item] = karma.karma;
}
}.bind(this), function(err) {
var qSizes = _.chain(karmas)
.pairs()
.sortBy(function(category) { return category[1]; })
.first(10)
.value();
var qString = 'Unkarmaiest: ';
for(var i=0;i<qSizes.length;i++) {
qString += qSizes[i][0] + " (" + qSizes[i][1] + "), ";
}
event.reply(qString.slice(0, -2));
});
},
'karmaiest': function(event) {
var karmas = {};
this.db.scan('karma', function(karma) {
if(karma && !_.isUndefined(karma.item)) {
karmas[karma.item] = karma.karma;
}
}.bind(this), function(err) {
var qSizes = _.chain(karmas)
.pairs()
.sortBy(function(category) { return category[1]; })
.reverse()
.first(10)
.value();
var qString = 'Karmaiest: ';
for(var i=0;i<qSizes.length;i++) {
qString += qSizes[i][0] + " (" + qSizes[i][1] + "), ";
}
event.reply(qString.slice(0, -2));
});
} }
};
this.commands.setkarma.access = 'admin';
this.listener = function(event) { event.reply(dbot.t('karma', {
var match = event.message.match(/^(.+)(\+\+|\-\-)$/); 'item': item,
if(event.user !== dbot.config.name && match && match[1].length < 25) { 'karma': karma
match[1] = match[1].replace(/(\+|\-)/g,'').replace(/:/g,'').trim(); }));
});
},
if(_.has(this.lastKarma, event.rUser.id) && this.lastKarma[event.rUser.id] + 5000 > Date.now()) { 'setkarma': function(event) {
return event.reply('Try again in a few seconds : - )'); var item = event.params[1],
} else if(event.rUser.currentNick.toLowerCase() === match[1].toLowerCase() || event.rUser.primaryNick.toLowerCase() === match[1].toLowerCase()) { value = parseInt(event.params[2]);
return event.reply('Stop playing with yourself : - )');
} else if(event.channel == event.user) {
return event.reply('Don\'t be a Secretive Sally : - )');
}
this.internalAPI.getKarma(match[1], function(err, karma) { this.internalAPI.setKarma(item, value, function(err, karma) {
if(!karma) { event.reply(dbot.t('newkarma', {
karma = 0; 'item': item,
} else { 'value': value
karma = karma.karma; }));
} });
},
if(match[2] === '--') { 'unkarmaiest': function(event) {
karma -= 1; var karmas = {};
} else { this.db.scan('karma', function(karma) {
karma += 1; if(karma && !_.isUndefined(karma.item)) {
} karmas[karma.item] = karma.karma;
this.internalAPI.setKarma(match[1], karma, function(err, karma) {
this.lastKarma[event.rUser.id] = Date.now();
var pre;
if(karma.karma > 0) {
pre = '[\u00039karma\u000f]';
karma.karma = '\u00039 '+karma.karma+'\u000f';
} else if(karma.karma < 0) {
pre = '[\u00034karma\u000f]';
karma.karma = '\u00034 '+karma.karma+'\u000f';
} else {
pre = '[\u00036karma\u000f]';
karma.karma = '\u00036 '+karma.karma+'\u000f';
}
event.reply(pre + ' ' + dbot.t('newkarma', {
'item': match[1],
'value': karma.karma
}));
}.bind(this));
}.bind(this));
} }
}.bind(this); }.bind(this), function(err) {
this.on = 'PRIVMSG'; var qSizes = _.chain(karmas)
.pairs()
.sortBy(function(category) { return category[1]; })
.first(10)
.value();
var qString = 'Unkarmaiest: ';
for(var i=0;i<qSizes.length;i++) {
qString += qSizes[i][0] + " (" + qSizes[i][1] + "), ";
}
event.reply(qString.slice(0, -2));
});
},
'karmaiest': function(event) {
var karmas = {};
this.db.scan('karma', function(karma) {
if(karma && !_.isUndefined(karma.item)) {
karmas[karma.item] = karma.karma;
}
}.bind(this), function(err) {
var qSizes = _.chain(karmas)
.pairs()
.sortBy(function(category) { return category[1]; })
.reverse()
.first(10)
.value();
var qString = 'Karmaiest: ';
for(var i=0;i<qSizes.length;i++) {
qString += qSizes[i][0] + " (" + qSizes[i][1] + "), ";
}
event.reply(qString.slice(0, -2));
});
}
};
this.commands.setkarma.access = 'admin';
this.listener = function(event) {
var match = event.message.match(/^(.+)(\+\+|\-\-)$/);
if(event.user !== dbot.config.name && match && match[1].length < 25) {
match[1] = match[1].replace(/(\+|\-)/g,'').replace(/:/g,'').trim();
if(_.has(this.lastKarma, event.rUser.id) && this.lastKarma[event.rUser.id] + 5000 > Date.now()) {
return event.reply('Try again in a few seconds : - )');
} else if(event.rUser.currentNick.toLowerCase() === match[1].toLowerCase() || event.rUser.primaryNick.toLowerCase() === match[1].toLowerCase()) {
return event.reply('Stop playing with yourself : - )');
} else if(event.channel == event.user) {
return event.reply('Don\'t be a Secretive Sally : - )');
}
this.internalAPI.getKarma(match[1], function(err, karma) {
if(!karma) {
karma = 0;
} else {
karma = karma.karma;
}
if(match[2] === '--') {
karma -= 1;
} else {
karma += 1;
}
this.internalAPI.setKarma(match[1], karma, function(err, karma) {
this.lastKarma[event.rUser.id] = Date.now();
var pre;
if(karma.karma > 0) {
pre = '[\u00039karma\u000f]';
karma.karma = '\u00039 '+karma.karma+'\u000f';
} else if(karma.karma < 0) {
pre = '[\u00034karma\u000f]';
karma.karma = '\u00034 '+karma.karma+'\u000f';
} else {
pre = '[\u00036karma\u000f]';
karma.karma = '\u00036 '+karma.karma+'\u000f';
}
event.reply(pre + ' ' + dbot.t('newkarma', {
'item': match[1],
'value': karma.karma
}));
if(_.has(dbot.modules, 'log')) {
dbot.api.log.log(event.server, event.rUser.primaryNick, event.message);
}
}.bind(this));
}.bind(this));
}
}.bind(this);
this.on = 'PRIVMSG';
}; };
exports.fetch = function(dbot) { exports.fetch = function(dbot) {
return new karma(dbot); return new karma(dbot);
}; };

View File

@ -3,70 +3,70 @@
* Description: Log commands to a channel. * Description: Log commands to a channel.
*/ */
var _ = require('underscore')._, var _ = require('underscore')._,
process = require('process'); process = require('process');
var log = function(dbot) { var log = function(dbot) {
this.ignoredCommands = []; this.ignoredCommands = [];
this.api = { this.api = {
'log': function(server, user, message) { 'log': function(server, user, message) {
var logChannel = this.config.logChannel[server]; var logChannel = this.config.logChannel[server];
dbot.say(server, logChannel, dbot.t('log_message', { dbot.say(server, logChannel, dbot.t('log_message', {
'time': new Date().toUTCString(), 'time': new Date().toUTCString(),
'command': message, 'command': message,
"channel": 'nochan', "channel": 'nochan',
'user': user 'user': user
})); }));
}, },
'logError': function(server, err) { 'logError': function(server, err) {
var stack = err.stack.split('\n').slice(1, dbot.config.debugLevel + 1), var stack = err.stack.split('\n').slice(1, dbot.config.debugLevel + 1),
logChannel = this.config.logChannel[server], logChannel = this.config.logChannel[server],
time = new Date().toUTCString(); time = new Date().toUTCString();
dbot.say(server, logChannel, dbot.t('error_message', { dbot.say(server, logChannel, dbot.t('error_message', {
'time': time, 'time': time,
'error': 'Message: ' + err 'error': 'Message: ' + err
})); }));
_.each(stack, function(stackLine, index) { _.each(stack, function(stackLine, index) {
dbot.say(server, logChannel, dbot.t('error_message', { dbot.say(server, logChannel, dbot.t('error_message', {
'time': time, 'time': time,
'error': 'Stack[' + index + ']: ' + 'error': 'Stack[' + index + ']: ' +
stackLine.trim() stackLine.trim()
})); }));
}); });
}, },
'ignoreCommand': function(commandName) { 'ignoreCommand': function(commandName) {
this.ignoredCommands.push(commandName); this.ignoredCommands.push(commandName);
} }
}; };
this.onLoad = function() { this.onLoad = function() {
dbot.api.event.addHook('command', function(event) { dbot.api.event.addHook('command', function(event) {
var logChannel = this.config.logChannel[event.server]; var logChannel = this.config.logChannel[event.server];
channel = event.channel.name || 'PM'; channel = event.channel.name || 'PM';
if(logChannel && !_.include(this.ignoredCommands, event.message.split(' ')[0])) { if(logChannel && !_.include(this.ignoredCommands, event.message.split(' ')[0])) {
dbot.say(event.server, logChannel, dbot.t('log_message', { dbot.say(event.server, logChannel, dbot.t('log_message', {
'time': new Date().toUTCString(), 'time': new Date().toUTCString(),
'channel': channel, 'channel': channel,
'command': event.message, 'command': event.message,
'user': event.user 'user': event.user
})); }));
} }
}.bind(this)); }.bind(this));
process.on('uncaughtException', function(err) { process.on('uncaughtException', function(err) {
console.log(err); console.log(err);
_.each(this.config.logChannel, function(chan, server) { _.each(this.config.logChannel, function(chan, server) {
this.api.logError(server, err); this.api.logError(server, err);
}, this); }, this);
process.exit(1); process.exit(1);
}.bind(this)); }.bind(this));
}.bind(this); }.bind(this);
}; };
exports.fetch = function(dbot) { exports.fetch = function(dbot) {
return new log(dbot); return new log(dbot);
}; };