alaula / Perculus Auto attendance

// ==UserScript==
// @name         Perculus Auto attendance
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Never click that damned button again
// @author       You
// @match        https://*.perculus6.com/app/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @grant        none
// @copyright 2023, alaula (https://openuserjs.org/users/alaula)
// @license MIT
// ==/UserScript==

function waitForElm(selector) {
    return new Promise(resolve => {
        if (document.querySelector(selector)) {
            return resolve(document.querySelector(selector));
        }

        const observer = new MutationObserver(mutations => {
            if (document.querySelector(selector)) {
                resolve(document.querySelector(selector));
                observer.disconnect();
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    });
}

while (true) {
    // wait for attendance button
    const elm = await waitForElm('button.response-button');
    //save it
    let clone = elm.parentElement.parentElement.cloneNode(3);
    //click attendance check
    elm.click();

    if(clone.querySelector("span.score")) {
        console.debug(clone.querySelector("span.score").textContent);
    }
}