57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
var ChannelModule = require("./module");
|
|
|
|
function DrinkModule(channel) {
|
|
ChannelModule.apply(this, arguments);
|
|
this.drinks = 0;
|
|
}
|
|
|
|
DrinkModule.prototype = Object.create(ChannelModule.prototype);
|
|
|
|
DrinkModule.prototype.onUserPostJoin = function (user) {
|
|
user.socket.emit("drinkCount", this.drinks);
|
|
};
|
|
|
|
DrinkModule.prototype.onUserChat = function (user, data, cb) {
|
|
var msg = data.msg;
|
|
var perms = this.channel.modules.permissions;
|
|
if (msg.match(/^\/d-?[0-9]*/) && perms.canCallDrink(user)) {
|
|
msg = msg.substring(2);
|
|
var m = msg.match(/^(-?[0-9]+)/);
|
|
var count;
|
|
if (m) {
|
|
count = parseInt(m[1]);
|
|
if (isNaN(count) || count < -10000 || count > 10000) {
|
|
return;
|
|
}
|
|
|
|
msg = msg.replace(m[1], "").trim();
|
|
if (msg || count > 0) {
|
|
msg += " drink! (x" + count + ")";
|
|
} else {
|
|
this.drinks += count;
|
|
this.channel.broadcastAll("drinkCount", this.drinks);
|
|
return cb(null, ChannelModule.DENY);
|
|
}
|
|
} else {
|
|
msg = msg.trim() + " drink!";
|
|
count = 1;
|
|
}
|
|
|
|
this.drinks += count;
|
|
this.channel.broadcastAll("drinkCount", this.drinks);
|
|
data.msg = msg;
|
|
data.meta.addClass = "drink";
|
|
data.meta.forceShowName = true;
|
|
cb(null, ChannelModule.PASSTHROUGH);
|
|
} else {
|
|
cb(null, ChannelModule.PASSTHROUGH);
|
|
}
|
|
};
|
|
|
|
DrinkModule.prototype.onMediaChange = function () {
|
|
this.drinks = 0;
|
|
this.channel.broadcastAll("drinkCount", 0);
|
|
};
|
|
|
|
module.exports = DrinkModule;
|