Stake Reload Claimer

Automatically claims rewards on stake.bet VIP page

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Stake Reload Claimer
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Automatically claims rewards on stake.bet VIP page
// @author       Sylomex
// @match        https://stake.bet/fr?tab=reload&modal=vip
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    const CLAIM_BUTTON_SELECTOR = '[data-testid="vip-reward-claim-reload"]';
    const RELOAD_BUTTON_SELECTOR = '[data-test="claim-reload"]';
    const REFRESH_INTERVAL = 180000; // 30 seconds
    const CLAIM_DELAY = 5000; // 5 seconds
    const TARGET_URL = 'https://stake.bet/fr?tab=reload&modal=vip';

    function simulateClick(element) {
        // Simulation d'un clic avec différentes méthodes
        try {
            element.click();
            element.dispatchEvent(new MouseEvent('click', {
                view: window,
                bubbles: true,
                cancelable: true
            }));
        } catch (error) {
            console.log('Erreur lors du clic:', error);
        }
    }

    function checkAndClickClaimButton() {
        // Recherche du bouton "Réclamer" avec plusieurs sélecteurs possibles
        const claimButton = document.querySelector(CLAIM_BUTTON_SELECTOR) ||
                          document.querySelector('button[data-analytics="vip-reward-claim-reload"]');

        if (claimButton && !claimButton.disabled) {
            console.log('Bouton Réclamer trouvé, tentative de clic...');
            simulateClick(claimButton);
            console.log('Clic effectué sur le bouton Réclamer, attente de 10 secondes...');

            setTimeout(() => {
                // Recherche du bouton "Demander la recharge" avec plusieurs sélecteurs possibles
                const reloadButton = document.querySelector(RELOAD_BUTTON_SELECTOR) ||
                                   document.querySelector('button[data-analytics="claim-reload"]') ||
                                   document.querySelector('button[data-testid="password-reset-button"]');

                if (reloadButton) {
                    console.log('Tentative de clic sur le bouton Demander la recharge...');
                    simulateClick(reloadButton);
                    console.log('Clic effectué sur le bouton Demander la recharge');
                } else {
                    console.log('Bouton Demander la recharge non trouvé');
                }
            }, CLAIM_DELAY);

            return true;
        }

        return false;
    }

    function init() {
        console.log('Script démarré');

        // Vérification initiale
        if (!checkAndClickClaimButton()) {
            console.log('Pas de bouton Réclamer actif, rafraîchissement dans 30 secondes...');

            // Rafraîchissement périodique si aucun bouton n'est trouvé
            setTimeout(() => {
                window.location.href = TARGET_URL;
            }, REFRESH_INTERVAL);
        }

        // Configuration du MutationObserver pour surveiller les changements du DOM
        const observer = new MutationObserver((mutations) => {
            checkAndClickClaimButton();
        });

        // Démarrage de l'observation du document
        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    }

    // Attente du chargement complet de la page
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }
})();