您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Encrypt and decrypt messages on Discord on the fly.
当前为
// ==UserScript== // @name Discord encryption // @namespace http://tampermonkey.net/ // @version 0.2 // @description Encrypt and decrypt messages on Discord on the fly. // @author You // @match https://discordapp.com/channels/477776237964689432/* // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js // @grant none // ==/UserScript== var password = "adfaldskfjlkadsf"; // Replace any messages we manage to decrypt. function decryptDiscordMessages(password) { var nodes = document.getElementsByClassName('markup-2BOw-j'); for (var i = nodes.length; i--;) { var text = nodes[i].innerText; var decrypted = CryptoJS.AES.decrypt(text, password); try { var message = decrypted.toString(CryptoJS.enc.Utf8); if (message == "") continue; nodes[i].innerHTML = '<div style="color:red">' + message + '</div>'; } catch (error) {} } } function registerObserver() { var targetNode = document.getElementsByClassName('messagesWrapper-3lZDfY')[0]; if (targetNode == undefined) { setTimeout(registerObserver, 10); return; } var config = { childList: true, subtree: true }; var callback = function(mutationsList, observer) { for(var mutation of mutationsList) { if (mutation.type != 'childList') return; decryptDiscordMessages(password); } }; var observer = new MutationObserver(callback); observer.observe(targetNode, config); } registerObserver(); function registerMessageHook() { setTimeout(registerMessageHook, 10); var targetNode = document.getElementsByClassName('textArea-2Spzkt')[0]; if (targetNode == undefined) return; targetNode.onkeydown = function(e){ var message = targetNode.value; if (message.endsWith('/') && e.keyCode == 191) { message = message.slice(0, -1); console.log(message); var cypher = CryptoJS.AES.encrypt(message, password); targetNode.value = cypher; } }; } registerMessageHook();