misc/greasemonkey/725984.js

110 lines
3.4 KiB
JavaScript
Raw Permalink Normal View History

// ==UserScript==
// @name 725984
// @version 1
// @grant none
// @include /^https?://([^\.]*\.)?twitch\.tv/(moderator/)?[^/]+$/
// @description auto claim active bonus. should probably keep this secret?
// ==/UserScript==
var reportToast = document.createElement("div");
reportToast.id = "snackbar";
var summaryObject = null;
var claimInterval = -1;
var summarySearch = setInterval(() => {
popToast("725984 is alive");
//reportToast.appendChild(document.createTextNode());
//document.body.appendChild(reportToast);
//reportToast.className = "show";
console.log("725984 survived most of init");
setInterval(function(){ reportToast.className = reportToast.className.replace("show", ""); }, 3000);
summaryObject = document.querySelector(".community-points-summary");
if(summaryObject !== null){
popToast("725984: online");
clearInterval(summarySearch);
claimInterval = setTimeout(claim, 1000 + Math.random() * 1000);
summaryObject.insertBefore(document.createTextNode("🟢"), summaryObject.firstChild)
} else {
console.log("725984: not ready");
popToast("725984: not ready");
}
}, 5000);
function claim(){
//look for claim. if found:
summaryObject.querySelectorAll("button").forEach((elem) => {
//console.log(Date());
let claimability = elem.querySelector(".claimable-bonus__icon");
if(claimability !== null){
console.log("725984: in motion");
if(Math.random() < 0.1){
popToast("725984 claims");
elem.click();
}else{
popToast("725984 abstains");
}
}
clearTimeout(claimInterval);
claimInterval = setTimeout(claim, 1000 + Math.random() * 1000);
});
}
function popToast(msg){
console.log(msg);
reportToast.innerHTML = "";
reportToast.appendChild(document.createTextNode(msg));
reportToast.className = "show";
}
let newStyle = document.createElement("style");
newStyle.setAttribute("type", "text/css");
newStyle.textContent = `
#snackbar {
visibility: hidden; /* Hidden by default. Visible on click */
min-width: 250px; /* Set a default minimum width */
margin-left: -125px; /* Divide value of min-width by 2 */
background-color: #333; /* Black background color */
color: #fff; /* White text color */
text-align: center; /* Centered text */
border-radius: 2px; /* Rounded borders */
padding: 16px; /* Padding */
position: fixed; /* Sit on top of the screen */
z-index: 1; /* Add a z-index if needed */
right: 30px; /* near the right; where you'll be looking (probably) */
bottom: 30px; /* 30px from the bottom */
}
/* Show the snackbar when clicking on a button (class added with JavaScript) */
#snackbar.show {
visibility: visible; /* Show the snackbar */
/* Add animation: Take 0.5 seconds to fade in and out the snackbar.
However, delay the fade out process for 2.5 seconds */
-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
/* Animations to fade the snackbar in and out */
@-webkit-keyframes fadein {
from {bottom: 0; opacity: 0;}
to {bottom: 30px; opacity: 1;}
}
@keyframes fadein {
from {bottom: 0; opacity: 0;}
to {bottom: 30px; opacity: 1;}
}
@-webkit-keyframes fadeout {
from {bottom: 30px; opacity: 1;}
to {bottom: 0; opacity: 0;}
}
@keyframes fadeout {
from {bottom: 30px; opacity: 1;}
to {bottom: 0; opacity: 0;}
}
`;
document.head.appendChild(newStyle);
document.body.appendChild(reportToast);