// ==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]; } } }