Discord Bot Setup
Get race results, standings, schedules, and RSVPs into your league's Discord server in about five minutes. This guide covers the quick start, what the bot needs from you, the full command list, and what to do if something isn't working.
Quick start (about 5 minutes)
Add the bot to your Discord server
Invite the Racey bot to your server. It works on every plan — Free leagues get the core setup and organizer commands; Pro and Enterprise unlock standings, results, and the other driver-facing commands.
Add the Racey bot to your Discord serverRun /link to connect your Racey account
In your server, run /link and follow the prompt. This connects your Discord account to the Racey account that administers your league — do this with the account that has admin access to the league before you run /setup, or setup will be rejected.
Run /setup to bind the server to your league
Run /setup league:<your-league-slug> and pick a notifications channel and a results channel. The league slug comes from your league’s URL on Racey. You need Discord’s Manage Server permission for this step, on top of the /link requirement above.
Verify it worked
Run /standings in the server, or publish a result from League Admin, and confirm it shows up in the channel you picked. If nothing appears, see Troubleshooting below.
Requirements & gotchas
Manage Server isn't enough to run /setup
Discord's Manage Server permission only proves you control the Discord server. Racey also checks that the Discord account you ran /link with is an admin of the Racey league you're linking. Run /link with an account that actually administers the league before you run /setup — otherwise /setup will refuse to bind.
/standings and /results need the right season
Run without arguments, both commands only look at seasons that are active, playoff, or completed — a season that's still in registration won't show up. To reach one of those, pass season:<name-fragment> and it'll be found by name regardless of status.
Role sync needs the bot's role above the roles it manages
For /map-role and /sync-roles to add or remove a role, the Racey bot's own role in Server Settings → Roles must sit above every role it's mapped to manage. Discord silently blocks role changes at or below the bot's position, so the bot skips those roles instead of erroring — move the bot's role up if a mapped role never gets applied.
Free vs. Pro and Enterprise commands
Setup and the organizer-configuration commands work on every plan. The driver-facing lookup commands need Pro or Enterprise.
/setup · /link · /post-rsvp · /attendance · /map-role · /sync-roles
/standings · /results · /schedule · /protest · /leaderboard · /myresults · /penalty-points
Day-to-day: organizer commands
Run these with Manage Server in Discord. They configure the integration rather than look up race data, so they work on every plan.
/setup
/setup league:midwest-gt3 notifications-channel:#season-updates results-channel:#race-results
Links this server to a Racey league and sets the notifications and results channels. Requires Manage Server in Discord and a linked Racey account that administers the league.
/post-rsvp
/post-rsvp round:Round 4 - Watkins Glen
Posts an RSVP message with join/decline buttons for the named round. Requires Manage Server.
/attendance
/attendance round:Round 4 - Watkins Glen
Shows who RSVP’d and checked in for a round; defaults to the next upcoming round if you omit it. Requires Manage Server.
/map-role
/map-role kind:Registered Driver role:@Driver
Maps a Racey fact (registered driver, or Pro/Am category) to a Discord role so the bot can assign it automatically. Requires Manage Server.
/sync-roles
/sync-roles
Re-checks every linked member against your current role mappings and fixes any drift. Requires Manage Server.
Day-to-day: driver commands
Anyone in the server can run these once they've linked their account with /link. All but /link need the league to be on Pro or Enterprise.
/link
/link
Connects your Discord account to your Racey profile. Needed before /setup and before any personal command works.
/myresults
/myresults count:10
Shows your own recent race results (default 5, max 20). Pro and Enterprise, and you must be linked.
/penalty-points
/penalty-points
Shows your active penalty points. Pro and Enterprise, and you must be linked.
/standings
/standings season:2026 Spring
Shows championship standings. Without a season argument it uses the current active, playoff, or completed season. Pro and Enterprise.
/results
/results round:Round 4
Shows results for a round; defaults to the latest completed round. Pro and Enterprise.
/schedule
/schedule
Shows upcoming rounds. Pro and Enterprise.
/protest
/protest
Gets a link to submit a protest. Pro and Enterprise.
/leaderboard
/leaderboard
Shows top drivers with deeper stats. Pro and Enterprise.
Automatic notifications
Beyond slash commands, the bot posts on its own when these events happen in your league — no one has to ask.
Results published
Results channel (falls back to the notifications channel if no results channel is set)
A round’s results are published from League Admin.
Registration open / closed
Notifications channel
A season’s registration window opens or closes.
Announcements
Notifications channel
A league admin sends an announcement broadcast.
Schedule updates
Notifications channel
A round’s schedule changes and the update is broadcast.
Protest filed / rulings
Notifications channel
Pro and Enterprise only — a protest is filed or a steward issues a ruling.
Round RSVP open
Notifications channel
RSVPs open for an upcoming round; the post includes join/decline buttons.
Round reminder
Notifications channel
A reminder ping fires ahead of an upcoming round.
Registration approved / changed
No channel post
A member’s registration status changes — the bot reconciles their Discord roles against your /map-role mappings instead of posting.
Troubleshooting
"No league found" or /setup won't bind
This is one of three things: the league slug is mistyped (copy it from your league's URL on Racey, not its display name); your Discord account hasn't run /link yet; or the account you linked isn't an admin of that league. Run /link with the correct Racey account, then run /setup again with the exact slug.
"No active season found"
/standings and /results without arguments only match a season that's active, playoff, or completed. If your current season is still open for registration, pass season:<name-fragment> to look it up by name instead.
Nothing is posting to the channel
Usually one of: the notifications or results channel was deleted or renamed after /setup ran, or the bot was removed from the server (kicked, or its role was deleted). Re-invite the bot with the button above, then run /setup again pointing at valid channels.
A command replies that it needs Pro or Enterprise
The driver-facing lookup commands (standings, results, schedule, protest, leaderboard, myresults, penalty-points) are gated to Pro and Enterprise leagues. Setup and the organizer commands still work on Free. Ask your league admin to upgrade the league's plan to enable the rest.