Discord bot for iRacing race reports

Your league's races,
posted the moment they finish

SimBot Race Reports watches your drivers' iRacing results and posts a rich image race card to Discord the instant they finish an official race — podiums routed to their own channel, everyone else to the main feed.

1
iRacing call per driver, per poll
5m–2h
Adaptive polling cadence
$0
To self-host
A SimBot Race Reports podium card: P3 finish in class, iRating +60, Safety Rating up, with position and lap-time charts

Built for leagues that live
in multiclass and endurance racing.

Podiums that mean it

Podium detection is top-3 finish position within car class, not overall — correct for multiclass series where P8 overall can still be a class win.

A card, not a wall of text

Every report is a rendered image: finish position, iRating and Safety Rating deltas, incidents, weather, and position/lap-time charts — one glance tells the story.

Efficient by design

Adaptive polling and cross-driver discovery keep iRacing API usage low — one call per driver per poll, and busy drivers are found faster as your league grows.

From race finish to Discord post,
fully automatic.

Adaptive Polling Cadence

Re-check frequency scales with how recently a driver raced: 5 minutes if active this week, up to a 2-hour ceiling if dormant.

Cross-Driver Discovery

Every fetched race is scanned for other tracked drivers in the same field, including across different Discord servers — no extra API call.

Position & Lap-Time Charts

Inline SVG charts for position-over-laps (class vs. overall, dual axis) and lap-time trend with the fastest lap marked.

Podium Detection (In-Class)

Podium finishes route to their own channel automatically, computed correctly for multiclass fields.

Team & Endurance Races

Team results show the full roster sorted by iRating, with each driver's laps, iRating change, and Safety Rating change.

Dual Channel Routing

An "all races" channel and a "podiums only" channel can both be set at once, independently.

Crash-Safe, No Duplicates

Every post is claimed in a dedup table before sending — a restart mid-poll can never result in the same race posted twice.

Embed Fallback

If image rendering ever fails, the report still posts as a Discord embed — nothing gets dropped.

One Driver Per Discord User

Simple, self-serve tracking — every member tracks exactly one iRacing customer ID per server, no juggling IDs.

From a finished race
to a card in Discord.

1

Admin configures channels

An admin runs /racereports-admin setup to pick an all-races channel and/or a podiums-only channel. The bot verifies it can post there before saving.

2

Drivers track themselves

A member runs /racereports track with their iRacing customer ID. Their watermark is seeded to their most recent existing race — no history spam.

3

The poller wakes on schedule

Due drivers are checked based on their adaptive cadence and queried once through a shared rate limiter.

4

New race detected

Any race newer than the stored watermark triggers a full results fetch — weather, splits, standings, and per-driver stats, all in one response.

5

Card rendered

Position and lap-time charts are added, then the card is rendered to an image. If rendering fails, an embed posts instead.

6

Fan-out & dedup

The report posts to every server tracking the driver — all-races channel always, podium channel on a class top-3 — with a dedup claim guaranteeing no double-posts.

Real races, real cards.

Every image below was generated by the bot itself from a live iRacing result — nothing mocked up.

A podium race card: P3 finish in class with gold accent and medal

Podium finish

Gold accent, medal, and the "PODIUM" tag — routed to the podiums channel automatically.

A standard multiclass race card with position and lap-time charts

Standard race card

Finish position, rating deltas, weather, and both charts, from a single API response.

A team endurance race card showing the full roster sorted by iRating

Team & endurance races

Full roster sorted by iRating, with each driver's laps and rating changes.

Run it on your server.

SimBot Race Reports is self-hosted — point it at your own Discord app and iRacing credentials, then set your channels.

View setup instructions
Free to run  ·  MySQL + Redis  ·  Set up in minutes