ShortyScript

try to take over the world!

// ==UserScript==
// @name         ShortyScript
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  try to take over the world!
// @author       You
// @match        https://www.twitch.tv/shortychannel
// @icon         https://www.google.com/s2/favicons?sz=64&domain=twitch.tv
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_addStyle
// @grant        GM_registerMenuCommand
// ==/UserScript==

(function() {
    'use strict';

    const btnSelector = '#channel-points-reward-center-body > div > div > div.Layout-sc-1xcs6mc-0.iXbrq > div > button';
    const hydrateSelector = '#channel-points-reward-center-body > div > div > div:nth-child(8) > div > button';
    const throwSelector = '#channel-points-reward-center-body > div > div > div:nth-child(6) > div > button';
    const chatBtnSelector = '#live-page-chat > div > div > div.Layout-sc-1xcs6mc-0.wZVfj.chat-shell.chat-shell__expanded > div > div > section > div > seventv-container > div > div:nth-child(2) > div.Layout-sc-1xcs6mc-0.XTygj.chat-input__buttons-container > div.Layout-sc-1xcs6mc-0.hROlnu > div > div > div > div.Layout-sc-1xcs6mc-0.imLGzh > div.InjectLayout-sc-1i43xsx-0.dVOhMf > button';

    let throwInterval, hydrateInterval, chatInterval;
    let isThrowingEnabled = false;
    let isHydratingEnabled = false;

    const clickChatButton = () => {
        document.querySelector(chatBtnSelector)?.click();
    };

    const clickHydrateButton = () => {
        document.querySelector(hydrateSelector)?.click();
    };

    const clickThrowButton = () => {
        document.querySelector(throwSelector)?.click();
    };

    const clickPointsButton = () => {
        const btn = document.querySelector(btnSelector);
        if (btn && !btn.disabled) {
            btn.click();
        }
    };

    const startThrowing = () => {
        isThrowingEnabled = true;
        throwInterval = setInterval(() => {
            clickChatButton();
            clickThrowButton();
            clickPointsButton();
        }, 1000);
    }

    const stopThrowing = () => {
        isThrowingEnabled = false;
        clearInterval(throwInterval);
    }

    const startHydrating = () => {
        isHydratingEnabled = true;
        hydrateInterval = setInterval(() => {
            clickChatButton();
            clickHydrateButton();
            clickPointsButton();
        }, 65000);
    }

    const stopHydrating = () => {
        isHydratingEnabled = false;
        clearInterval(hydrateInterval);
    }

    GM_registerMenuCommand('Thrower', () => {
        if (isThrowingEnabled) {
            stopThrowing();
        } else {
            startThrowing();
        }
    });

    GM_registerMenuCommand('Hydrator', () => {
        if (isHydratingEnabled) {
            stopHydrating();
        } else {
            startHydrating();
        }
    });

    function isRaffle(t) {
        if (t.contains('The Multi-Raffle for') || t.contains('The Multi-Raffle has begun')) return true;
        return false
    }

    const chatObserver = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            if (mutation.type == 'childList') {
                if (mutation.target.matches('div.chat-scrollable-area__message-container')) {
                    mutation.addedNodes.forEach(n => {
                        var textns = n.querySelectorAll('span[class*="-fragment"]');
                        var textn = textns[0];
                        setTimeout(() => {
                            if (textn) {
                                var text = '';
                                textns.forEach(element => { text += element.innerText; });
                                if (isRaffle(text.trim())) {
                                    setTimeout(() => {
                                        console.log('raffle started')
                                        document.querySelector("#WYSIWGChatInputEditor_SkipChat > div > div > div > span > span > span").innerText = "!join"
                                        document.querySelector("#live-page-chat > div > div > div.Layout-sc-1xcs6mc-0.wZVfj.chat-shell.chat-shell__expanded > div > div > section > div > seventv-container > div > div:nth-child(2) > div.Layout-sc-1xcs6mc-0.XTygj.chat-input__buttons-container > div.Layout-sc-1xcs6mc-0.hOyRCN > div.Layout-sc-1xcs6mc-0.kaXoQh > div > button").click();
                                    }, 1000);
                                }
                            }
                        });
                    }, 0);
                }
            }
        })
    })

    GM_registerMenuCommand('AutoRaffle', () => {
        chatObserver.observe(document.documentElement, {
            attributes: true,
            childList: true,
            subtree: true
        })
    })
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址