SimBot integrates with the iRacing API to handle driver registration, team management, race processing, standings, penalties, and more, all through Discord slash commands.
A complete league management platform built into your Discord server.
Register drivers, form teams, handle car assignments, and track rosters across multiple series and seasons.
Pull iRating, safety rating, and license data directly from the iRacing API. Cached in a queue-based system that respects rate limits.
Upload iRacing result files and have them processed automatically into per-driver and per-team standings with full lap data.
Multi-category standings (Overall, Pro, Am) with configurable points systems (F1, NASCAR, or custom) and drop-race support.
Apply time or points penalties to drivers, with descriptions and reasons. Standings recalculate automatically on any change.
Generate image-based reports for standings tables, driver lists, and lap charts, rendered as images and posted directly in Discord.
Automatically create and maintain team voice channels on Discord, organized by series and kept in sync with team rosters.
Submit hosted session notifications and reimbursement requests with admin approval workflows and PayPal tracking.
Compare your Discord sign-ups against the iRacing league roster to find missing drivers, last-season returnees, or never-registered members.
Reserve specific car numbers per series, prevent duplicates, and manage reservations across your entire league.
Run standalone practice cup races with separate team and free agent registration, independent of the championship series.
Query the Garage61 database for fastest lap times by track, car, team, or season. Filter and sort directly from Discord.
All commands use Discord slash command syntax. Commands labeled Admin Only require administrator permissions. Commands labeled Admin require elevated permissions.
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/driver_signup_ir |
Sign up as a driver for a racing series | series_name, iracing_name, car_number, car_name | Admin |
/driver_update_ir |
Update your own driver information within a series | series_name, iracing_name, car_number, car_name | Admin |
/driver_fetch_ir |
Retrieve information for a specific driver | series_name, driver_name, season_number | Admin |
/driver_fetch_all_ir |
Retrieve all drivers registered in a series | series_name, season_number | Admin |
/driver_fetch_iratings |
Retrieve drivers with iRating and safety rating data | series_name, season_number, sort, show_discord_username | Admin |
/admin_driver_signup_ir |
Sign up a driver on behalf of another Discord user | discord_user, series_name, iracing_name, car_number, car_name | Admin Only |
/admin_driver_update_ir |
Update any driver's information including car change allowance | discord_user, series_name, iracing_name, car_number, car_changes, driver_category | Admin Only |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/team_create_ir |
Create a new team for a series | series_name, team_name, second_driver | Anyone |
/team_update_ir |
Rename your team | series_name, team_name, new_team_name | Anyone |
/team_add_driver_ir |
Add a driver to your team | series_name, team_name, driver_to_add | Anyone |
/team_remove_driver_ir |
Remove a driver from your team | series_name, team_name, driver_to_remove | Anyone |
/team_fetch_ir |
Get information about a specific team | series_name, team_name, season_number | Anyone |
/team_fetch_all_ir |
Get all teams in a series | series_name, season_number | Anyone |
/admin_team_create_ir |
Create a team and assign any driver | series_name, team_name, driver_to_add | Admin Only |
/admin_team_update_ir |
Update any team's information | series_name, team_name, new_team_name | Admin Only |
/admin_team_add_driver_ir |
Add any driver to any team | series_name, team_name, driver_to_add | Admin Only |
/admin_team_remove_driver_ir |
Remove any driver from any team | series_name, team_name, driver_to_remove | Admin Only |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/admin_series_create_ir |
Create a new racing series with full channel and role configuration | series_name, car_class, sign_up_channel, team_channel, admin_channel, add_role, drop_races, num_team_members | Admin Only |
/admin_series_update_ir |
Update series configuration including season number and active status | series_name, new_series_name, season_number, car_class, car_change_allowance, is_active, drop_races | Admin Only |
/admin_series_fetch_ir |
Get full configuration details for a specific series | series_name | Admin Only |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/series_standings_fetch_drivers |
Get driver championship standings | series_name, season_number, category (Overall/Pro/Am), sort_by (total/drops) | Admin |
/series_standings_fetch_teams |
Get team championship standings | series_name, season_number, category (Overall/Pro/Am), sort_by | Admin |
/series_standings_fetch_all |
Get combined standings for drivers and teams across all categories | series_name, season_number, sort_by | Admin |
/series_race_results_drivers |
Get driver results for a specific race | series_name, season_number, race_name, category | Admin |
/series_race_results_teams |
Get team results for a specific race | series_name, season_number, race_name, category | Admin |
/series_race_results_fetch_all |
Get all race results: drivers and teams across all categories | series_name, season_number, race_name | Admin |
/series_race_results_lapchart |
Generate a visual lap chart showing driver positions throughout the race | series_name, season_number, race_name, category | Admin |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/admin_process_race |
Upload and process an iRacing JSON result file into standings | series_name, result_file (attachment), practice_race | Admin Only |
/admin_set_points_system |
Configure the points system for a series (F1, NASCAR, or custom) | series_name, system_type, custom_scoring | Admin Only |
/admin_apply_penalty |
Apply a time or points penalty to a driver for a specific race | series_name, race_number, driver_name, description, time_penalty, points_penalty | Admin Only |
/admin_remove_penalty |
Remove a previously applied penalty | series_name, race_number, penalty_id | Admin Only |
/admin_delete_race |
Permanently delete a race and all associated data | series_name, season_number, race_name | Admin Only |
/admin_race_results_recalculate |
Recalculate standings for a specific race after changes or penalties | series_name, season_number, race_name | Admin Only |
/admin_series_audit_race |
Identify car mismatches or drivers not signed up in a race result | series_name, season_number, race_number | Admin Only |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/admin_series_voice_create |
Configure voice channel settings for team channels in a series | series_name, category, admin_role | Admin Only |
/admin_series_voice_update |
Update the voice channel category or admin role | series_name, category, admin_role | Admin Only |
/admin_series_voice_sync |
Create or update all team voice channels for a series | series_name | Admin Only |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/admin_number_reserve |
Reserve a specific car number (1–999) for a driver in a series | discord_user, series_name, car_number | Admin Only |
/admin_number_release |
Release a reserved car number by number or by driver | series_name, car_number, discord_user | Admin Only |
/admin_number_list |
List all reserved car numbers in a series | series_name | Admin Only |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/admin_audit_iracing_roster |
Compare iRacing league roster against signed-up Discord drivers | series_name, season_number | Admin Only |
/admin_drivers_last_season |
List drivers from the previous season who have not signed up for the current one | series_name | Admin Only |
/admin_never_signed_up |
List iRacing roster members who have never signed up in the Discord guild | series_name | Admin Only |
/admin_driver_fetch_all |
Get all users and customer IDs, optionally filtering for missing IDs | series_name, missing_customer_id_only | Admin Only |
/admin_channel_sync_roles |
Restrict a channel to users who have all specified roles | channel, role_1 through role_5 | Admin Only |
/admin_role_remove_notsignedup |
Remove a role from all signed-up drivers in the database | role | Admin Only |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/admin_hostedserver_config |
Set up channels for hosted server notifications and reimbursements | channel_id, reimbursement_channel_id | Admin Only |
/admin_hostedserver_config_update |
Update the hosted server channel configuration | channel_id, reimbursement_channel_id | Admin Only |
/admin_hostedserver_update |
Update a hosted server reimbursement request | request_id, new_date, new_cost, reimbursement_amount, is_reimbursed | Admin Only |
/hosted_server_submit |
Notify members of a hosted session and submit a reimbursement request | when, cost, paypal_email | Anyone |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/pc_race_create |
Create a new practice cup event with channels and roles | race_name, race_description, race_date, race_info_channel, team_owner_role, free_agent_role | Admin Only |
/pc_race_team_create |
Create a team for a PC race event | race_id, team_name | Admin Only |
/pc_race_fetch_teams |
Get all teams registered for a PC race | race_id | Anyone |
/pc_race_team_driver_add |
Add a Discord user to a PC race team | team_id, driver | Admin Only |
/pc_race_team_driver_remove |
Remove a driver from a PC race team | team_id, driver_to_remove | Admin Only |
/pc_race_free_agent_register |
Sign up as a free agent for a PC race event | race_id | Anyone |
/pc_race_free_agents_fetch |
Get all free agents registered for a PC race | race_id | Anyone |
| Command | Description | Key Parameters | Access |
|---|---|---|---|
/laptimes_garage61 |
Query the Garage61 database for fastest lap times by track, car, team, or season. Results can be grouped by driver or driver and car. | track_name_g61, car_name_g61, car_group_g61, team_g61, season_g61, group_laps_g61, num_drivers | Admin |
SimBot follows a consistent lifecycle from league setup to race-day reporting.
An admin creates a series with /admin_series_create_ir, specifying the car class, team size limits, car change allowances, drop race count, and the dedicated Discord channels for sign-ups, team updates, and admin notifications.
Drivers register with /driver_signup_ir, providing their iRacing name, car number, and car. The bot queues a background job to fetch their iRating and safety rating from the iRacing API, with automatic rate-limit handling.
Drivers create teams with /team_create_ir and invite teammates. Admins can override team composition at any time. Optionally, voice channels are auto-created per team via /admin_series_voice_sync.
Admins configure scoring with /admin_set_points_system using built-in F1 or NASCAR distributions, or a fully custom scoring table. Drop-race rules are set at the series level.
After each race, admins upload the iRacing JSON result file with /admin_process_race. The bot parses it, matches drivers to registrations, calculates points, handles penalties, and posts formatted results to the designated channels.
At any time, admins can pull driver or team standings filtered by category (Overall, Pro, Am) and sorting preference. The bot generates image-based standings cards, race result tables, and lap position charts posted directly in Discord.
Get SimBot running in your Discord server in a few steps.
Click the link below to open the Discord authorization page. You must have the Manage Server permission on the server you want to add SimBot to.
Add SimBot to DiscordChoose the server you want to add SimBot to from the dropdown, then click Authorize. SimBot requires the following permissions to function correctly: Send Messages, Embed Links, Attach Files, Manage Channels, Manage Roles, and Read Message History.
Once the bot is in your server, use /admin_series_create_ir to create a racing series. You will be prompted to provide a series name, car class, team size, and the Discord channels to use for sign-ups, team changes, and admin notifications.
Drivers can sign up using /driver_signup_ir with their iRacing name and car details. SimBot will automatically fetch their iRating and safety rating from iRacing in the background.