Skip to content

wonderlandpark/dokdo

Repository files navigation


Build status

Dokdo

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.

✨ Features

  • Eval Command – Run JavaScript code directly in the context of your bot. js jsi

  • Shell Command – Execute terminal commands through Discord. You could also abort running process. sh

  • Paginated Output – Long outputs are automatically split and navigable via or buttons. pagination

  • Security Protection – Automatically masks bot tokens and other sensitive values from outputs. token

  • Easy to Customize – Tailor prefixes, aliases, owners, variables, and permission error messages etc to fit your needs.

🚀 Installation

Dokdo stable version requires Discord.js v14 or later.

npm install dokdo
Using Discord.js v12?

You could install [email protected] by

  npm i dokdo@djsv12
Using Discord.js v13?

You could install [email protected] by

  npm i dokdo@djsv13
Nightly Version?

Github Packages (registry configuration needed)

npm i @wonderlandpark/dokdo@nightly

🛠️ Usage

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')

📦 Command References

> dokdo [js|javascript] <argument>

> dokdo [jsi|javascript_inspect] <argument>

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

> dokdo [exec||shell|sh|bash|ps|powershell|zsh] <argument>

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.

> dokdo [cat] <argument>

Reads a file from your file system. Pass your file path. (Ex: /home/dokdo/bot.js)

> dokdo [curl] <argument>

Reads text of given URL.

> dokdo [shard] <argument>

Executes commands on every sharded processes. (Discord.js Sharding)

🧾 Notes

Message contents intent not approved?

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

📚 Documentation

Full documentation, examples, and advanced usage:

👉 https://dokdo.js.org

🤝 Contributing

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.