Stake Reload Claimer

Automatically claims rewards on stake.bet VIP page

// ==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();
    }
})();