Ian Rodgers
All projects

LiveLOL

A Discord bot that tracked League of Legends ranked progress in real time from the Riot API.

What it did

Added to a Discord server, the bot tracked the players members registered with a command, and after each ranked game posted an update to a chosen channel: LP gained or lost, champion and score, with a button that expanded the full match summary for both teams and links to OP.GG and DeepLol. A leaderboard command ranked everyone tracked in the server.

It supported every Riot regional platform.

How it was built

  • Polling. A background loop polled the Riot API across its regional clusters, with rate limiting and its own handling of 429 responses, and wrote each match's state to Firestore before posting the update to Discord - an ordering kept on purpose.
  • Observability. Errors and performance went to Sentry, with structured logging.
  • Delivery. Every push ran Ruff, and every merge to main ran the unit tests in GitHub Actions, built a Docker image tagged with its commit, and deployed it to the EC2 host over SSH. Any earlier build could be redeployed from its tag.

Screenshots

A LiveLOL message in Discord: a rank update showing a player lost 20 LP on Thresh, with buttons for match details, OP.GG and DeepLol.