Skip to content

Instantly share code, notes, and snippets.

@zombozo12
Created August 26, 2025 18:29
Show Gist options
  • Select an option

  • Save zombozo12/4a658c9a171934707a07bf3251380de4 to your computer and use it in GitHub Desktop.

Select an option

Save zombozo12/4a658c9a171934707a07bf3251380de4 to your computer and use it in GitHub Desktop.
Youtube Live Streaming Chat Auto Reaction Clicker
(function(){
function deepQueryAll(selector) {
const results = [];
const stack = [document];
while (stack.length) {
const root = stack.pop();
try {
root.querySelectorAll && results.push(...root.querySelectorAll(selector));
} catch(_) {}
root.querySelectorAll?.("*")?.forEach(el => {
if (el.shadowRoot) stack.push(el.shadowRoot);
if (el.tagName === "IFRAME") {
try {
const doc = el.contentDocument || el.contentWindow?.document;
if (doc) stack.push(doc);
} catch(_) {}
}
});
}
return results;
}
function getReactionButtons() {
return deepQueryAll("yt-reaction-control-panel-button-view-model");
}
function startSpamming({ minDelay = 50, maxDelay = 100, max = Infinity } = {}) {
let clicks = 0;
let stopped = false;
function tick() {
if (stopped || clicks >= max) return;
const buttons = getReactionButtons();
if (!buttons.length) {
console.warn("❌ No reaction buttons found, retrying…");
} else {
const btn = buttons[Math.floor(Math.random() * buttons.length)];
try {
btn.sendReaction();
console.log(`✅ Reaction sent (${clicks+1}) →`, btn);
clicks++;
} catch (e) {
console.error("⚠️ Failed to send reaction", e);
}
}
const delay = minDelay + Math.floor(Math.random() * (maxDelay - minDelay + 1));
setTimeout(tick, delay);
}
tick();
return {
stop() { stopped = true; console.log("🛑 Auto-clicker stopped."); }
};
}
window.__ytReactor = startSpamming({
minDelay: 50,
maxDelay: 100,
max: Infinity
});
console.log("🚀 Randomized spamming 50–100ms across all reactions. Stop with: window.__ytReactor.stop()");
})();
window.__ytReactor.stop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment