Your bot's name is grey in the member list. "Offline" in Discord almost always comes down to one of five things — check them in this order, because the earlier ones are the most common and the quickest to rule out.
1. Is the server actually running?
Start at the Console. A bot can only be online in Discord if its Falix server is running here first. Two common reasons it isn't:
- The free timer ran out and the server stopped. Extend it on the Timer page — see Keeping your app online.
- The server never started properly — usually the dependency install failed before your code ran. Read the console from the top: When your server won't start.
If the server isn't running, nothing else on this list matters — fix that first.
2. Is the token right?
The single most common cause. If the console shows TokenInvalid (discord.js) or LoginFailure: Improper token has been passed (discord.py), your bot's token is wrong, empty, or was reset since you last copied it. Resetting a token invalidates the old one instantly, so a stale value stops working the moment you generate a new one.
Put the current token in your .env and restart. If you're not sure it's still valid, reset it in the Discord Developer Portal — your application → Bot → Reset Token — and use the new value. See Environment variables and secrets.
💡 Tip: A token pasted with stray spaces or quotation marks around it fails just the same — copy the whole string and nothing else.
3. Are privileged intents enabled?
If your code asks for a privileged intent — Server Members, Message Content, or Presence — that intent must also be switched on in the Developer Portal, or Discord rejects the login. The tell-tale console errors are Used disallowed intents (discord.js) and PrivilegedIntentsRequired (discord.py). Fix it in the Developer Portal: your application → Bot → enable the intents your code uses (they have to match), then restart the server. Turn on only the ones you actually need.
4. Did it crash after logging in?
Sometimes the bot logs in, shows online for a second, then drops. That's a crash after the connection. A missing environment variable, a database it can't reach, or an error in an event handler will all take the bot down seconds after it appears. Fix that error and restart.
🎯 Good to know: Look below the "ready" / "logged in" line in the console, not above it — whatever error is printed there is what killed it.
5. Is it a clean exit?
If the console shows no error and the bot simply stops, make sure your code actually keeps the bot alive — for discord.js and discord.py, that's the client.login(...) / client.run(...) call that stays running. A script that logs in and then reaches the end exits cleanly, and a stopped server can't be online. More on that difference in Keeping your app online.
Everything looks fine but it's still grey
If the server is running, the console shows a clean login ("ready" / "logged in") with no errors after it, and the panel says online — then your bot really is online, and the problem is on Discord's side. Two things to check there: give the member list a moment and refresh it (Discord caches presence), and make sure the invite link you used was generated from the same application the token belongs to — inviting a different application's bot leaves the one you're hosting nowhere to appear.