/creatematchup
Creates a new match with interactive availability checking.Unique identifier for the match (e.g., “A1”, “QF1”)
osu! username of the red team player
osu! username of the blue team player
Reference Friday date in YYYY-MM-DD format (e.g., “2026-03-06”)
The round ID this match belongs to
Usage Example
- Validates both players exist in the database
- Retrieves availability data for both players
- Displays a day selector (Friday, Saturday, Sunday, Monday)
- Shows hour-by-hour availability with color coding:
- 🟢 Both players available (recommended)
- 🔴 Only red team available
- 🔵 Only blue team available
- ❌ Neither player available
- ⚠️ Time slot already has another match scheduled
- Creates the match in the database once time is selected
All times are displayed in Spain timezone (Europe/Madrid) but stored as UTC in the database.
/reschedulematchup
Reschedules an existing match to a new date and time.The ID of the match to reschedule
New date in DD/MM format (e.g., “09/11”)
New time in HH:mm format (e.g., “18:30”)
Usage Example
- Validate the match exists
- Parse the new date and time
- Update the match’s start time in the database
/removematchup
Deletes a match from the schedule.The ID of the match to remove
Usage Example
/createqualifierslobby
Creates a qualifier lobby at a specific time.Unique identifier for the qualifier lobby (e.g., “Q1”)
Date in DD/MM format
Time in HH:mm format
The qualifier round ID
Usage Example
/removequalifiersroom
Deletes a qualifier lobby from the schedule.The ID of the qualifier room to remove
Usage Example
/generate-schedules
Admin only. Automatically generates an optimized schedule for all matches in a round using constraint programming.The round ID to generate schedules for
The starting Friday date in DD/MM/YYYY format (e.g., “06/03/2026”)
Usage Example
- Schedule matches across 2 weeks (Friday-Monday each week)
- Only assign matches to times when both players are available
- Prevent scheduling conflicts (same player in multiple matches)
- Limit each player to 2 matches per week maximum
- Minimize Friday and Monday matches (penalty system)
- Distribute matches evenly across time slots
- Handle incompatible player schedules by marking them as “limbo”
- A CSV file with the complete schedule
- Visual embed showing the algorithmic cost
- Warning if any matches couldn’t be scheduled
The algorithm considers hours 16:00-23:00 UTC+1 (Spain time) as valid scheduling windows.
/import-schedules
Admin only. Imports a modified CSV schedule file and updates the database.The round ID these schedules belong to
The reference Friday date in DD/MM/YYYY format
The CSV file to import (attach using Discord file upload)
Usage Example
- Parses each row of the CSV
- Updates match times in the database
- Handles “limbo” matches (those marked N/A)
- Reports statistics: updated, in limbo, and errors
You can export schedules with
/generate-schedules, modify them manually, and re-import them with this command./generate-groups
Admin only. Generates all group stage matches for predefined groups.The round ID for the group stage
Usage Example
- Uses hardcoded group assignments (Groups A-H)
- Creates round-robin matches within each group (6 matches per 4-player group)
- Generates match IDs in format
{GroupLetter}{MatchNumber}(e.g., A1, A2, B1) - Inserts all matches into the database
- Player 1 vs Player 2
- Player 3 vs Player 4
- Player 1 vs Player 3
- Player 2 vs Player 4
- Player 1 vs Player 4
- Player 2 vs Player 3