// ==UserScript==
// @name AntiSpam *OLD*
// @description Insta-mutes spammers temporarily
// @include *://www.kongregate.com/games/*/*
// @version 0.0.1.20171113053427
// @namespace https://greasyfork.org/users/32649
// @downloadURL none
// ==/UserScript==
var interval = setInterval(test, 1000);
var holodeck, dialogue, chatWindow;
var people = new Object(), mutes = new Object(), muteable = false;
var whitelist = new Object(), pwhitelist = new Object();
var limit, time; loadFilter(); loadWhitelist();
function test() {
if(unsafeWindow.holodeck && unsafeWindow.holodeck._chat_window._active_room) {
clearInterval(interval);
run();
}
}
function run() {
holodeck = unsafeWindow.holodeck;
chatWindow = holodeck._chat_window;
chatWindow.e3ba407c69f1fb1d = chatWindow.joinedRoom;
chatWindow.joinedRoom = function(room) {
this.e3ba407c69f1fb1d(room);
muteable = true;
}
chatWindow.a2b2274f4b0e0a7d = chatWindow.leftRoom;
chatWindow.leftRoom = function(room) {
muteable = false;
this.a2b2274f4b0e0a7d(room);
}
chatWindow.c46229e5ce87be98 = chatWindow.receivedRoomMessage;
chatWindow.receivedRoomMessage = function(event) {
var sender = event.data.user.username;
if(isMuted(sender)) return;
this.c46229e5ce87be98(event);
registerMessage(sender);
}
holodeck.da2eb29e335e589a = holodeck.receivedPrivateMessage;
holodeck.receivedPrivateMessage = function(event) {
var sender = event.data.from;
if(isMuted(sender)) return;
this.da2eb29e335e589a(event);
registerMessage(sender);
}
unsafeWindow.antispam_unmute = function(user) {
if(mutes[user]) {
delete mutes[user];
tell(user+" has been unmuted.");
}
}
holodeck.addChatCommand("sasf", sasf);
holodeck.addChatCommand("dasm", dasm);
holodeck.addChatCommand("dasw", dasw);
holodeck.addChatCommand("aswu", aswu);
holodeck.addChatCommand("ascw", ascw);
setInterval(clearPeople, 900000);
}
function registerMessage(user) {
if(!people[user])
people[user] = [];
var currentTime = getTime();
people[user].push(currentTime);
while(true) {
if(people[user][0] && people[user][0]+time < currentTime) {
people[user].shift();
} else {
break;
}
}
if(people[user].length >= limit) {
if(whitelist[user]) return;
tell(user+" has been muted. (Cancel)");
mutes[user] = true;
}
}
function isMuted(user) {
return (mutes[user] == true);
}
function loadFilter() {
var stuff = GM_getValue("KongregateAntispamFilter", "4 3").split(" ");
limit = parseInt(stuff[0])
time = parseInt(stuff[1])*1000;
}
function saveFilter() {
try {
GM_setValue("KongregateAntispamFilter", String(limit+" "+(time/1000)));
} catch(e) {
tell("Error: the filter has been temporary updated, but could not be saved.");
}
}
function loadWhitelist() {
var list = GM_getValue("KongregateAntispamFilterWhitelist", "").split("|"), i;
for(i=0;i 2*time) {
delete people[i];
}
}
}