Twitch known bot highlighter

Highlights all known bot accounts from twitchinsights.net when in moderator mode.

Versione datata 04/03/2023. Vedi la nuova versione l'ultima versione.

// ==UserScript==
// @name         Twitch known bot highlighter
// @namespace    sh1n-shark.github.io
// @version      1.1.1
// @description  Highlights all known bot accounts from twitchinsights.net when in moderator mode.
// @author       SH1N_shark
// @match        https://www.twitch.tv/moderator/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=twitch.tv
// @grant        GM.xmlHttpRequest
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    const INSIGHTS_API_URL = 'https://api.twitchinsights.net/v1/bots/all';
    function getBotUsers() {
        setTimeout(() => { //Let everything load for 1 second
            var userList = document.getElementById("chat-viewers-list-header-Users"); //get element containing list of current users
            if (userList){
                userList = userList.nextSibling;
                var users = [];
                for (let user of Array.from(userList.children)) users.push(user.firstChild.getAttribute("data-username")); //parsing html into an array of usernames
                var getBots = GM.xmlHttpRequest({ //fetching currently online bots from twitchinsights.net
                    url: INSIGHTS_API_URL,
                    method: "GET",
                    onload: function(response) {
                        var result = JSON.parse(response.response);
                        var bots = []
                        for (let rawBot of Array.from(result.bots)) { //parsing the response into an array of bot usernames
                            bots.push(rawBot[0])
                        }
                        var botUsers = users.filter(element => bots.includes(element)); //finding matching usernames between two arrays
                        for (var botUser of Array.from(botUsers)) {
                            document.querySelectorAll('[data-username="'+botUser+'"]')[0].style.backgroundColor = "#5c1616"; //adding red background to the every user in the list
                        }
                    }
                });
            } else {
                console.log("User list not found. Skipping...");
            }
        }, 1000);
    }

    function registerListeners() { //Registering event listeners
        var listOpenHandle = document.getElementsByClassName("mod-view-context-bar__handle"); //User list unfold button
        var refreshButton = document.querySelectorAll('[data-test-selector="chat-viewers__refresh"]'); //User list refresh button
        var detailsCloseButton = document.querySelectorAll('[data-a-target="user-details-close"]'); //User details close button
        setTimeout(() => {
            if (listOpenHandle[0]) {
                listOpenHandle[0].addEventListener('click',getBotUsers,false);
            }

            if (refreshButton[0]) {
                refreshButton[0].addEventListener('click',getBotUsers,false);
            }

            if (detailsCloseButton[0]) {
                detailsCloseButton[0].addEventListener('click',getBotUsers,false);
            }
        },300);
    }

    window.addEventListener('load', registerListeners, false); //Registering listeners on load
    window.addEventListener('load', getBotUsers, false); //Getting bot users on load in case if user list is already open
    window.addEventListener('click', registerListeners, false); //Updating listeners

})();
长期地址
遇到问题?请前往 GitHub 提 Issues,或加Q群1031348184

赞助商

Fishcpy

广告

Rainyun

注册一下就行

Rainyun

一年攒够 12 元