twitchPlaysDarkFilterChat

A script to filter out the chat commands in Twitch Plays Dark Souls

Versione datata 26/08/2015. Vedi la nuova versione l'ultima versione.

// ==UserScript==
// @name       twitchPlaysDarkFilterChat
// @namespace   twitchPlaysDarkFilterChat
// @include     *.twitch.tv/twitchplaysdark
// @include     *.twitch.tv/twitchplaysdark/chat?popout=
// @version     0.95
// @description A script to filter out the chat commands in Twitch Plays Dark Souls
// ==/UserScript==
//
var filterActive = false;
var toBeFiltered= [
    "arl",
    "ar",
    "al",
    "d",
    "ard",
    "aru",
    "arr",
    "m",
    "e", 
    "bs",
    // hold
    "hold",
    "holdx2",
    "holdx3",
    "thold",
    "tholdx2",
    "tholdx3",
    // running
    "run",
    "runt",
    // flong
    "tflong",
    "tflongx2",
    "tflongx3",
    "tfshort",
    "tfshortx2",
    "tfshortx3",
    "flong",
    "flongx2",
    "flongx3",
    "fshort",
    "fshortx2",
    "fshortx3",
    // walking movement
    "tfx3",
    "tfrx3",
    "tflx3",
    "tbx3",
    "tbrx3",
    "tblx3",
    "tlx3",
    "trx3",
    "tfx2",
    "tfrx2",
    "tflx2",
    "tbx2",
    "tbrx2",
    "tblx2",
    "tlx2",
    "trx2",
    "tf",
    "tfr",
    "tfl",
    "tb",
    "tbr",
    "tbl",
    "tl",
    "tr",
    "fx3",
    "frx3",
    "flx3",
    "bx3",
    "brx3",
    "blx3",
    "lx3",
    "rx3",
    "fx2",
    "frx2",
    "flx2",
    "bx2",
    "brx2",
    "blx2",
    "lx2",
    "rx2",
    "f",
    "fr",
    "fl",
    "b",
    "br",
    "bl",
    "l",
    "r",
    // rolling movement
    "rf",
    "rb",
    "rl",
    "rr",
    "rfx2",
    "rbx2",
    "rlx2",
    "rrx2",
    "rfx3",
    "rbx3",
    "rlx3",
    "rrx3",
    "trf",
    "trb",
    "trl",
    "trr",
    "trfx2",
    "trbx2",
    "trlx2",
    "trrx2",
    "trfx3",
    "trbx3",
    "trlx3",
    "trrx3",
    // face buttons
    "u",
    "tu",
    "g",
    "d",
    "a",
    "ax2",
    "ax3",
    "ta",
    "tax2",
    "tax3",
    // D-pad
    "du",
    "dd",
    "dl",
    "dr",
    "lr",
    // kicks
    "kick",
    "k",
    "kx2",
    "kx3",
    "tk",
    "tkx2",
    "tkx3",
    // jump attacks
    "jumpattack",
    "ja",
    "jax2",
    "jax3",
    "tja",
    "tjax2",
    "tjax3",
    // shoulder buttons
    "tr1t",
    "tr2t",
    "tr1x2t",
    "tr1x3t",
    "tr2x2t",
    "tr2x3t",
    "r1t",
    "r2t",
    "r1x2t",
    "r2x2t",
    "r1x3t",
    "r2x3t",
    "tl1t",
    "tl2t",
    "tl1x2t",
    "tl1x3t",
    "tl2x2t",
    "tl2x3t",
    "l1t",
    "l2t",
    "l1x2t",
    "l2x2t",
    "l1x3t",
    "l2x3t",
    "tr1",
    "tr2",
    "tr1x2",
    "tr1x3",
    "tr2x2",
    "tr2x3",
    "r1",
    "r2",
    "r1x2",
    "r2x2",
    "r1x3",
    "r2x3",
    "tl1",
    "tl2",
    "tl1x2",
    "tl1x3",
    "tl2x2",
    "tl2x3",
    "l1",
    "l2",
    "l1x2",
    "l2x2",
    "l1x3",
    "l2x3",
    //
    "left",
    "right",
    "fwd",
    "back",
    "democracy",
    "order",
    "demo",
    "anarchy",
    "menubutton",
    "banmenu",
    "unbanmenu",
    "banm",
    "chaos",
    "unbanm",
    "delaydn",
    "delayup"
];
var chatParent = document.getElementsByClassName("chat-lines")[0];
var interval;

function filterChat(event){
    if(event.target.children == undefined)
    {
        return;
    }
    var message = event.target.children[0].children[5].innerHTML;
    message = message.toUpperCase().replace(/\s+/g, '');
    var compare;
    for(x=0;x<toBeFiltered.length;x++)
    {
        compare = toBeFiltered[x].toUpperCase().replace(/\s+/g, '').substr(0,message.length);
        
        if(message === compare){
            chatParent.removeChild(event.target);
            break;
        }
    }
}

function checkIfLoaded()
{	
	chatParent = document.getElementsByClassName("chat-lines")[0];
	try{chatParent.children}
	catch(err)
	{
	return;
	}
chatParent.addEventListener("DOMNodeInserted",filterChat);
window.clearInterval(interval);
}

interval = window.setInterval(checkIfLoaded,20);