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