Dokdo is a powerful, extensible debugging toolkit for discord.js
.
It allows you to evaluate JavaScript code, run shell commands, and inspect your bot in real-time directly from Discord.
Inspired by Jishaku for
discord.py
.
-
Eval Command – Run JavaScript code directly in the context of your bot.
-
Shell Command – Execute terminal commands through Discord. You could also abort running process.
-
Paginated Output – Long outputs are automatically split and navigable via or buttons.
-
Security Protection – Automatically masks bot tokens and other sensitive values from outputs.
-
Easy to Customize – Tailor prefixes, aliases, owners, variables, and permission error messages etc to fit your needs.
Dokdo stable version requires Discord.js v14 or later.
npm install dokdo
Nightly Version?
Github Packages (registry configuration needed)
npm i @wonderlandpark/dokdo@nightly
const Discord = require('discord.js')
const client = new Discord.Client({ intents: ['GUILDS', 'GUILD_MESSAGES'] })
const Dokdo = require('dokdo')
const DokdoHandler = new Dokdo.Client(client, { aliases: ['dokdo', 'dok'], prefix: '!' }) // Using Bot Application ownerID as default for owner option.
client.on('messageCreate', async message => {
if (message.content === 'ping') return message.channel.send('Pong') // handle commands first
await DokdoHandler.run(message) // try !dokdo
})
client.login('super secret token')
Evaluate or execute JavaScript(Node.js) code passed.
Available Variables by default:
VARIABLE | DESCRIPTION |
---|---|
client |
The bot client(Discord.Client) passed by Dokdo.Client(client) |
message |
The message(Discord.Message) passed by DokdoHandler.run(message) |
_dokdo |
The Dokdo Client |
Executes commands at your system shell.
Dokdo detects your SHELL
environment variable(process.env.SHELL) or uses powershell for Windows platform. You could abort running process by a Button.
The execution terminates automatically after 3 minutes.
Reads a file from your file system. Pass your file path. (Ex: /home/dokdo/bot.js)
Reads text of given URL.
Executes commands on every sharded processes. (Discord.js Sharding)
You can set the Dokdo prefix including mentions. This allows the client to read the message content.
Example:
new Dokdo.Client(client, { prefix: '<@285185716240252929>' })
Command Usage: <@285185716240252929>dokdo
Full documentation, examples, and advanced usage:
Pull requests and issues are welcome. Dokdo is open-source and built with developer experience in mind. Please check the contribution guide before you submit Pull Request.