@gilgames/discord-detours
v0.2.0
Published
A software package used to find, call, and hook into Discord client's functions by injecting JS code in the browser context.
Downloads
28
Maintainers
Readme
Discord Detours
Discord Detours is a package that helps you find,
call, and hook into Discord client's functions.
This is intended to be used with tools like
Puppeteer
which let you programmatically control a browser
instance and run JavaScript code in its context.
You can also inject api.js
into Discord using an extension like
Inject Code
directly from your browser.
Installation
npm install @gilgames/discord-detours
API reference
Utility functions for injecting the code (to be used with Puppeteer)
detours.serializeModule(module)
: serializes a module into a string (JSON.stringify
is no good as it won't serialize functions)detours.injectModule(serializedModule[, name])
: injects a serialized module intowindow.name
(name
defaults todiscordDetours
if not specified)
APIs for finding functions and modules
detours.api.getAllModules()
: returns a list of all modulesdetours.api.findModuleByFunctionName(name)
: returns a module by function namedetours.api.findFunctionByName(name)
: returns a function by namedetours.api.findFunctionsMatchingPattern(pattern)
: returns a list of functions matching a regex pattern
APIs for hooking/detouring functions
Will be added in the future.
Usage
Puppeteer
const detours = require("@gilgames/discord-detours");
// Open the browser with Puppeteer, navigate to Discord, and login
// ...
// Execute the code in the browser's context using Puppeteer's `page.evaluate`
const serializedAPI = detours.serializeModule(detours.api);
await page.evaluate(detours.injectModule, serializedAPI);
// Call any Discord function
const token = await page.evaluate(() => window.discordDetours.findFunctionByName("getToken")());
console.log(token);
Using your browser
First you have to install an extension that lets
you inject code into a webpage. Then, navigate to
Discord's website, login, and inject the code that
you can find in the api.js
file, bar the module export at the bottom. You can
now call the API functions described in the usage
section directly from the console of your browser.