Back to projects

Completed system

Combat Robotics Event Tracker

A Python and GitHub Actions system for combat robotics event notifications in Discord.

Python automation · Team infrastructure

Why I built it

As the Embry-Riddle ASME Combat Robotics program grew, keeping track of competitions across multiple websites became time-consuming. I built a Python event tracker to collect that information and post structured updates in the team’s Discord channel. The goal was to make registration opportunities and travel planning easier to follow.

A test event notification in Discord demonstrating the tracker’s message format.
A test event notification in Discord demonstrating the tracker’s message format.

How it works

Scheduled GitHub Actions runs collect event information, parse each source, estimate distance from Daytona Beach, and prepare Discord embeds. The tracker stores previously posted events in JSON to prevent duplicate notifications.

  1. Collect event listings from supported websites.
  2. Extract dates, locations, weight classes, and available registration information.
  3. Filter by distance, with different treatment for major national competitions.
  4. Send newly discovered events through a Discord webhook.
  5. Save the posting history for the next run.

The documented sources are Robot Combat Events, Builders Database, NHRL Events, and Robot Ruckus. The implementation uses Python, Requests, BeautifulSoup4, JSON, GitHub Actions, and Discord webhooks.

Parsing and filtering

Each organizer presents event information differently, so the tracker needs source-specific parsing and fallback logic. It also distinguishes nearby competitions from major events that may justify longer travel.

Registration labels inferred from page text are estimates. The code marks them as likely open or closed and directs readers to check the event page. This keeps a useful notification from implying more certainty than the source provides.

Python logic for distance filtering, requests, weight classes, and registration estimates.
Python logic for distance filtering, requests, weight classes, and registration estimates.

Outcome and next steps

The completed tracker gives the team a central stream of competition information in Discord and reduces manual monitoring. It gave me practical experience with web parsing, scheduled cloud workflows, duplicate prevention, and webhook integration.

Registration reminders and role-based notifications are possible extensions, rather than completed features.

Explore the Combat Robotics program
Back to projects