Quiz Interceptor

test

// ==UserScript==
// @name         Quiz Interceptor
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  test
// @match        *://quiz.com/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    console.log("Running :D");

    function showAnswers(answers) {
        if (!answers || answers.length === 0) {
            updateFloatingBox("");
            return;
        }
        console.log("Update box");
        updateFloatingBox(answers.join("\n"));
    }

    function updateFloatingBox(text) {
        let box = document.getElementById("answer-float-box");
        if (!box) {
            box = document.createElement("div");
            box.id = "answer-float-box";
            box.style.position = "fixed";
            box.style.bottom = "10px";
            box.style.right = "10px";
            box.style.padding = "8px 12px";
            box.style.background = "rgba(0,0,0,0.6)";
            box.style.color = "lime";
            box.style.fontSize = "9px";
            box.style.fontWeight = "bold";
            box.style.borderRadius = "6px";
            box.style.opacity = "0.1";
            box.style.transition = "opacity 0.3s";
            box.style.zIndex = 9999;
            box.style.pointerEvents = "auto";
            box.addEventListener("mouseenter", () => box.style.opacity = "0.5");
            box.addEventListener("mouseleave", () => box.style.opacity = "0.1");
            document.body.appendChild(box);
        }
        box.textContent = text;
    }

    const OldWorker = window.Worker;

    window.Worker = function(...args) {
        const worker = new OldWorker(...args);

        worker.addEventListener("message", (event) => {
            const d = event.data;
            if (Array.isArray(d) && d[0] === "onmessage") {
                try {
                    const payload = JSON.parse(d[2]?.data);

                    if (Array.isArray(payload) && payload[0] === "room/message") {
                        const answers = payload?.[1]?.message?.patch?.[0]?.value?.answers;
                        if (Array.isArray(answers)) {
                            const correct = answers.filter(a => a.isCorrect).map(a => a.text);
                            if (correct.length > 0) {
                                console.log("[Correct Answers]", correct);
                                showAnswers(correct);
                            }
                        }
                    }
                } catch(e) {}
            }
        });

        return worker;
    };

    window.Worker.prototype = OldWorker.prototype;
})();