Discord Platform Spoof + Toolbox

Switch platforms, highlight red users, and trigger full wipe with a slick UI.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Discord Platform Spoof + Toolbox
// @namespace    http://tampermonkey.net/
// @version      1.5.4
// @author       CheetoPuffsz23
// @description  Switch platforms, highlight red users, and trigger full wipe with a slick UI.
// @match        https://discord.com/channels/*
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_deleteValue
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    const platforms = {
        "Web": { "$os": "Windows", "$browser": "Chrome", "$device": "" },
        "Mobile": { "$os": "Android", "$browser": "Discord Android", "$device": "Discord Android" }
    };

    let selected = GM_getValue("discordSpoofPlatform", "Web");
    let uiContainer = null;
    let isVisible = false;

    const spoofedProps = () => platforms[selected];

    const originalSend = WebSocket.prototype.send;
    WebSocket.prototype.send = function (data) {
        try {
            if (typeof data === "string" && data.includes('"op":2')) {
                const parsed = JSON.parse(data);
                if (parsed?.op === 2 && parsed?.d?.properties) {
                    parsed.d.properties = spoofedProps();
                    console.log(`[Spoof] Applied "${selected}" spoof:`, parsed.d.properties);
                    data = JSON.stringify(parsed);
                }
            }
        } catch (err) {
            console.error("[Spoof] Failed to spoof IDENTIFY:", err);
        }
        return originalSend.call(this, data);
    };

    function highlightRedUsernames() {
        const observer = new MutationObserver(() => {
            Array.from(document.querySelectorAll('[class*="username"]')).forEach(el => {
                const name = el.textContent.toLowerCase();
                if (name.includes("admin") || name.includes("mod")) {
                    el.style.color = "#ff4d4d";
                }
            });
        });

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

    function toggleUsernameHighlight() {
        const style = document.getElementById("toolbox-username-style");
        if (style) style.remove();
        else {
            const css = document.createElement("style");
            css.id = "toolbox-username-style";
            css.textContent = `
                [class*='username'] { color: #ff5555 !important; }
            `;
            document.head.appendChild(css);
        }
    }

    function createDivider() {
        const div = document.createElement("div");
        div.style.cssText = "margin: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.1);";
        return div;
    }

    function createSubtleLabel(text) {
        const label = document.createElement("div");
        label.textContent = text;
        label.style.cssText = "margin-top: 4px; margin-bottom: 0.3px; font-size: 10px; color: #888; font-weight: 400; text-align: right;";
        return label;
    }
        function createLabel(text) {
        const label = document.createElement("div");
        label.textContent = text;
        label.style.cssText = "margin-top: 4px; font-size: 15px; color: #fff; font-weight: 600; text-align: center;";
        return label;
    }

    function createUI() {
        uiContainer = document.createElement("div");
        uiContainer.style.cssText = `
            position: fixed;
            top: 100px;
            left: 100px;
            width: 260px;
            background: rgba(30, 30, 40, 0.65);
            backdrop-filter: blur(10px);
            border-radius: 12px;
            box-shadow: 0 0 15px rgba(0,0,0,0.5);
            color: #fff;
            font-family: 'Segoe UI', sans-serif;
            font-size: 14px;
            z-index: 999999;
            user-select: none;
        `;

        const header = document.createElement("div");
        header.textContent = "🛠️ Discord Toolbox";
        header.style.cssText = `
            padding: 10px 12px;
            font-weight: bold;
            background: rgba(0,0,0,0.2);
            border-bottom: 1px solid rgba(255,255,255,0.1);
            border-radius: 12px 12px 0 0;
            cursor: move;
        `;
        uiContainer.appendChild(header);

        const body = document.createElement("div");
        body.style.padding = "12px";

       const inputStyle = `
           width: 100%;
           padding: 8px;
           border-radius: 6px;
           background: rgba(50,50,60,0.9);
           color: #fff;
           border: 1px solid rgba(0,0,0,0.3);
           margin: 8px 0 2px 0;
           box-sizing: border-box;
         `;
        const buttonStyle = `
            margin-top: 8px;
            width: 100%;
            padding: 8px;
            border-radius: 6px;
            background: rgba(60, 60, 70, 0.9);
            color: #fff;
            border: 1px solid rgba(0,0,0,0.3);
            cursor: pointer;
        `;

        const select = document.createElement("select");
        select.style.cssText = inputStyle;

        Object.keys(platforms).forEach(key => {
            const option = document.createElement("option");
            option.value = key;
            option.textContent = key;
            if (key === selected) option.selected = true;
            select.append(option);
        });

        select.onchange = () => {
            selected = select.value;
            GM_setValue("discordSpoofPlatform", selected);
            alert(`✅ Spoofed as "${selected}". Click Reconnect to apply.`);
        };

        const webhookInput = document.createElement("input");
        webhookInput.placeholder = "https://discord.com/api/webhooks/...";
        webhookInput.style.cssText = inputStyle;

        const reconnectBtn = document.createElement("button");
        reconnectBtn.textContent = "🔄 Reconnect";
        reconnectBtn.style.cssText = buttonStyle;
        reconnectBtn.onclick = () => {
            alert("📡 Reloading to reconnect...");
            window.location.reload();
        };

        const usernameColorToggle = document.createElement("button");
        usernameColorToggle.textContent = "🎨 Toggle Red Usernames";
        usernameColorToggle.style.cssText = buttonStyle;
        usernameColorToggle.onclick = toggleUsernameHighlight;

        const deleteWebhookBtn = document.createElement("button");
        deleteWebhookBtn.textContent = "🚫 Delete Webhook";
        deleteWebhookBtn.style.cssText = buttonStyle;
        deleteWebhookBtn.onclick = async () => {
            const url = webhookInput.value.trim();
            if (!url.startsWith("https://discord.com/api/webhooks/")) return alert("❌ Invalid webhook URL.");
            try {
                const res = await fetch(url, { method: "DELETE" });
                if (res.ok) alert("✅ Webhook deleted successfully.");
                else alert(`❌ Failed to delete webhook: ${res.status}`);
            } catch (err) {
                console.error("Webhook delete error:", err);
                alert("❌ Error deleting webhook.");
            }
        };

        const panicBtn = document.createElement("button");
        panicBtn.textContent = "💣 Panic Wipe";
        panicBtn.style.cssText = buttonStyle + "background: #9b1c1c; border-color: #5c0d0d;";
        panicBtn.onclick = () => {
            alert("☠️ Nuking everything...");
            if (uiContainer) uiContainer.remove();
            WebSocket.prototype.send = originalSend;
            GM_deleteValue("discordSpoofPlatform");
            for (const key in window) {
                if (typeof window[key] === "function" && /spoof|ui|tool/i.test(key)) {
                    window[key] = () => {};
                }
            }
        };

        body.append(
            createLabel("📱 Platform Spoof"), select,
            reconnectBtn, createSubtleLabel("Reload to apply"),
            usernameColorToggle, createSubtleLabel("Changes username color for easier readability"),
            createDivider(),
            webhookInput, createSubtleLabel("Paste full webhook URL"), deleteWebhookBtn,
            createDivider(),
            panicBtn, createSubtleLabel("Press Shift + P to hide the menu temporarily!")
        );

        uiContainer.appendChild(body);
        document.body.appendChild(uiContainer);

        let isDragging = false, offsetX = 0, offsetY = 0;
        header.addEventListener("mousedown", (e) => {
            isDragging = true;
            offsetX = e.clientX - uiContainer.offsetLeft;
            offsetY = e.clientY - uiContainer.offsetTop;
            document.body.style.userSelect = "none";
        });
        document.addEventListener("mouseup", () => {
            isDragging = false;
            document.body.style.userSelect = "";
        });
        document.addEventListener("mousemove", (e) => {
            if (isDragging) {
                uiContainer.style.left = `${e.clientX - offsetX}px`;
                uiContainer.style.top = `${e.clientY - offsetY}px`;
            }
        });
    }

    function toggleUI() {
        if (!uiContainer) return;
        isVisible = !isVisible;
        uiContainer.style.display = isVisible ? "block" : "none";
    }

    document.addEventListener("keydown", (e) => {
        const t = e.target;
        if (t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.isContentEditable) return;
        if (e.shiftKey && e.key.toLowerCase() === "p") toggleUI();
    });

    window.addEventListener("load", () => {
        createUI();
        uiContainer.style.display = "block";
        isVisible = true;
        highlightRedUsernames();
        console.log("[Spoof] Toolbox loaded. Shift+P to toggle.");
    });
})();