Documentation

League Admin Guide

Welcome, tournament organiser! Here's everything you need to create, run, and manage structured tournaments with The Muster.

Jump to section

League Admin Guide

Welcome, tournament organiser! This guide walks you through everything you need to create, run, and manage structured tournaments with The Muster — from setting up a new league to posting final standings.

You’ll need the admin role for your server to use these commands. If you’re not sure what that is, ask your server administrator — they can set it up using /muster-admin configure set-admin-role (see the Server Admin Guide for details).


Creating a League

Step 1 — Set Up the League

Time to create your tournament! Run this to get started:

/league-admin create

You’ll set:

When to use this: At the start of each tournament season, or whenever you want to organise a new event.

Note: If the game system you need isn’t listed, ask your server administrator to add it using /muster-admin add-game. Leagues also require the Captain subscription tier — if your server isn’t on Captain, ask your server admin to upgrade using /muster-admin subscribe.

Step 2 — Build the Roster

For open leagues, players sign themselves up with /league join. You can check how many have signed up with /league info <league name>.

For invite-only leagues (or to add someone manually):

/league-admin add-player <league name> @player

This bypasses all join restrictions — open/closed status, role gates, everything. Useful for seeding invite-only tournaments or adding late entries.

Need to remove someone?

/league-admin drop-player <league name> @player

If the league hasn’t started, they’re simply removed. If it’s already underway, they’re marked as dropped, and any of their unplayed matches become bye wins for the opponent.

Step 3 — Set Up Announcements

Before starting the league, tell the bot where to post pairings:

/league-admin set-announcement-channel <league name> #channel

If you skip this, pairings will be posted in whatever channel you run the start command from.

When to use this: Before starting the league. Pick a channel that all participants can see.


Running a Tournament

Your league is set up and players have signed up — time to get things moving!

Starting the League

/league-admin start-league <league name>

This:

You need at least 2 players to start a league.

Managing Each Round

Once a round is underway, players report their own results using /report-league-result. Their opponents confirm via DM buttons or /confirm-league-result.

Check progress on the current round:

/league-admin round-status <league name>

Shows every match in the round and its status: ✅ Confirmed, ⏳ Reported (waiting for opponent to confirm), or ❌ Unreported (not played yet). Also auto-confirms any results that have been sitting for more than 48 hours.

When to use this: Midweek, to check how many matches have been played. Or just before you want to advance to the next round.

Nudge players who haven’t played yet:

/league-admin remind-players <league name>

Sends a DM to every player who has an unfinished match. If a player has their DMs turned off, they’ll be listed in the bot’s response so you can ping them publicly in the server.

When to use this: A day or two before you plan to advance the round. No limits on how often you can send reminders — use your judgement.

Advance to the next round:

/league-admin advance-round <league name>

Generates the next set of pairings and posts them. Before advancing, the bot:

If there are still unconfirmed or unreported matches, the bot will warn you and block the advance. To push through anyway:

/league-admin advance-round <league name> force:True

When to use this: When most or all matches in the current round are done and you’re ready to move on.

Handling Issues

Things don’t always go to plan — here’s how to handle the common hiccups.

Someone needs a bye:

/league-admin assign-bye <league name> @player

Gives a player a 1-0 bye win for the current round. Use this when someone’s opponent drops out, or for odd-numbered groups.

A result is disputed:

/league-admin resolve-dispute <league name> <match ID> @winner <score>

Overrides the result entirely — sets the winner, score, and marks it confirmed. The match ID is shown in the round-status view.

When to use these: When things go wrong. Someone can’t make it, players disagree on a score, or you need to manually fix a result.

Ending the Tournament

Once all rounds are done and results are confirmed, wrap things up:

/league-admin end-league <league name>

Marks the league as completed, calculates final standings, and posts the final leaderboard to the announcement channel. The results are preserved — players can still view standings and round history after the league ends.


What Your Players See

As a league admin, it’s useful to know what commands your players have access to and what they experience.

Player Commands for Leagues

CommandWhat it does
/league listBrowse all leagues in the server — format, capacity, registration status
/league info <league name>See full details: game system, format, enrolled players, requirements
/league join <league name>Sign up for an open league
/league leave <league name>Withdraw from a league (auto-bye if active)
/league rounds <league name>View pairings and results for any round
/league standings <league name>View the live leaderboard
/report-league-resultReport a match result (guided wizard)
/confirm-league-result <league name>Confirm an opponent’s reported result

The Player Experience

When a player reports a result with /report-league-result, their opponent receives a DM with the reported score and two buttons: Confirm or Dispute. If the opponent doesn’t respond within 48 hours, the result is automatically confirmed.

If a player disputes a result, it’s flagged for you to resolve using /league-admin resolve-dispute.

How Standings Work

Players can view standings anytime with /league standings. Rankings are determined by:

  1. Win rate — Wins and draws, as a percentage of games played
  2. Strength of schedule — Average win rate of opponents faced
  3. VP differential — Total victory points scored minus total conceded

Quick Reference — All League Admin Commands

CommandWhat it’s for
/league-admin createCreate a new league
/league-admin add-playerManually enroll a player
/league-admin drop-playerRemove or drop a player
/league-admin set-announcement-channelSet where pairings get posted
/league-admin start-leagueLock registration and generate Round 1
/league-admin round-statusCheck match progress for a round
/league-admin remind-playersDM players with unfinished matches
/league-admin advance-roundGenerate next round pairings
/league-admin assign-byeGive a player a bye win
/league-admin resolve-disputeOverride a match result
/league-admin end-leagueComplete the tournament and post final standings

FAQ

What role do I need to use league admin commands? You need the admin role configured for your server. This is set up by your server administrator. The bot checks for it automatically.

How many leagues can I run at once? As many as you like. Each league is separate — different game systems, different formats, different player pools.

Can I run a league and pickup matchmaking at the same time? Yes, they’re completely independent systems. Players can be queued for pickup games while also enrolled in a league.

What’s the difference between Swiss and Round Robin? In Swiss, each round pairs players with similar records — winners play winners, losers play losers. It works well for larger groups because you don’t need as many rounds (typically 3–5 rounds for 8–16 players). In Round Robin, every player faces every other player. It’s thorough but requires more rounds and works best with smaller groups.

What happens if someone drops mid-league? They’re marked as dropped. Any unplayed matches in the current round become bye wins for the opponent. Their past results still count — dropping doesn’t invalidate the standings for anyone who already played them.

What if a player doesn’t confirm their opponent’s reported result? After 48 hours, the bot automatically confirms it. You can also force-advance the round if you’re in a hurry.

Can I undo a result? Use /league-admin resolve-dispute to override any match result. You can change the winner, the score, or both.

A player says they didn’t get a DM — what happened? They probably have DMs from server members turned off in their Discord privacy settings. The bot can’t override this. The /league-admin remind-players command will list anyone it couldn’t reach, so you can ping them in a channel instead.

Can I change a league’s settings after creating it? You can change the announcement channel at any time with /league-admin set-announcement-channel. Other settings (format, max players, etc.) are fixed once the league is created — if you need to change them, create a new league.

The game system I need isn’t available — what do I do? Ask your server administrator to add it using /muster-admin add-game. You can also check what’s currently configured by looking at the options in /league-admin create.

My server can’t create leagues — why? Leagues require the Captain subscription tier. Ask your server administrator to upgrade using /muster-admin subscribe.