Troubleshooting a bot that is offline or silent

RunUpdated

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

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

  1. 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.
  2. 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.
  3. Check dependencies. Node runs npm ci --omit=dev, so packages only in devDependencies are missing. Python installs requirements.txt, so a missing-module error means the package isn't in that file.
  4. 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:

SymptomCheck next
Slash command is absentRegister it for the application and test guild you actually invited; check command access and installation scopes
Command appears but times outLog entry into the handler, acknowledge or defer promptly, then inspect slow API calls and exceptions
Slash commands work but text commands do notCheck the message prefix and Message Content intent in code and the Developer Portal
Works in one channel onlyCompare channel permission overrides and command access with the working channel
  • Slash commands have to be registered with Discord. The test bot answers /ping on 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 bot and applications.commands scopes, 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

Crash loops stop the server

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