mirror of https://github.com/calzoneman/sync.git
Continue refactoring
This commit is contained in:
parent
6e99990ef0
commit
0e95ef2aa4
|
@ -604,7 +604,7 @@ Channel.prototype.tryNameBan = function(actor, name) {
|
||||||
var notice = {
|
var notice = {
|
||||||
username: "[server]",
|
username: "[server]",
|
||||||
msg: actor.name + " banned " + name,
|
msg: actor.name + " banned " + name,
|
||||||
msgclass: "server-whisper",
|
meta: { addClass: "server-whisper" },
|
||||||
time: Date.now()
|
time: Date.now()
|
||||||
};
|
};
|
||||||
self.users.forEach(function(u) {
|
self.users.forEach(function(u) {
|
||||||
|
@ -716,7 +716,7 @@ Channel.prototype.tryIPBan = function(actor, name, range) {
|
||||||
username: "[server]",
|
username: "[server]",
|
||||||
msg: actor.name + " banned " + $util.maskIP(ip) +
|
msg: actor.name + " banned " + $util.maskIP(ip) +
|
||||||
" (" + name + ")",
|
" (" + name + ")",
|
||||||
msgclass: "server-whisper",
|
meta: { addClass: "server-whisper" },
|
||||||
time: Date.now()
|
time: Date.now()
|
||||||
};
|
};
|
||||||
self.users.forEach(function(u) {
|
self.users.forEach(function(u) {
|
||||||
|
@ -1133,7 +1133,7 @@ Channel.prototype.broadcastNewUser = function(user) {
|
||||||
var pkt = {
|
var pkt = {
|
||||||
username: "[server]",
|
username: "[server]",
|
||||||
msg: msg,
|
msg: msg,
|
||||||
msgclass: "server-whisper",
|
meta: { addClass: "server-whisper" },
|
||||||
time: Date.now()
|
time: Date.now()
|
||||||
};
|
};
|
||||||
self.sendAllWithRank(2, "joinMessage", pkt);
|
self.sendAllWithRank(2, "joinMessage", pkt);
|
||||||
|
@ -2209,6 +2209,15 @@ Channel.prototype.tryChat = function(user, data) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate meta
|
||||||
|
var meta = {};
|
||||||
|
if (user.rank >= 2) {
|
||||||
|
if ("modflair" in data.meta && data.meta.modflair === user.rank) {
|
||||||
|
meta.modflair = data.meta.modflair;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data.meta = meta;
|
||||||
|
|
||||||
var msg = data.msg;
|
var msg = data.msg;
|
||||||
if(msg.length > 240) {
|
if(msg.length > 240) {
|
||||||
msg = msg.substring(0, 240);
|
msg = msg.substring(0, 240);
|
||||||
|
@ -2300,7 +2309,8 @@ Channel.prototype.sendMessage = function (user, msg, meta, filter) {
|
||||||
if(this.chatbuffer.length > 15)
|
if(this.chatbuffer.length > 15)
|
||||||
this.chatbuffer.shift();
|
this.chatbuffer.shift();
|
||||||
var unescaped = sanitize(msg).entityDecode();
|
var unescaped = sanitize(msg).entityDecode();
|
||||||
this.logger.log("<" + user.name + "> " + unescaped);
|
this.logger.log("<" + user.name + (meta.addClass ? "." + meta.addclass : "")
|
||||||
|
+ "> " + unescaped);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ var Logger = require("./logger.js");
|
||||||
var Poll = require("./poll").Poll;
|
var Poll = require("./poll").Poll;
|
||||||
|
|
||||||
var handlers = {
|
var handlers = {
|
||||||
|
/* commands that send chat messages */
|
||||||
"me": function (chan, user, msg, meta) {
|
"me": function (chan, user, msg, meta) {
|
||||||
meta.addClass = "action";
|
meta.addClass = "action";
|
||||||
meta.action = true;
|
meta.action = true;
|
||||||
|
@ -29,9 +30,6 @@ var handlers = {
|
||||||
chan.sendMessage(user, msg, meta);
|
chan.sendMessage(user, msg, meta);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"afk": function (chan, user, msg, meta) {
|
|
||||||
user.setAFK(!user.meta.afk);
|
|
||||||
},
|
|
||||||
"a": function (chan, user, msg, meta) {
|
"a": function (chan, user, msg, meta) {
|
||||||
var superadminflair = {
|
var superadminflair = {
|
||||||
labelclass: "label-important",
|
labelclass: "label-important",
|
||||||
|
@ -55,33 +53,108 @@ var handlers = {
|
||||||
meta.forceShowName = true;
|
meta.forceShowName = true;
|
||||||
chan.sendMessage(user, cargs.join(" "), meta);
|
chan.sendMessage(user, cargs.join(" "), meta);
|
||||||
},
|
},
|
||||||
|
"poll": function (chan, user, msg, meta) {
|
||||||
|
handlePoll(chan, user, msg, false);
|
||||||
|
},
|
||||||
|
"hpoll": function (chan, user, msg, meta) {
|
||||||
|
handlePoll(chan, user, msg, true);
|
||||||
|
},
|
||||||
|
|
||||||
|
/* commands that do not send chat messages */
|
||||||
|
"afk": function (chan, user, msg, meta) {
|
||||||
|
user.setAFK(!user.meta.afk);
|
||||||
|
},
|
||||||
"mute": function (chan, user, msg, meta) {
|
"mute": function (chan, user, msg, meta) {
|
||||||
handleMute(chan, user, msg.split(" "));
|
handleMute(chan, user, msg.split(" "));
|
||||||
},
|
},
|
||||||
"smute": function (chan, user, msg, meta) {
|
"smute": function (chan, user, msg, meta) {
|
||||||
handleShadowMute(chan, user, msg.split(" "));
|
handleShadowMute(chan, user, msg.split(" "));
|
||||||
|
},
|
||||||
|
"unmute": function (chan, user, msg, meta) {
|
||||||
|
handleUnmute(chan, user, msg.split(" "));
|
||||||
|
},
|
||||||
|
"kick": function (chan, user, msg, meta) {
|
||||||
|
handleKick(chan, user, msg.split(" "));
|
||||||
|
},
|
||||||
|
"ban": function (chan, user, msg, meta) {
|
||||||
|
handleBan(chan, user, msg.split(" "));
|
||||||
|
},
|
||||||
|
"ipban": function (chan, user, msg, meta) {
|
||||||
|
handleIPBan(chan, user, msg.split(" "));
|
||||||
|
},
|
||||||
|
"unban": function (chan, user, msg, meta) {
|
||||||
|
handleUnban(chan, user, msg.split(" "));
|
||||||
|
},
|
||||||
|
"clear": function (chan, user, msg, meta) {
|
||||||
|
handleClear(chan, user);
|
||||||
|
},
|
||||||
|
"clean": function (chan, user, msg, meta) {
|
||||||
|
handleClean(chan, user, msg);
|
||||||
|
},
|
||||||
|
"cleantitle": function (chan, user, msg, meta) {
|
||||||
|
handleCleanTitle(chan, user, msg);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var handlerList = [];
|
var handlerList = [];
|
||||||
for (var key in handlers) {
|
for (var key in handlers) {
|
||||||
handlerList.push({
|
handlerList.push({
|
||||||
sub: key.length + 2,
|
|
||||||
re: new RegExp("^\\/" + key + "(?:\\s|$)"),
|
re: new RegExp("^\\/" + key + "(?:\\s|$)"),
|
||||||
fn: handlers[key]
|
fn: handlers[key]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle(chan, user, msg, meta) {
|
function handle(chan, user, msg, meta) {
|
||||||
|
// Special case
|
||||||
|
var m = msg.match(/^\/d(-?[0-9]*)(?:\s|$)(.*)/);
|
||||||
|
if (m) {
|
||||||
|
handleDrink(chan, user, m[1], m[2], meta);
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (var i = 0; i < handlerList.length; i++) {
|
for (var i = 0; i < handlerList.length; i++) {
|
||||||
var h = handlerList[i];
|
var h = handlerList[i];
|
||||||
if (msg.match(h.re)) {
|
if (msg.match(h.re)) {
|
||||||
h.fn(chan, user, msg.substring(h.sub), meta);
|
var rest;
|
||||||
|
if (msg.indexOf(" ") >= 0) {
|
||||||
|
rest = msg.substring(msg.indexOf(" ") + 1);
|
||||||
|
} else {
|
||||||
|
rest = "";
|
||||||
|
}
|
||||||
|
h.fn(chan, user, rest, meta);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleDrink(chan, user, count, msg, meta) {
|
||||||
|
if (!chan.hasPermission(user, "drink")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count === "") {
|
||||||
|
count = 1;
|
||||||
|
}
|
||||||
|
count = parseInt(count);
|
||||||
|
if (isNaN(count)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
meta.drink = true;
|
||||||
|
meta.forceShowName = true;
|
||||||
|
meta.addClass = "drink";
|
||||||
|
chan.drinks += count;
|
||||||
|
chan.broadcastDrinks();
|
||||||
|
if (count < 0 && msg.trim() === "") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg = msg + " drink!";
|
||||||
|
if (count !== 1) {
|
||||||
|
msg += " (x" + count + ")";
|
||||||
|
}
|
||||||
|
chan.sendMessage(user, msg, meta);
|
||||||
|
}
|
||||||
|
|
||||||
function handleOld(chan, user, msg, data) {
|
function handleOld(chan, user, msg, data) {
|
||||||
if(msg.indexOf("/me ") == 0)
|
if(msg.indexOf("/me ") == 0)
|
||||||
chan.sendMessage(user.name, msg.substring(4), "action", data);
|
chan.sendMessage(user.name, msg.substring(4), "action", data);
|
||||||
|
@ -207,7 +280,7 @@ function handleShadowMute(chan, user, args) {
|
||||||
var pkt = {
|
var pkt = {
|
||||||
username: "[server]",
|
username: "[server]",
|
||||||
msg: user.name + " shadow muted " + args[0],
|
msg: user.name + " shadow muted " + args[0],
|
||||||
msgclass: "server-whisper",
|
addClass: "server-whisper",
|
||||||
time: Date.now()
|
time: Date.now()
|
||||||
};
|
};
|
||||||
chan.users.forEach(function (u) {
|
chan.users.forEach(function (u) {
|
||||||
|
@ -343,6 +416,7 @@ function handlePoll(chan, user, msg, hidden) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
function handleDrink(chan, user, msg, data) {
|
function handleDrink(chan, user, msg, data) {
|
||||||
if(!chan.hasPermission(user, "drink")) {
|
if(!chan.hasPermission(user, "drink")) {
|
||||||
return;
|
return;
|
||||||
|
@ -366,6 +440,7 @@ function handleDrink(chan, user, msg, data) {
|
||||||
msg += " (x" + count + ")";
|
msg += " (x" + count + ")";
|
||||||
chan.sendMessage(user.name, msg, "drink", data);
|
chan.sendMessage(user.name, msg, "drink", data);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
function handleClear(chan, user) {
|
function handleClear(chan, user) {
|
||||||
if(user.rank < 2) {
|
if(user.rank < 2) {
|
||||||
|
|
|
@ -1454,6 +1454,10 @@ function formatChatMessage(data) {
|
||||||
LASTCHATNAME = data.username;
|
LASTCHATNAME = data.username;
|
||||||
LASTCHATTIME = data.time;
|
LASTCHATTIME = data.time;
|
||||||
var div = $("<div/>");
|
var div = $("<div/>");
|
||||||
|
if (data.meta.addClass === "drink") {
|
||||||
|
div.addClass("drink");
|
||||||
|
data.meta.addClass = "";
|
||||||
|
}
|
||||||
if (USEROPTS.show_timestamps) {
|
if (USEROPTS.show_timestamps) {
|
||||||
var time = $("<span/>").addClass("timestamp").appendTo(div);
|
var time = $("<span/>").addClass("timestamp").appendTo(div);
|
||||||
var timestamp = new Date(data.time).toTimeString().split(" ")[0];
|
var timestamp = new Date(data.time).toTimeString().split(" ")[0];
|
||||||
|
|
Loading…
Reference in New Issue