A Discord bot that's offline or silent usually comes down to the token, gateway intents, permissions, or where it's hosted. Here's how to work through it, including rate-limit and sharding issues on larger bots.
Quick answer
A Discord bot shows offline when its process is not running or its token is wrong. It stays online but silent when gateway intents (especially Message Content) or channel permissions are missing. Check the token, enable the intents in the Developer Portal, give the bot permission in that channel, and host it 24/7 under a process manager such as pm2 or systemd.
Bot shows offline
If the bot is offline, its process isn't running or can't log in. Check it's actually running and the token is correct (a reset token invalidates the old one):
- Is the bot process running? Restart it and watch the console for a login error.
- Is the token valid? Regenerate it in the Developer Portal and update your config/env.
- Never commit your token publicly — Discord auto-invalidates leaked tokens.
Online but ignoring commands
If it's online but silent, it's usually gateway intents or permissions. Message-content is a privileged intent you must enable:
# Discord Developer Portal → your app → Bot
# enable: MESSAGE CONTENT INTENT (and Server Members if needed)
# and request the same intents in your bot codePermissions & slash commands
- The bot's role needs permission to read/send in the channel.
- For slash commands, make sure they're registered (globally or per-guild) and the bot has the applications.commands scope.
- Check the bot role is above the roles it needs to manage.
A bot on your PC goes offline when you close it. For 24/7 uptime, run it on a VDS under a process manager (pm2, systemd or screen) so it restarts on crash and boot.
Offline = process/token. Silent = intents/permissions. For uptime, host it on a VDS under pm2/systemd.
Rate limiting and disconnects
A bot that connects, works briefly, then goes offline repeatedly may be hitting Discord's rate limits (HTTP 429 responses) from sending too many requests too fast — often a bug in a loop or an aggressive retry without backoff. Log HTTP response codes from your library and add exponential backoff on retries rather than hammering the API.
Sharding for larger bots
Discord requires sharding once a bot joins roughly 2,500 guilds, and the gateway will reject connections from an unsharded bot past that point. If a previously-working large bot suddenly can't connect, check whether it just crossed a sharding threshold and needs its sharding config updated.
How to prevent bot downtime
- Run the bot under a process manager (pm2/systemd) configured to auto-restart on crash and on server reboot.
- Log every disconnect/reconnect event so you can tell the difference between "crashed" and "rate limited" quickly.
- Keep your Discord library (discord.js, discord.py, etc.) updated — API and intent changes on Discord's side can silently break an old library version.
Related errors
If the bot runs on a VDS you manage over SSH, see how to connect to your server with SSH. To keep it auto-restarting on a schedule or after a crash, a scheduled health check via cron alongside your process manager is a solid setup.
Discord is a trademark of Discord Inc. ESAGAMES is an independent hosting provider, not affiliated with or endorsed by Discord Inc.