您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Mocked userscript for Discord injection/unplugging logic
// ==UserScript== // @name Discord replugged mod converted into uscp (WIP, doesnt work, Mocked for Browser) // @namespace http://tampermonkey.net/ // @version 0.1 // @description Mocked userscript for Discord injection/unplugging logic // @author You // @match *://*/* // @grant none // @run-at document-start // ==/UserScript== (async function() { // Mock functions for browser environment const AnsiEscapes = { RED: '\x1b[31m', GREEN: '\x1b[32m', YELLOW: '\x1b[33m', RESET: '\x1b[0m', BOLD: '\x1b[1m' }; const PlatformNames = { 'canary': 'DiscordCanary', 'stable': 'Discord' }; // Mock the getCommand function for userscript execution const getCommand = ({ action, prod, platform }) => { return `${action} command for platform ${platform}`; }; const getProcessInfoByName = (name) => { // Mocked function: returns an empty array as no processes can be killed in the browser return []; }; const killProcessByPID = (pid) => { console.log(`Attempting to kill process with PID ${pid}... (This will not work in the browser)`); }; const openProcess = (path, args, options) => { console.log(`Attempting to open process at ${path} with args: ${args.join(" ")} (This is mocked in the browser)`); }; const getAppDir = async (platform) => { // Return a mocked directory path return `/mocked/path/to/discord/${platform}`; }; const isDiscordInstalled = async (appDir) => { // Mock installation check console.log("Checking if Discord is installed at: " + appDir); return true; // Assume it's installed for this mocked version }; const correctMissingMainAsar = async (appDir) => { console.log("Correcting missing app.asar..."); return true; }; const inject = async ({ getAppDir }, platform, prod) => { const appDir = await getAppDir(platform); if (!(await correctMissingMainAsar(appDir))) return false; if (!(await isDiscordInstalled(appDir))) return false; console.log(`Injecting for platform: ${platform}, prod: ${prod}`); // Mock steps // Skipping file and directory manipulations console.log(`Successfully injected for ${platform}`); return true; }; const uninject = async ({ getAppDir }, platform) => { const appDir = await getAppDir(platform); console.log(`Uninjecting for platform: ${platform}`); // Mock steps // Skipping file and directory manipulations console.log(`Successfully un-injected for ${platform}`); return true; }; const smartInject = async (cmd, replug, platformModule, platform, production, noRelaunch) => { const processName = platform === 'canary' ? 'DiscordCanary' : 'Discord'; if (!noRelaunch) { try { const processInfo = getProcessInfoByName(processName); processInfo.forEach(info => killProcessByPID(info.pid)); } catch (error) { console.error("Error killing processes:", error); } } const result = cmd === "uninject" ? await uninject(platformModule, platform) : await inject(platformModule, platform, production); if (!noRelaunch) { if (processInfo) { const appDir = await platformModule.getAppDir(platform); openProcess(`${appDir}/path/to/discord/executable`, [], { detached: true, stdio: 'ignore' }); } } return result; }; // Example usage of smartInject const result = await smartInject('inject', true, { getAppDir }, 'stable', false, false); console.log(`Injection result: ${result}`); })();