您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
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.
// ==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) } } })