This commit is contained in:
reality 2015-02-04 16:34:59 +00:00
parent 720740de58
commit d97e4969f9
3 changed files with 91 additions and 0 deletions

View File

@ -0,0 +1,5 @@
{
"announce": [ { "server": "tripsit", "name": "#dbot" } ],
"dbKeys": [ "karma" ],
"dbType": "redis"
}

78
modules/karma/karma.js Normal file
View File

@ -0,0 +1,78 @@
/**
* Module Name: Karma
* Description: Thanking, with Karma!
*/
var _ = require('underscore')._;
var karma = function(dbot) {
this.lastKarma = {};
this.internalAPI = {
'getKarma': function(item, callback) {
this.db.read('karma', item.toLowerCase(), callback);
}.bind(this),
'setKarma': function(item, value, callback) {
this.db.save('karma', item.toLowerCase(), value, callback);
}.bind(this)
};
this.commands = {
'karma': function(event) {
var item = event.params[1] || event.user;
this.internalAPI.getKarma(event.server, target, function(err, karma) {
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
}));
});
}
};
this.commands.setkarma.access = 'admin';
this.listener = function(event) {
var match = event.message.match(/^(.+)(\+\+|\-\-)$/);
if(match) {
if(_.has(this.lastKarma, event.rUser.id) && this.lastKarma[event.rUser.id] + 5000 > Date.now()) {
return event.reply('Try again in a few seconds : - )');
}
this.internalAPI.getKarma(match[1], function(err, karma) {
if(!karma) {
karma = 0;
}
if(match[2] === '--') {
karma -= 1;
} else {
karma += 1;
}
this.internalAPI.setKarma(match[1], karma, function(err, karma) {
this.lastKarma[event.rUser.id] = Date.now();
event.reply(dbot.t('newkarma', {
'item': match[1],
'value': karma
}));
}.bind(this));
}.bind(this));
}
}.bind(this);
this.on = 'PRIVMSG';
};
exports.fetch = function(dbot) {
return new karma(dbot);
};

View File

@ -0,0 +1,8 @@
{
"karma": {
"en": "{item} has {karma} karma"
},
"newkarma": {
"en": "{item} now has {value} karma"
}
}