Twitch Plays Pokemon Chat Filter

Chat commands from the Twitch Plays Pokemon stream are filtered.

当前为 2017-06-08 提交的版本,查看 最新版本

// ==UserScript==
// @name        Twitch Plays Pokemon Chat Filter
// @description Chat commands from the Twitch Plays Pokemon stream are filtered.
// @namespace   http://userscripts.org/users/magmarfire
// @include     *twitch.tv/twitchplayspokemon
// @version     1.11.4
// @grant       none
// ==/UserScript==

// Changelog:
// v1.11.4: Added forgotten bag command
// v1.11.3: Added forgotten throw command
// v1.11.2: Added reuse command
// v1.11: Commands corresponding to Pokemon slots added.
// v1.10: New betting commands now filtered.
// v1.9: Commands for Anniversary Crystal added.
// v1.8: Betting commands updated for Smash 4 matches.
// v1.7: TPP Arena Anniversary commands added.
// v1.6: ZL/ZR buttons added for the Wii U.
// v1.5: TPP Arena move commands added.
// v1.4: 3DS Control Stick and D-pad added.
// v1.3: Betting commands now filtered.
// v1.2: Nintendo DS support added.
// v1.1: Added support for comma syntax (in Democracy mode).
// v1.0: Original script.

function CanShow(message, sender, myUsername) {
    var regex = /^((((c?d?(left|right|up|down)|start|select|wait|anarchy|democracy|run|poke|reuse|throw|bag|move|item|switch|p|a|b|l|r|x|y|z|\d|[ ])(\d|\+|,\s?)?)*)|(!bet \d* .*)|(!(move )?(a|b|c|d|-|\d))|!(balance|tokens)|!(match \d*,\d*,\d*\/\d*,\d*,\d* \d*)|!(slots? \d+)|(#bet(red|blue)\d+))$/i;
    
    return !regex.test(message.trim()) &&
        (sender !== "tppbankbot" || message.toLowerCase().indexOf(myUsername) > -1);
}

$(document).ready(function() {
    $("head").append("<style type='text/css'>.chat-line { display: none; }</style>");

    var myUsername = $("#you .username").text().toLowerCase();

    setInterval(function() {
        var messages = $(".chat-line");
        messages.each(function() {
            var message = $(".message", this).text();
            var sender = $(".from", this).text().toLowerCase();

            if (CanShow(message, sender, myUsername)) {
                $(this).show();
            }
        });
    }, 200);
});