Auto switch to chat for offline channels

Automaticaly switches to the chat view and closes the "Most Recent Video" and "Whatch now" popups when joining an offline channel.

// ==UserScript==
// @name         Auto switch to chat for offline channels
// @namespace    https://greasyforks.org/scripts?set=586259
// @version      1.4.1
// @description  Automaticaly switches to the chat view and closes the "Most Recent Video" and "Whatch now" popups when joining an offline channel.
// @author       Sonyo
// @match        http*://www.twitch.tv/*
// @grant        none
// @license      MIT
// ==/UserScript==


function delay(milliseconds) {
    return new Promise(resolve => {
        setTimeout(resolve, milliseconds);
    });
}

async function getElement(selector) {
    let element = document.querySelector(selector);
    let count = 0;
    while (element === null) {
        await delay(1000);
        element = document.querySelector(selector);
        count++;
        if (count > 15) {
            return null;
        }
    }
    return element;
}

void async function () {
    'use strict';

    let prevUrl = undefined;
    setInterval(async () => {
        const currUrl = window.location.href;
        if (currUrl != prevUrl) {
            if (currUrl.includes(prevUrl)) // User switching to About or other page
                return;
            setup();
            prevUrl = currUrl;
        }
    }, 1000);
}();

async function setup() {
    if (!location.pathname.includes('moderator')) {
        let button = await getElement('[data-a-target="channel-home-tab-Chat"]');
        if (button === null) // channel is online
            return;
        button.click();
    }

    button = await getElement(".player-overlay-background button");
    if (button === null) // no videos
        return;
    button.click();

    await delay(0);
    button = await getElement(".player-overlay-background button");
    button.click();
}
长期地址
遇到问题?请前往 GitHub 提 Issues。