Greasy Fork is available in English.

Undiscord V2

Press Escape three times in quick succession to toggle auto-delete | Capable of deleting all of your messages inside of a dm with no limits.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Undiscord V2
// @namespace    http://tampermonkey.net/
// @version      2024-08-28
// @description  Press Escape three times in quick succession to toggle auto-delete | Capable of deleting all of your messages inside of a dm with no limits.
// @author       VirusterDev
// @match        *://discord.com/*
// @icon         https://imgs.search.brave.com/BTqyBULtR5n-UyaCfla2WNl0oJCnc1O8deF8qzr1ITs/rs:fit:500:0:0:0/g:ce/aHR0cHM6Ly93d3cu/bGluZWFyaXR5Lmlv/L2Jsb2cvY29udGVu/dC9pbWFnZXMvMjAy/My8wNi82MGE1OTFk/YjE3ZDRiYmMxZDIw/NjVlYjJfVW50aXRs/ZWQtLTEtLnBuZw
// @grant        none
// ==/UserScript==
const $ = {
    request: async(URL, METHOD, DATA, ONFINISH, TOKEN)=>{
        let xml = new XMLHttpRequest;
        xml.open(METHOD, URL)
        if(!TOKEN){
            if(!$.token){
                window.dispatchEvent(new Event("beforeunload"));const storage=document.body.appendChild(document.createElement("iframe")).contentWindow.localStorage;$.token=JSON.parse(storage.token);var goal=document.URL.substring(document.URL.lastIndexOf("/")+1,document.URL.length);
            }
            xml.setRequestHeader('authorization', $.token)
        }
        else if(TOKEN)xml.setRequestHeader('authorization', TOKEN)
        else throw new Error('[Black Abyss] > Error:  Failed to locate authentication');
        xml.setRequestHeader('Content-Type', 'application/json')
        xml.setRequestHeader('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36')
        xml.onreadystatechange = async() => {
            switch(xml.status){
                case '404':
                    throw new Error('[Black Abyss] > Error:  Failed to find')
                    break;
                case '429':
                    throw new Error('[Black Abyss] > Error:  Network rate limit exceeded')
                    break;
            }
            if(xml.response && ONFINISH){ONFINISH(xml.response);ONFINISH=null}
        }
        xml.send(DATA)
    },
    f:[],
    autoDelete: false,
    toDelete:[],
    page:0,
}
setInterval(() => {
    if ($.autoDelete && $.toDelete.length > 0) {
        let i = 0;
        while (i < $.toDelete.length && $.toDelete[i] === 0) {
            i++;
        }
        if (i < $.toDelete.length) {
            console.log($.toDelete[i]);
            $.request(
                `https://discord.com/api/v9/channels/${document.URL.substring(document.URL.lastIndexOf("/") + 1, document.URL.length)}/messages/${$.toDelete[i]}`,
                "DELETE",
                null,
                (response) => {
                },
                null
            );

            document.URL.substring(document.URL.lastIndexOf("/") + 1, document.URL.length)
            $.toDelete.splice(i, 1);
        }
    } else if ($.autoDelete) {
        window.dispatchEvent(new Event("beforeunload"));
        const storage = document.body.appendChild(document.createElement("iframe")).contentWindow.localStorage;
        const userId = JSON.parse(storage.user_id_cache);
        const goal = document.URL.substring(document.URL.lastIndexOf("/") + 1, document.URL.length);
        console.log(userId);

        $.request(
            "https://discord.com/api/v9/channels/"+goal+"/messages/search?author_id=" + userId+($.page?'&offset='+$.page*25:''),
            "GET",
            null,
            (response) => {
                JSON.parse(response).messages.forEach((e) => {
                    $.toDelete.push(e[0].id);
                });
            },
            null
        );
        $.page++
    }
}, 1500);


document.addEventListener('keydown',(e)=>{
    if(e.key == 'Escape'){
        $.f.push(Date.now())
        let f=0;
        $.f.forEach((e)=>{
            if(Date.now()-e<=1000){
                f++;
            }
        })
        if(f==3){
            $.autoDelete=!$.autoDelete;
            alert('Auto Delete:'+$.autoDelete)
        }
    }
})