SatsFaucet Auto Claim

Auto-click Faucet Claim when available.

// ==UserScript==
// @name         SatsFaucet Auto Claim
// @namespace    http://tampermonkey.net/
// @version      1.6
// @description  Auto-click Faucet Claim when available.
// @author       Rubystance
// @license      MIT
// @match        https://www.satsfaucet.com/app/dashboard*
// @match        https://www.satsfaucet.com/app/bounty*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function () {
    'use strict';

    const checkAndClickFaucetButton = () => {
        const faucetLink = [...document.querySelectorAll('a')].find(a =>
            a.href.includes("/app/bounty") &&
            a.textContent.includes("Faucet") &&
            a.innerText.includes("Claim")
        );

        if (faucetLink) {
            console.log("✅ Faucet Claim link found. Reloading page and clicking...");
            location.reload();
        } else {
            console.log("⏳ Faucet Claim not found yet. Retrying...");
            setTimeout(checkAndClickFaucetButton, 5000);
        }
    };

    const clickFaucetAfterReload = () => {
        const faucetLink = [...document.querySelectorAll('a')].find(a =>
            a.href.includes("/app/bounty") &&
            a.textContent.includes("Faucet") &&
            a.innerText.includes("Claim")
        );

        if (faucetLink) {
            console.log("✅ Clicking Faucet link...");
            faucetLink.click();
        } else {
            console.log("⏳ Waiting for Faucet link...");
            setTimeout(clickFaucetAfterReload, 1000);
        }
    };

    const clickFinalClaimButton = () => {
        const claimButton = [...document.querySelectorAll('button')].find(btn =>
            btn.innerText.trim() === "Claim"
        );

        if (claimButton) {
            console.log("✅ Clicking final 'Claim' button...");
            claimButton.click();
        } else {
            console.log("⏳ Waiting for final 'Claim' button...");
            setTimeout(clickFinalClaimButton, 1000);
        }
    };

    const currentPath = window.location.pathname;

    if (currentPath.includes("/dashboard")) {
        checkAndClickFaucetButton();

        setTimeout(clickFaucetAfterReload, 4000);
    } else if (currentPath.includes("/bounty")) {
        setTimeout(clickFinalClaimButton, 2000);
    }
})();