Start with the console. Open the server in your bot dashboard and read from the top of the last start. The first error is usually the real one, and the lines after it tend to follow from it. Fix that one thing, then restart.
For a managed marketplace bot, use the buyer setup guide and the listing's support route. Source files, dependencies and execution settings are controlled by the reviewed release; use the configuration fields available on your instance. The file-editing steps below apply to your own-code hosting.
Find the first error
- TOKEN_INVALID or an authentication failure: Reset the token and update the panel variable.
- ModuleNotFoundError or Cannot find module: Declare and install the missing dependency.
- Disallowed intents, or online but silent: Match the Developer Portal intents with your code, then check command registration below.
- Killed, exit 137, or an out-of-memory message: Check the memory graph and reduce startup memory.
- HTTP 429, rate limited, or Cloudflare 1015: Respect retry-after and check connection limits.
An exit code alone does not establish the cause. Read the lines before it and compare the memory graph at the same time. Never include your bot token when sharing logs.
The bot stays offline
- Check the token. Paste it into Bot token with no spaces or quotes. A reset in the developer portal kills the old token, so paste the new one and restart.
- Check the entry file. A "not found. Upload your bot files" line means Main file (Jar file on JDA) doesn't match a file on the server. Names are case-sensitive.
- Check dependencies. Node runs
npm ci --omit=dev, so packages only indevDependenciesare missing. Python installsrequirements.txt, so a missing-module error means the package isn't in that file. - Check for
BOT_READY. The dashboard marks the bot as started only after your code prints that line.
The bot is online but ignores commands
An online presence confirms a Discord connection, not that a command was registered or handled. Match the visible symptom before changing the host:
| Symptom | Check next |
|---|---|
| Slash command is absent | Register it for the application and test guild you actually invited; check command access and installation scopes |
| Command appears but times out | Log entry into the handler, acknowledge or defer promptly, then inspect slow API calls and exceptions |
| Slash commands work but text commands do not | Check the message prefix and Message Content intent in code and the Developer Portal |
| Works in one channel only | Compare channel permission overrides and command access with the working channel |
- Slash commands have to be registered with Discord. The test bot answers
/pingon discord.js and discord.py but doesn't register it. The samples in the deploy docs do. - If the bot reads message text, turn on the Message Content intent in the developer portal and request it in your code. The same goes for Server Members and Presence.
- Invite the bot with the
botandapplications.commandsscopes, and check its permissions in that channel. - Stop any copy running on your own computer. Two processes on one token compete for the same events.
Discord needs an initial interaction response within three seconds. Defer a response before slow work, then send or edit the result; see Discord's interaction response rules. Add a temporary log when the handler receives a command, without logging tokens or personal message content. If that log never appears, check registration and event delivery before debugging the command's business logic.
The process gets killed
Swap is off. When a bot goes over its plan's memory, the process is killed instead of slowing down. If the bot stops with no error from your own code, suspect memory first. Watch the memory graph while it starts, trim caches, or move to a plan with more memory on the pricing page.
It keeps stopping
If a bot crashes 5 times within 10 minutes, the server is stopped and the owner gets an email. Restarting without a change hits the same error, so read the console and fix it first.
A bot that sits at 90% or more of its CPU limit for 30 minutes is stopped too. Look for a busy loop.
Rate limits and error 1015
Discord rate limits, or a Cloudflare error 1015 in the console, mean the bot is sending too many requests. Respect the retry-after time your library reports. Don't retry failed requests in a tight loop, and don't reconnect over and over.
Still stuck
Go back over getting started, then check the deploy page for your library: discord.js, discord.py, or JDA.
Still stuck? Contact support