Bagi Auto Faucet

IDK

// ==UserScript==
// @name         Bagi Auto Faucet
// @namespace    https://tampermonkey.net/
// @version      1.0
// @description  IDK
// @author       Rubystance
// @license      MIT
// @match        https://bagi.co.in/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const delay = ms => new Promise(res => setTimeout(res, ms));

    function forceReload() {
        console.log("🔄 Forcing page reload (no confirmation popup)...");
        window.onbeforeunload = null;
        window.removeEventListener('beforeunload', () => {});
        location.reload();
    }

    async function waitForAnyCaptcha() {
        console.log("⏳ Waiting for CAPTCHA to be solved (hCaptcha, reCAPTCHA, or Turnstile)...");
        for (let i = 0; i < 60; i++) {
            const hcaptcha = document.querySelector('textarea[name="h-captcha-response"]');
            const recaptcha = document.querySelector('textarea.g-recaptcha-response');
            const turnstile = document.querySelector('textarea[name="cf-turnstile-response"]');

            if ((hcaptcha && hcaptcha.value.trim().length > 0) ||
                (recaptcha && recaptcha.value.trim().length > 0) ||
                (turnstile && turnstile.value.trim().length > 0)) {
                console.log("✅ CAPTCHA detected as solved.");
                return true;
            }
            await delay(2000);
        }
        return false;
    }

    async function forceClick(elem) {
        if (!elem) return;
        await delay(100);
        requestAnimationFrame(() => {
            console.log("🧩 Forcing click on:", elem);
            elem.click();
        });
    }

    async function waitForAndClickSubmitBtn() {
        console.log("🔍 Monitoring 'Solve Captcha!' button for activation...");
        return new Promise(resolve => {
            let attempts = 0;
            const maxAttempts = 30;
            let wasWaiting = false;

            const interval = setInterval(() => {
                const btn = document.querySelector('#submitBtn');
                if (btn) {
                    const btnText = btn.textContent.trim().toLowerCase();
                    const isDisabled = btn.disabled || btn.hasAttribute("disabled");

                    if (isDisabled && btnText.includes("waiting")) {
                        wasWaiting = true;
                        console.log("⏳ 'Solve Captcha' button is showing 'Waiting...'. Waiting...");
                    } else if (!isDisabled && btnText.includes("solve captcha")) {
                        console.log("✅ 'Solve Captcha' button is enabled! Clicking...");
                        clearInterval(interval);
                        forceClick(btn);
                        resolve(true);
                        return;
                    }
                }
                attempts++;
                if (attempts > maxAttempts) {
                    clearInterval(interval);
                    if (wasWaiting) {
                        console.log("❌ 'Solve Captcha' button was stuck on 'Waiting...'. Reloading...");
                        setTimeout(forceReload, 3000);
                        resolve(false);
                    } else {
                        console.log("❌ 'Solve Captcha' button did not activate in time. Reloading...");
                        setTimeout(forceReload, 3000);
                        resolve(false);
                    }
                }
            }, 1000);
        });
    }

    async function main() {
        const url = window.location.href;

        if (url.includes("dashboard.php")) {
            const claimLink = document.querySelector('a.button.is-link[href="faucet.php"]');
            if (claimLink) {
                console.log("➡️ Going to faucet.php...");
                claimLink.click();
                return;
            }
        }

        if (url.includes("faucet.php")) {
            const claimBtn = document.querySelector('button.button.is-warning[type="submit"]');
            if (claimBtn) {
                const btnText = claimBtn.textContent.trim().toLowerCase();
                if (btnText.includes("waiting") || claimBtn.disabled) {
                    console.log("⏳ 'Claim Now!' button is disabled. Reloading in 10s...");
                    setTimeout(forceReload, 10000);
                } else {
                    console.log("🟡 Clicking 'Claim Now!' button");
                    claimBtn.click();
                }
                return;
            }
        }

        if (url.includes("captha.php")) {
            const clicked = await waitForAndClickSubmitBtn();
            if (!clicked) return;

            const solved = await waitForAnyCaptcha();
            if (solved) {
                const finalBtn = document.querySelector('button.button.is-success[type="submit"][style*="width: 300px"]');
                if (finalBtn && !finalBtn.disabled) {
                    console.log("💰 Clicking final Claim button.");
                    finalBtn.click();
                    return;
                } else {
                    console.log("⚠️ Final Claim button not found or is disabled.");
                }
            } else {
                console.log("🔁 CAPTCHA not solved. Reloading...");
                setTimeout(forceReload, 3000);
            }
        }

        const homeBtn = document.querySelector('a.button.is-white[href="/"]');
        if (homeBtn) {
            console.log("🏠 Returning to HOME...");
            homeBtn.click();
            return;
        }

        console.log("⏳ No actions required. Reloading in 60s...");
        setTimeout(forceReload, 60000);
    }

    window.addEventListener('load', () => {
        setTimeout(main, 2000);
    });
})();