Troubleshooting
The bot won't start / "disallowed intents"
The login fails with a Used disallowed intents error.
Fix: enable Message Content Intent in the Discord Developer Portal → your app → Bot → Privileged Gateway Intents. The bot requests it for the chat feed and won't start without it.
Commands don't appear in Discord
You invited the bot but / shows nothing.
- Global commands take up to ~1 hour to propagate the first time. For instant
registration while testing, set
TEST_SERVER_GUILD_IDto your server's id — guild commands appear within a minute. - Make sure you invited the bot with both the
botandapplications.commandsscopes (see Installation). - Confirm
REFRESH_SLASH_COMMAND_API_DATA=true.
"Grant required" on CFTools commands
A command replies that a grant is missing.
Fix: in CFTools, grant your application access to that server. Citadel's CFTools application must be authorized on every server it queries. Some actions (priority queue / whitelist) also need a CFTools premium plan on the server.
/server-info is empty or "unnamed"
/server-info doesn't look up by the Server API ID — it queries CFTools by
game + IP + port. If SERVER_IPV4 / SERVER_PORT are wrong or left at
0.0.0.0, the lookup finds nothing.
Fix: set the server's real public IPv4 and game port (e.g. 2302) in
config/servers.js. Every other CFTools
command uses CFTOOLS_SERVER_API_ID and is unaffected.
/leaderboard or /player-list is empty
This is usually correct, not a bug — the server simply has no ranked players or
nobody online. Verify against the CFTools dashboard. Check LEADERBOARD_BLACKLIST
isn't excluding everyone.
/statistics shows no heatmap
The hit-zone heat map only renders when the player has recorded hit-zone data
and STATISTICS_INCLUDE_ZONES_HEATMAP: true. A player with no PvP hits won't
produce one. The renderer uses @napi-rs/canvas — no Chromium needed.
Auto-leaderboard doesn't post
- Confirm
AUTO_LB_ENABLED: trueand a validAUTO_LB_CHANNEL_ID. - The bot must be able to send messages in that channel; with
AUTO_LB_REMOVE_OLD_MESSAGES: trueit also needs Manage Messages. - It posts on boot and every
AUTO_LB_INTERVAL_IN_MINUTES— check the logs for a channel-resolution error.
Storefront relay isn't applying grants
- Confirm
CITADEL_RELAY_ENABLED: truewith a validCITADEL_SERVICE_IDandCITADEL_API_KEYfor that server. - Check the logs for
[citadel-relay]lines on boot (handshake) and on purchase. - The buying player must have a linked Steam64, and the perk must map to a valid relay command.
Where to get help
Join the Citadel support server.