BCI Blooket Cheats Loader

Load cheats from GitHub and inject into Blooket WARNING YOUR BROWSER NEEDS TO HAVE CSP DISABLED TO DISABLE IT GO ON YT AND FIND A TUTORIAL

// ==UserScript==
// @name         BCI Blooket Cheats Loader
// @namespace    http://tampermonkey.net/
// @version      3.1 INFINITE LOOK
// @description  Load cheats from GitHub and inject into Blooket WARNING YOUR BROWSER NEEDS TO HAVE CSP DISABLED TO DISABLE IT GO ON YT AND FIND A TUTORIAL
// @author       Sea_Dev
// @match        *://*.blooket.com/*
// @icon         https://raw.githubusercontent.com/dereszewski/Scripts/refs/heads/main/PNGS/pobrane__11_-removebg-preview.ico
 // @license IDK
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    function injectScript(scriptUrl) {
        fetch(scriptUrl)
            .then(response => {
                if (!response.ok) {
                    throw new Error('Failed to fetch script: ' + response.statusText);
                }
                return response.text();
            })
            .then(scriptContent => {
                const scriptElement = document.createElement('script');
                scriptElement.textContent = scriptContent;
                document.body.appendChild(scriptElement);
                console.log('Script injected successfully.');
            })
            .catch(error => console.error('Error injecting script:', error));
    }

    function createPopup() {
        const existingPopup = document.getElementById('customPopup');
        if (existingPopup) return;

        const popup = document.createElement('div');
        popup.id = 'customPopup';
        popup.innerHTML = `
            <div id="popupContent">
                <p>Are you using a Phone or PC?</p>
                <button id="pcButton">PC</button>
                <button id="phoneButton">Phone</button>
                <button id="closePopup">Cancel</button>
            </div>
        `;
        document.body.appendChild(popup);

        const style = document.createElement('style');
        style.textContent = `
            #customPopup {
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) scale(0.7);
                background: linear-gradient(45deg, #6e7ef8, #77c1c3, #ff6ec7);
                padding: 20px;
                border-radius: 15px;
                box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
                text-align: center;
                color: white;
                font-size: 18px;
                font-weight: bold;
                opacity: 0;
                animation: fadeInScale 0.4s forwards;
                z-index: 99999;
            }
            #popupContent button {
                background: white;
                padding: 10px 20px;
                margin: 10px;
                border: none;
                border-radius: 10px;
                cursor: pointer;
                font-size: 16px;
                transition: all 0.3s ease;
            }
            #popupContent button:hover {
                transform: scale(1.1);
                box-shadow: 0 4px 12px rgba(255, 255, 255, 0.6);
            }
            @keyframes fadeInScale {
                from { opacity: 0; transform: translate(-50%, -50%) scale(0.7); }
                to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
            }
            @keyframes fadeOutScale {
                from { opacity: 1; transform: translate(-50%, -50%) scale(1); }
                to { opacity: 0; transform: translate(-50%, -50%) scale(0.7); }
            }
        `;
        document.head.appendChild(style);

        document.getElementById('pcButton').addEventListener('click', () => {
            injectScript('https://raw.githubusercontent.com/Blooket-Council/Blooket-Cheats/main/cheats/gui.min.js');
            closePopup();
        });

        document.getElementById('phoneButton').addEventListener('click', () => {
            injectScript('https://raw.githubusercontent.com/Blooket-Council/Blooket-Cheats/main/cheats/mobileGui.min.js');
            closePopup();
        });

        document.getElementById('closePopup').addEventListener('click', closePopup);
    }

    function closePopup() {
        const popup = document.getElementById('customPopup');
        if (popup) {
            popup.style.animation = 'fadeOutScale 0.3s forwards';
            setTimeout(() => popup.remove(), 300);
        }
    }

    function createReInjectButton() {
        const button = document.createElement('button');
        button.id = 'reInjectButton';
        button.textContent = 'Re-Inject';
        button.style.position = 'fixed';
        button.style.top = '20px';
        button.style.right = '20px';
        button.style.padding = '15px 30px';
        button.style.fontSize = '18px';
        button.style.fontWeight = 'bold';
        button.style.background = 'linear-gradient(45deg, #6e7ef8, #77c1c3, #ff6ec7)';
        button.style.color = 'white';
        button.style.border = 'none';
        button.style.borderRadius = '12px';
        button.style.cursor = 'pointer';
        button.style.zIndex = '9999';
        button.style.boxShadow = '0 4px 10px rgba(0, 0, 0, 0.3)';
        button.style.transition = 'all 0.3s ease';
        button.addEventListener('click', createPopup);
        document.body.appendChild(button);

        const clearButton = document.createElement('button');
        clearButton.textContent = 'Remove UI';
        clearButton.style.position = 'fixed';
        clearButton.style.top = '70px';
        clearButton.style.right = '20px';
        clearButton.style.padding = '15px 30px';
        clearButton.style.fontSize = '18px';
        clearButton.style.fontWeight = 'bold';
        clearButton.style.background = 'linear-gradient(45deg, #ff6ec7, #77c1c3, #6e7ef8)';
        clearButton.style.color = 'white';
        clearButton.style.border = 'none';
        clearButton.style.borderRadius = '12px';
        clearButton.style.cursor = 'pointer';
        clearButton.style.zIndex = '9999';
        clearButton.style.boxShadow = '0 4px 10px rgba(0, 0, 0, 0.3)';
        clearButton.style.transition = 'all 0.3s ease';
        clearButton.addEventListener('click', () => {
            closePopup();
            setTimeout(() => {
                document.getElementById('reInjectButton')?.remove();
                clearButton.remove();
            }, 300);
        });
        document.body.appendChild(clearButton);
    }

    function init() {
        createReInjectButton();
    }

    init();
})();