mirror of
https://github.com/reality/dbot.git
synced 2024-11-27 14:29:29 +01:00
karma
This commit is contained in:
parent
720740de58
commit
d97e4969f9
5
modules/karma/config.json
Normal file
5
modules/karma/config.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"announce": [ { "server": "tripsit", "name": "#dbot" } ],
|
||||
"dbKeys": [ "karma" ],
|
||||
"dbType": "redis"
|
||||
}
|
78
modules/karma/karma.js
Normal file
78
modules/karma/karma.js
Normal 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);
|
||||
};
|
8
modules/karma/strings.json
Normal file
8
modules/karma/strings.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"karma": {
|
||||
"en": "{item} has {karma} karma"
|
||||
},
|
||||
"newkarma": {
|
||||
"en": "{item} now has {value} karma"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user