Skip to main content
Integration setup

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)

01

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 server
02

Run /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.

03

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.

04

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.

Free — 6 commands

/setup · /link · /post-rsvp · /attendance · /map-role · /sync-roles

Pro & Enterprise — 7 commands

/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.

Open iRacing integration guide