A modular, open source Discord bot which can be used to maintain a Formula 1 Fantasy League on a Discord server.
Should be able to start and maintian multiple leagues in the same guild, as well as be added to several guilds.
League administrators should be able to modify existing rulesets, as well as create new rules with relative ease. The bot should be flexible enough to sustain fantasy leagues for many years.
All data pertaining to the league including data about players, drivers, constructors, Grand Prix events, etc. should be stored in an all encompassing database, with an easy-to-navigate database schema.
The Formula One season can sometimes be unpredictable and many changes can take place such as Grand Prixs being cancelled or rescheduled, drivers being replaced or removed during the season, etc. The bot should interact with the database in a decoupled manner, so that players, drivers, events, etc. can be added and removed during the season without any modification to bot methods.
Allow players to register and de-register themselves to the league.
Admin Parameters - Optional registration period, with a start date and end date.
Allow players to draft drivers into their teams, within a certain time period defined in the rules.
Admin Parameters - Define when draft window is open/closed.
Allow players to view their team at any given point. If a team has not been drafted for the current round, the previous round's team will be displayed.
Optional Parameters
- user - View the team of another user, if within the accepted time window.
Allow players to check the list of drivers they have exhausted, if any.
Allow players to view the league leaderboard as it currently stands, with the option of viewing the leaderboards of previous years.
Allow players to view a detailed points table, showing the points scored by every player at every Grand Prix weekend.
Allow players to view detailed information about any Grand Prix event, driver, constructor or other player.
-
Grand Prix Weekends
- Results for all sessions
- Session dates and times in local timezone
- Full Grand Prix event names
-
Drivers
- Constructor
- Race wins
- Highest finishing position
- Lowest finishing position
- Podiums
- Teammate Battle (Race)
- Teammate Battle (Qualifying)
- Drivers' Championship position
- Drivers' Championship points
- Last race result
- Last qualifying result
- Positions gained
- Positions Lost
-
Constructors
- 2 Drivers
- Reserve Driver
- Constructors' Championship position
- Constructors' Championship points
- Drivers' Championship points for each driver
- Drivers' teammate battle (Race)
- Drivers' teammate battle (Qualifying)
- Headquarters location
- Team Principal
- CEO
- Engine supplier
-
Players
- Fantasy League Points
- Fantasy League Leaderboard position
- Most picked driver
- Most picked constructor
- League wins
- Average points per race
- Graph of race results over the season
Allow players to compare their season-wide statistics against each other.
Allow admins to create a new league
Allow admins to assign random teams to players who have not drafted their teams for the weekend.
Allow admins to update points and standings for each race weekend.
Allow admins to assign a team to any player
Allow admins to view the teams of any players at any time.
Allow admins to create an archived version of the current league