Bracket Command Reference โ
This page provides detailed documentation for all tournament bracket commands. Commands are organized by tournament phase and use case.
Tournaments use two commands. /bracket-setup is for getting a tournament ready before voting starts: creating it, adding titles, naming and announcing it. Only admins and moderators see it. /bracket is for everything after that: opening and closing votes, status, the bracket image, and exporting. Members use it too. (Before 2.62.0, setup was part of /bracket; it moved to make room in Discord's size limit for commands.)
Note: Group stage voting is now button-based! Members vote by clicking buttons on the voting message - no commands needed.
Quick Reference Table โ
| Command | Who Can Use | Description | Phase |
|---|---|---|---|
help | Everyone | View tournament guide and command overview | Any |
/bracket-setup create | Admin/Mod | Create a new tournament | Setup |
/bracket-setup setup-link | Admin/Mod | Private link to the web setup form (CSV/JSON upload or fill in) | Setup |
/bracket-setup manage-titles | Admin/Mod | Add or remove titles from groups | Setup |
/bracket-setup resize | Admin/Mod | Change the number of groups before voting begins | Setup |
/bracket-setup edit-name | Admin/Mod | Rename the tournament | Any |
/bracket-setup announce | Admin/Mod | Announce the tournament to the channel | Setup |
open | Admin/Mod | Smart: Opens next round (auto-detects phase) | Any |
close | Admin/Mod | Smart: Closes current round (auto-detects phase) | Any |
open-groups | Admin/Mod | Open specific groups for button-based voting | Group Stage |
close-groups | Admin/Mod | Close specific groups and calculate results | Group Stage |
regenerate | Admin/Mod | Rebuild the knockout bracket from group results (fixes bracket structure issues) | Knockout |
resolve-tiebreaker | Admin/Mod | Resolve a tiebreaker โ tally votes or manually override | Any |
open-matchup | Admin/Mod | Open specific matchup(s) for voting | Knockout |
close-matchup | Admin/Mod | Close specific matchup(s) and advance winner(s) | Knockout |
extend-voting | Admin/Mod | Extend or change voting deadline | Any |
my-votes | Everyone | View your voting history and available votes | Any |
status | Everyone | View tournament status with live voter counts and leaders | Any |
list-groups | Everyone | List all groups and their titles | Any |
view | Everyone | View visual bracket (knockout phase only) | Knockout |
export | Everyone | Export the lineup and settings (JSON) or results (Markdown) | Any |
cancel | Admin/Mod | Cancel the tournament | Any |
Key Changes:
- ๐ Smart Commands:
/bracket openand/bracket closeauto-detect tournament phase - ๐ Unified Management:
/bracket-setup manage-titlesreplacesadd-titleandremove-title - โ๏ธ Tiebreaker Voting & Resolution: Ties are now resolved by member button-voting, with
/bracket resolve-tiebreakeravailable to tally votes early or manually override the winner - ๐จ AI Images Moved: Matchup image generation now lives in the standalone
/imagecommand (/image matchup:"Title A vs Title B"), alongside its freeform, message, and versus-search modes - ๐ Setup Form:
/bracket-setup setup-linksets up a whole tournament from a CSV or JSON file, or a form. See Setup Form - โ Removed:
advance-knockoutโ/bracket openstarts the knockout once every group is closed - โ Removed:
open-knockout,close-knockout,open-quarters,close-quarters,open-semis,close-semis,open-finals,close-finals,open-regionโ all superseded by the smartopen/close/open-matchupcommands
Visual Examples:

Live tournament status with vote counts

A matchup's results card, posted as it closes
Getting Started โ
/bracket help โ
View a comprehensive tournament guide with command overview, voting instructions, and pro tips.
Parameters: None - this command takes no options.
What It Shows:
- Quick Start (Admin) - 8-step process for running a tournament
- How to Vote (Everyone) - Instructions for both group and knockout stages
- Common Commands - Organized by user role (Everyone vs Admin/Mod)
- Auto-Features - Overview of auto-close, warnings, live counts, and button feedback
- Pro Tips - Duration syntax, wildcards, custom images, exports, and logging
Example Usage:
/bracket helpBenefits:
- New users can learn the entire system in one command
- Quick reference for voting instructions
- Discover advanced features and tips
- Find the right command for what you want to do
Response Type: This command sends an ephemeral reply (only you can see it), keeping the channel clean.
Setup Commands โ
These /bracket-setup commands are used to create and configure a tournament before voting begins. All of them require Admin or Moderator permissions, and Discord only shows /bracket-setup to members who have them.
/bracket-setup create โ
Create a new tournament bracket. The bot automatically selects the best tournament format based on size.
Parameters:
name(required, string): Tournament name (e.g., "The Ultimate Horror Cup")max-titles(optional, dropdown): Maximum number of titles (default: 32)- Valid bracket sizes: 2, 4, 8, 16, 32 (powers of 2)
- Valid group sizes: 36, 40, 44, 48 (multiples of 4)
- Straight bracket (2-32 titles): No groups; head-to-head matchups from round one. This is the most titles it can hold โ you can start with fewer, and empty slots become byes
- Groups tournament (36-48 titles): 9-12 groups of 4, then a knockout.
/bracket-setup resizechanges the group count (4-12) during setup - Discord shows labeled choices: "8 titles (Quarterfinals)", "36 titles (9 groups)", etc.
seeding(optional, dropdown): How titles are seeded. Straight brackets only. More on seeding- Random (default): shuffled when the bracket is built
- The order I add them: the first title added is seed 1
- By rating: ranked by TMDB, RAWG, BoardGameGeek or Google Books rating
- Seeded brackets show each title's seed, for example "(1) Halloween", and call out upsets
ties(optional, dropdown): What a tied matchup does- Runoff vote (default): a short tiebreaker vote
- Higher seed wins: the better seed advances at once. Needs a seeded bracket.
Example Usage:
/bracket-setup create name:"Summer Movie Madness" max-titles:32
/bracket-setup create name:"Quick 8-Title Showdown" max-titles:8
/bracket-setup create name:"Horror March Madness" max-titles:16 seeding:By rating ties:Higher seed wins
/bracket-setup create name:"Epic 48-Title Championship" max-titles:48Notes:
- Tournament names are visible to all participants (max 100 characters)
- Default is 32 titles if not specified (straight bracket)
- The reply is private; use
/bracket-setup announceto tell the server - Only one active tournament per server at a time
/bracket-setup setup-link โ
Get a private link to the web setup form, where you can set up a whole tournament at once instead of adding titles one by one.
Who Can Use: Admin/Mod only
Parameters: None
Example Usage:
/bracket-setup setup-linkNotes:
- The reply is private, and the link works for 60 minutes. Anyone you give it to can change the server's tournament setup
- On the form, upload a CSV or JSON file, or fill the tournament in by hand
- The setup can be edited on the form until voting opens
- The form can also save seeding (straight brackets), default voting and tiebreaker durations, and an announcement message and banner
- The link uses this server's bot URL if set, else the bot's
PUBLIC_BOT_URL; with neither, it says what to set instead - A
/bracket export format:jsonfile can be uploaded here to run a tournament again
See Setup Form for the file format and details.
/bracket-setup manage-titles โ
Add or remove titles during setup. This unified command replaces the old add-title and remove-title commands.
Parameters:
action(required, choice): Action to performAdd Title- Add a new titleRemove Title- Remove a title
group(optional, choice): Group letter (A-L). Groups mode only โ leave it out in a straight bracket (2โ32 titles). When adding in groups mode without one, the title goes into the first group with room.type(optional, choice): Tournament type. Needed for the first title; after that the tournament's type is used if you leave it outmovie- Movies (searches TMDB)tv- TV Shows (searches TMDB)game- Video Games (searches RAWG)boardgame- Board Games (searches BoardGameGeek)book- Books (searches Google Books)
title(optional, string): Title to search for (required when adding)position(optional, integer): The title's number from/bracket list-groups(required when removing). 1โ4 within a group, or 1โ32 in a straight bracket.image(optional, attachment): Custom image (for adding only, overrides API poster)
Example Usage (Adding):
/bracket-setup manage-titles action:"Add Title" group:A type:movie title:"The Thing"
/bracket-setup manage-titles action:"Add Title" group:B type:tv title:"Breaking Bad"
/bracket-setup manage-titles action:"Add Title" group:C type:game title:"Elden Ring"
/bracket-setup manage-titles action:"Add Title" group:A type:movie title:"Evil Dead" image:[uploaded-file.jpg]Example Usage (Removing):
/bracket-setup manage-titles action:"Remove Title" group:A position:2
/bracket-setup manage-titles action:"Remove Title" group:D position:4
/bracket-setup manage-titles action:"Remove Title" position:7The last example is a straight bracket, which has no groups.
Notes:
- Adding: Searches the selected API. One match is added right away; several show a menu to pick the right one
- Adding: Custom images override the default poster/cover art
- Adding: Each group must have exactly 4 titles before voting can begin
- Adding: Tournament type is set on first title added and cannot be changed
- Removing: Use the numbers
/bracket list-groupsshows - Removing: Shifts remaining titles up in position, so check
/bracket list-groupsagain before removing a second one - Cannot manage titles after group voting begins
/bracket-setup resize โ
Change the number of groups before voting begins.
Who Can Use: Admin/Mod only
Parameters:
groups(required, integer): New number of groups (4-12)
Example Usage:
/bracket-setup resize groups:10
/bracket-setup resize groups:9Notes:
- Only available during the setup phase, before group voting begins
- Contracting (reducing group count) fails if any group that would be removed still has titles in it โ move or remove those titles first
- Expanding (increasing group count) adds new empty groups ready for titles
/bracket-setup announce โ
Announce the tournament to the channel with optional custom message and banner.
Parameters:
message(optional, string): Announcement message to the serverimage(optional, attachment): Tournament banner/image
Example Usage:
/bracket-setup announce
/bracket-setup announce message:"Let the games begin! Vote for your favorites!"
/bracket-setup announce message:"Welcome to the tournament!" image:[banner.jpg]Notes:
- Creates a public, visible announcement (not ephemeral)
- Default message shows tournament name and details. In a straight bracket it shows "Format: Straight bracket" and the title count
- Custom message replaces default text
- Banner image appears at top of announcement
- If the setup form saved an announcement message or banner, they're used when
messageorimageis left out - Use this after setup is complete and before voting begins
Smart Phase Commands โ
These intelligent commands automatically detect the tournament phase and perform the appropriate action. Use these for streamlined tournament management!
/bracket open โ
๐ Smart Command - Automatically opens the next round of voting based on tournament phase.
Who Can Use: Admin/Mod only
Parameters:
duration(optional, string): Voting duration- Format:
<number><unit>where unit is m (minutes), h (hours), or d (days) - Examples: "24h", "3d", "45m", "12h"
- Default: the tournament's default voting duration from the setup form, else 24h
- Range: 5m minimum, 30d maximum
- Format:
matchups(optional, integer 1-5): In a knockout round, open only the next N matchups, in bracket order.matchups:1runs the tournament one matchup at a time; run it again to open the next. Earlier matchups still voting close first. When a round has nothing left to open, its last matchups close and the next round's first ones open. From setup, it builds the bracket first. See One matchup at a time
What It Does:
- Setup, straight bracket: Builds the bracket and opens the first round. This is how a straight bracket starts. Seeding is random by default, or ordered (list order = seed order, 1 v N, byes to top seeds) if chosen on the setup form. If round one has more than 5 matchups, it builds the bracket and asks you to open it by region with
/bracket open-matchup - Setup, groups mode: Opens every group, once each one has 4 titles. If any are short, it lists them instead.
- Group Stage: Opens the groups that haven't voted yet. Once every group is closed and every tiebreaker is settled, it builds the knockout bracket and opens its first round. It never reopens a finished group; if groups are still voting or in a tiebreaker, it lists them instead
- Knockout seeding: the top 2 from each group go through, plus the best third-place finishers (wildcards) up to the next power of 2, at most one per group. Group winners are placed first, so any byes go to them; runners-up and wildcards are shuffled in, and titles from the same group are kept apart in the first round where possible
- The start-of-knockout message lists the wildcards
- Knockout Stage: Opens all matchups in the current round (Round of 32, Round of 16, Quarterfinals, Semifinals, Finals)
- Automatically detects which phase the tournament is in
- No need to remember phase-specific commands!
Example Usage:
/bracket open
/bracket open duration:"48h"
/bracket open duration:"3d"Notes:
- Simplifies tournament management - one command for all phases
- For knockout rounds with more than 5 matchups (Round of 32, Round of 16), it asks you to open them by region with
/bracket open-matchup region:1-4instead - Nothing opens the next round automatically โ run
/bracket openafter each close
/bracket close โ
๐ Smart Command - Automatically closes the current voting round based on tournament phase.
Who Can Use: Admin/Mod only
Parameters:
tiebreaker-duration(optional, string): Duration for tiebreaker votes if needed- Format:
<number><unit>where unit is m (minutes), h (hours), or d (days) - Examples: "1h", "30m", "2h"
- Default: the tournament's default tiebreaker duration from the setup form, else 1h
- Range: 5m minimum, 7d maximum
- Format:
What It Does:
- Group Stage: Closes all open groups and calculates results
- Knockout Stage: Closes all voting matchups in current round and advances winners
- Automatically creates tiebreaker votes if ties are detected
- No need to remember phase-specific commands!
Example Usage:
/bracket close
/bracket close tiebreaker-duration:"30m"
/bracket close tiebreaker-duration:"2h"Notes:
- Simplifies tournament management - one command for all phases
- Automatically detects and creates tiebreakers for tied votes
- Advances tournament to next phase when appropriate
- Shows detailed results with winners and vote counts. Each matchup's result card carries a drawn picture of the matchup: both posters, the winner framed in gold, and the vote split (details). If the picture can't be drawn, the card shows the winner's poster as a small thumbnail instead
Group Stage Commands โ
These commands manage the group stage voting phase where participants vote for their top 2 titles in each group. Use these for granular control when you need to open/close specific groups.
/bracket open-groups โ
Open specific groups for voting.
Who Can Use: Admin/Mod only
Parameters:
groups(required, string): Comma-separated list of groups to open (e.g., "A,B,C,D")duration(optional, string): Voting duration- Format:
<number><unit>where unit is m (minutes), h (hours), or d (days) - Examples: "24h", "3d", "45m", "12h"
- Default: the tournament's default voting duration from the setup form, else 24h
- Range: 5m minimum, 30d maximum
- Format:
Example Usage:
/bracket open-groups groups:"A,B,C,D"
/bracket open-groups groups:"A,B,C,D" duration:"48h"
/bracket open-groups groups:"E,F,G,H" duration:"3d"
/bracket open-groups groups:"A" duration:"12h"Notes:
- Each group must have exactly 4 titles before opening
- Posts interactive voting message with buttons for each title
- Groups can be opened separately (in waves)
- Participants vote by clicking buttons - no commands needed!
- Buttons highlight when selected (green = selected)
- Real-time vote count updates
- Members can change votes anytime before deadline
- Voting deadline is enforced - votes after deadline are ignored
- Use
/bracket extend-votingto add more time if needed
How Members Vote:
- Click a button to select a title (turns green)
- Click a second title to complete vote (2 selections required)
- Click selected title again to deselect
- Maximum 2 selections per group
/bracket voting-post โ
Post the voting card again, with its Start Voting button, for whatever is open right now.
Who Can Use: Everyone
Parameters: None
In a long tournament the card from /bracket open scrolls far up the channel. This posts a fresh one at the bottom: the open matchups (or groups), when voting closes, and a working Start Voting button. Earlier cards stay where they are, and their buttons keep working.
In the knockout rounds, the live standings come down with it: a fresh standings card is posted right under the voting card, and that's the one votes update from then on. The old standings card stays, marked "No longer updating", so nobody reads its counts as current.
To keep the channel tidy, it can be posted once every 10 minutes in each channel; until then, it tells you when it was last posted so you can scroll up to it. Admins and moderators can post it any time.
/bracket voting-post/bracket my-votes โ
View your voting history and available votes.
Who Can Use: Everyone
Parameters: None
Example Usage:
/bracket my-votesOutput Example:
๐ Your Voting History
Group Stage:
โ
Group A: The Thing (1st), Evil Dead (2nd)
โ
Group B: Alien (1st), The Exorcist (2nd)
โณ Group C: Voting open - deadline in 18h 32m
โณ Group D: Voting open - deadline in 18h 32m
โฌ Group E: Not yet open
Knockout Round:
โ
1A: The Thing
โ
2B: Alien
โณ 1C: Voting open
โฌ 2D: Not yet openNotes:
- Shows all votes cast during tournament
- Indicates which groups are still available to vote
- Displays voting deadlines for open groups
- Helps track participation across tournament phases
/bracket close-groups โ
Close group voting and calculate results. Automatically creates tiebreaker votes if ties are detected.
Who Can Use: Admin/Mod only
Parameters:
groups(required, string): Comma-separated list of groups to close (e.g., "A,B,C,D")tiebreaker-duration(optional, string): Duration for tiebreaker votes if needed- Format:
<number><unit>where unit is m (minutes), h (hours), or d (days) - Examples: "1h", "30m", "2h"
- Default: the tournament's default tiebreaker duration from the setup form, else 1h
- Range: 5m minimum, 7d maximum
- Format:
Example Usage:
/bracket close-groups groups:"A,B,C,D"
/bracket close-groups groups:"A,B,C,D" tiebreaker-duration:"30m"
/bracket close-groups groups:"E,F,G,H" tiebreaker-duration:"2h"
/bracket close-groups groups:"A"Notes:
- Counts each title's votes; each voter's two picks count one vote each
- Determines 1st, 2nd, and 3rd place in each group
- Automatically creates tiebreaker votes if 1st or 2nd place ties detected
- Posts results to channel showing final standings
- Groups must be open before they can be closed
/bracket opennever reopens a closed group- Tiebreaker winners are automatically applied to final standings
- After all groups are closed (and tiebreakers settled), run
/bracket opento start the knockout
/bracket regenerate โ
Rebuild the knockout bracket from group results. Use this to fix bracket structure issues without redoing group voting.
Who Can Use: Admin/Mod only
Parameters: None
Example Usage:
/bracket regenerateNotes:
- Rebuilds the entire knockout bracket from the group stage's closed results โ seeding, wildcards, and matchups are all recalculated from scratch
- Useful if the bracket structure looks wrong after
/bracket openstarts the knockout, or after manually correcting group results - Any in-progress knockout voting is discarded and replaced by the freshly regenerated bracket
- Groups tournaments only. All groups must still be closed for this to succeed
Knockout Commands โ
These commands manage the knockout/elimination phase where titles face off head-to-head. Use these for granular control when you need to open/close specific matchups or regions.
Regional Label System โ
Each knockout round is split into 4 regions, March Madness style. A matchup's label is its region number (1-4) plus a letter for its position within the region:
| Round | Matchups | Labels |
|---|---|---|
| Round of 32 | 16 | 1Aโ1D, 2Aโ2D, 3Aโ3D, 4Aโ4D |
| Round of 16 | 8 | 1A, 1B, 2A, 2B, 3A, 3B, 4A, 4B |
| Quarterfinals | 4 | 1A, 2A, 3A, 4A |
| Semifinals | 2 | 1A, 3A |
| Finals | 1 | Finals |
/bracket status and the button pickers show each matchup's label.
Use Smart Commands
For streamlined management, use /bracket open and /bracket close instead - they automatically detect the tournament phase and perform the right action!
/bracket open-matchup โ
Open matchup(s) for voting with text input or interactive buttons.
Who Can Use: Admin/Mod only
Parameters:
region(optional, integer 1-4): Open every matchup in that region of the current roundmatchup(optional, string): The matchup(s) to open. Start typing and pick from the list: it shows the current round's matchups that haven't been voted on yet, with both titles (2A ยท Halloween vs Scream). Type a label or part of a title to narrow it. Leave blank (andregionblank) to select from buttons.- Single: "1A", "2B", "Finals"
- Multiple: "1A,1B,3A" (comma-separated). After a comma, the list suggests the next one
duration(optional, string): Voting duration, 5m-30d. Default: the tournament's default voting duration from the setup form, else 24h
Example Usage:
Interactive mode (no matchup or region):
/bracket open-matchup duration:"24h"โ If the round has more than 5 matchups, shows one button per region. Otherwise shows a button for each pending matchup. Click button(s) to open them.
Region mode:
/bracket open-matchup region:1
/bracket open-matchup region:2 duration:"48h"โ Opens every matchup in that region. This is how Round of 32 and Round of 16 are opened, since /bracket open won't open more than 5 matchups at once.
Text mode (single matchup):
/bracket open-matchup matchup:"1A"
/bracket open-matchup matchup:"2B" duration:"24h"
/bracket open-matchup matchup:"Finals" duration:"48h"Text mode (multiple matchups):
/bracket open-matchup matchup:"1A,1B" duration:"24h"
/bracket open-matchup matchup:"2A,2B,3A,3B"Opening the next matchup closes earlier ones. Any matchup in the round that's still voting, and isn't one you're opening now, closes first, exactly as its deadline would: the winner is announced, and a tie gets a tiebreaker vote. The reply lists what closed. So when you run a round one matchup at a time, votes on earlier matchups can't keep changing. To have several matchups voting at once, open them together (matchup:"1A,1B" or region:1).
Features:
- Interactive buttons - Leave matchup blank to see all pending matchups as buttons
- Multi-matchup support - Open several matchups at once with comma-separated list
- Visual selection - Buttons show matchup label and movie titles
- Batch processing - Each matchup processed individually with success/error tracking
- Regional labels - Use "1A", "2B" format for easy identification
- Region opening - Open a whole region (1-4) at once
Notes:
- Use regional labels: "1A", "2B", etc.
- Finals matchup uses "Finals" as the label
- Interactive mode shows up to 25 matchups (5 per row)
- Buttons expire after 15 minutes
- Useful for:
- Spotlight matchups
- Resolving technical issues
- Managing voting flow
- Opening multiple matchups quickly
- See
/bracket statusto find matchup IDs - Only matchups that haven't been voted on are opened. Ones already voting keep their votes, decided ones keep their results, and the reply lists both
/bracket close-matchup โ
Close matchup(s) and advance winner(s) with text input or interactive buttons. Automatically creates tiebreaker votes if ties are detected.
Who Can Use: Admin/Mod only
Parameters:
matchup(optional, string): The matchup(s) to close. Pick from the list, which shows the matchups voting now, with both titles; or type several, comma-separated. Leave blank to select from buttons- Single: "1A", "2B", "Finals"
- Multiple: "1A,1B,3A" (comma-separated)
tiebreaker-duration(optional, string): Duration for tiebreaker votes if needed- Format:
<number><unit>where unit is m (minutes), h (hours), or d (days) - Examples: "1h", "30m", "2h"
- Default: the tournament's default tiebreaker duration from the setup form, else 1h
- Range: 5m minimum, 7d maximum
- Format:
Example Usage:
Interactive mode (no matchup parameter):
/bracket close-matchup
/bracket close-matchup tiebreaker-duration:"30m"โ Shows red buttons for all open matchups with current vote counts. Click button(s) to close them.
Text mode (single matchup):
/bracket close-matchup matchup:"1A"
/bracket close-matchup matchup:"2B" tiebreaker-duration:"2h"
/bracket close-matchup matchup:"Finals" tiebreaker-duration:"30m"Text mode (multiple matchups):
/bracket close-matchup matchup:"1A,1B"
/bracket close-matchup matchup:"2A,2B,3A,3B" tiebreaker-duration:"1h"Features:
- Interactive buttons - Leave matchup blank to see all open matchups as buttons
- Multi-matchup support - Close several matchups at once with comma-separated list
- Automatic tiebreakers - Creates tiebreaker vote if matchup ends in a tie
- Visual selection - Buttons show matchup label, titles, and current votes (e.g., "1A: Jaws(5) vs Night...(3)")
- Batch processing - Each matchup processed individually with success/error tracking
- Auto-advance tracking - Shows which winners were placed in next round
- Round completion detection - Notifies when all matchups in round are closed
Notes:
- Calculates winner by vote count (most votes wins)
- Automatically creates tiebreaker votes if matchup ends in a tie
- Advances winner to next round automatically (or after tiebreaker resolves)
- Posts results showing vote counts
- Cannot undo - winner is locked in (unless tiebreaker created)
- Interactive mode shows up to 25 matchups (5 per row)
- Buttons expire after 15 minutes
- Tiebreaker winners are automatically advanced
- Useful for:
- Closing matchups individually or in batches
- Managing voting flow
- Resolving technical issues
- Quick tournament progression
/bracket resolve-tiebreaker โ
Resolve an active tiebreaker โ either by tallying the current votes (default) or by manually picking a winner (Admin/Mod override).
Who Can Use: Admin/Mod/Tournament Creator only
Parameters:
tiebreaker-id(required, string): ID of the tiebreaker to resolve โ shown in the tiebreaker voting embed footerwinner(optional, integer): Manually pick the winner (1 = first option, 2 = second, etc.)- Leave blank to close voting now and resolve by current vote tallies
- Set a number to override votes and force a specific winner
- Maximum depends on how many options are tied (usually 2)
Example Usage:
# Close voting early โ winner decided by current votes
/bracket resolve-tiebreaker tiebreaker-id:"abc123"
# Admin manually picks option 1 as the winner
/bracket resolve-tiebreaker tiebreaker-id:"abc123" winner:1
# Admin manually picks option 2 as the winner
/bracket resolve-tiebreaker tiebreaker-id:"abc123" winner:2Notes:
- Without
winner: counts current tiebreaker votes; if still tied, random selection is used as final fallback - With
winner: overrides all votes โ admin's choice wins regardless of the vote count - The tiebreaker voting embed is automatically disabled and updated with the result
- Vote breakdown is shown when resolving by tally
- Tiebreakers also auto-resolve when their deadline expires (no action needed if you're happy to wait)
- Cannot be undone โ winner is locked in
/bracket extend-voting โ
Set a new voting deadline for a group or the current knockout round.
Who Can Use: Admin/Mod only
Parameters:
type(required, choice): Voting type to extendgroup- Group Stage Votingknockout- Knockout Round Voting
duration(required, string): New time left, counted from now (e.g., "24h", "3d", "45m")- The new deadline is now +
duration. It replaces the current deadline rather than adding to it - Format:
<number><unit>where unit is m, h, or d - Range: 5m minimum, 30d maximum
- The new deadline is now +
group(required for group voting, string): Group letter
Example Usage:
/bracket extend-voting type:group duration:"12h" group:"A"
/bracket extend-voting type:knockout duration:"24h"
/bracket extend-voting type:group duration:"2d" group:"C"Notes:
- For group voting: sets one group's deadline
- For knockout voting: sets the deadline of every open matchup in the current round
- The new deadline is now +
duration, replacing the old one.duration:"12h"on a group with 20h left shortens it to 12h - Useful when participation is low or more time is needed
- Cannot extend closed/completed voting
- The original voting messages aren't edited; the reply shows the new deadline
Utility Commands โ
These commands provide information, visualization, and management tools for the tournament.
/bracket status โ
View real-time tournament status with live voting statistics.
Who Can Use: Everyone
Parameters: None
Example Usage:
/bracket statusOutput Example (Group Stage):
๐ Summer Movie Madness
Status: group_stage | Phase: groups | Creator: @Admin
Group stage in progress!
Completed: 4/8 groups
๐ Active Voting:
Group E - 12 voters
โฐ 2h 15m
๐ฅ The Thing (8)
๐ฅ Evil Dead (7)
Group F - 8 voters
โ ๏ธ 45m (WARNING: <1 hour remaining!)
๐ฅ Alien (5)
๐ฅ Hereditary (4)Output Example (Knockout): each open matchup appears as on the live standings card, bars and all (shown here before the bot's emoji are uploaded, as coloured squares):
๐ Summer Movie Madness
Status: knockout | Phase: semifinals | Creator: @Admin
Semifinals
Single elimination bracket
๐ Live Vote Counts
1A ยท closes in 18 hours
The Thing ๐ฅ
๐ฉ๐ฉ๐ฉ๐ฉ๐ฉ๐ฉโฌโฌโฌโฌ 9 votes (60%)
vs
Evil Dead
๐ง๐ง๐ง๐งโฌโฌโฌโฌโฌโฌ 6 votes (40%)
3A ๐ค ยท closes in 55 minutes
Alien
๐จ๐จ๐จ๐จ๐จโฌโฌโฌโฌโฌ 6 votes (50%)
vs
Hereditary
๐จ๐จ๐จ๐จ๐จโฌโฌโฌโฌโฌ 6 votes (50%)
Completed: 6 matchupsNotes:
- A snapshot, posted when you run it: the live standings card is the one that keeps updating. If that card has scrolled far up,
/bracket voting-postbrings it back down - Shows when each matchup closes, in your own time
- Shows every open matchup, up to a whole round of 16. With many open, or very long titles, it uses the plainer bars (and, for 16 of the longest titles, shortens them) so the reply always fits
- Once the bot's emoji are uploaded, the bars are drawn with them, as on the live standings
- Tracks tournament progress with completion stats
/bracket list-groups โ
List all groups and the titles in each one. In a straight bracket (no groups), it lists every title as one numbered list instead.
Who Can Use: Everyone
Parameters: None
Example Usage:
/bracket list-groupsNotes:
- Shows every group's titles, in the order they were added
- In a straight bracket, shows every title as one numbered list
- The numbers are the
positionthatmanage-titles action:"Remove Title"takes - Marks each group as voting-open or closed
- Useful during setup to see which groups still need titles before voting can begin
/bracket view โ
Draw the tournament as an image.
Who Can Use: Everyone
Parameters: None
Example Usage:
/bracket viewNotes:
- During the knockout (and after it ends): a PNG bracket tree with every round, winners highlighted, and the champion once there is one
- Before the knockout: a PNG overview of the tournament's groups and titles
- Generated fresh each time, so it reflects the current state
- The bot also posts it on its own whenever knockout matchups are decided (one image per batch)
- Use
/bracket statusfor live vote counts
/bracket export โ
Export the tournament's lineup and settings (JSON) or its results (Markdown).
Who Can Use: Everyone
Parameters:
format(required, choice): Export formatjson- Lineup and settings in the setup form's import formatmarkdown- Formatted results for announcements
Example Usage:
/bracket export format:json
/bracket export format:markdownJSON Export:
- The setup form's import format: the title lineup (with ids filled in) and the tournament's settings
- No votes and no voter ids
- Upload it through
/bracket-setup setup-linkto run the same tournament again
Markdown Export:
- Formatted results ready to paste
- Group stage results with vote counts
- Knockout bracket progression with winners
- Tournament statistics (total voters, total votes)
- Clean, readable format for Discord or documentation
Example Markdown Output:
# Summer Movie Madness - Results
**Status:** Completed
**Winner:** ๐ The Thing
## Group Stage Results
### Group A
1. ๐ฅ The Thing (47 votes) โ
Advances
2. ๐ฅ Evil Dead (31 votes) โ
Advances
3. ๐ฅ Hereditary (18 votes)
4. ๐ The Witch (12 votes)
## Knockout Stage
### Semifinals
- The Thing def. Alien (23-19)
- Evil Dead def. Hereditary (21-17)
### Finals
- **The Thing** def. Evil Dead (31-28) ๐
## Statistics
- Total Voters: 58
- Total Votes Cast: 847Use Cases:
- Archive completed tournaments
- Share results in announcements
- Create tournament history documentation
- Re-run a tournament with the same lineup (JSON)
/bracket-setup edit-name โ
Change the tournament name after creation.
Who Can Use: Admin/Mod only
Parameters:
name(required, string): New tournament name
Example Usage:
/bracket-setup edit-name name:"Epic Summer Movie Championship 2026"
/bracket-setup edit-name name:"Quick Test Tournament"Notes:
- Can be used at any tournament phase
- Updates name in all displays and embeds
- Useful for fixing typos or rebranding
- Does not affect tournament data or votes
- Name is visible to all participants
- Maximum 100 characters
Common Use Cases:
- Fix typos in tournament name
- Update branding mid-tournament
- Add year or season to name
- Rename based on community feedback
/bracket cancel โ
Cancel the tournament and delete all data.
Who Can Use: Admin/Mod only
Parameters: None
Example Usage:
/bracket cancelNotes:
- Permanently deletes tournament data
- Cannot be undone
- Confirms before canceling
- Notifies channel of cancellation
- Use this to start over or end tournament early
- Frees up server for new tournament
Tournament Size Examples โ
Example 1: Straight Bracket (8โ32 titles) โ
Setup:
/bracket-setup create name:"Quick Horror Showdown" max-titles:8
/bracket-setup create name:"Summer Movie Madness" max-titles:32(or set it up in one go with /bracket-setup setup-link and the setup form)
Configuration:
- Groups: None
- Titles: up to
max-titles; empty slots become byes (e.g., 12 titles in a 16 bracket gives 4 byes) - Knockout structure: 8 titles start at Quarterfinals, 16 at Round of 16, 32 at Round of 32
- Seeding: Random by default; Ordered (list order, 1 v N, byes to top seeds) via the setup form
- Start:
/bracket openbuilds the bracket and opens round one
Best for:
- Quick tournaments and weekend events
- Testing the system
- Smaller communities
Timeline estimate:
- 8 titles: 3 rounds, about 3โ6 days
- 32 titles: 5 rounds, about 1โ2 weeks
Example 2: Small Groups Tournament (16 titles, 4 groups) โ
Setup:
/bracket-setup create name:"Quick Horror Tournament" max-titles:36
/bracket-setup resize groups:4/bracket-setup create makes 9โ12 groups; resize during setup, or use the setup form.
Configuration:
- Groups: 4 groups (A-D) of 4
- Advance: Top 2 from each group = 8
- Wildcards: None needed
- Knockout structure: Quarterfinals โ Semifinals โ Finals
Timeline estimate:
- Group voting: 24-48 hours
- Knockout rounds: 3-5 days
- Total: ~1 week
Example 3: Medium Groups Tournament (32 titles, 8 groups) โ
Setup:
/bracket-setup create name:"Community Choice Awards" max-titles:36
/bracket-setup resize groups:8Configuration:
- Groups: 8 groups (A-H) of 4
- Advance: Top 2 from each group = 16
- Wildcards: None needed
- Knockout structure: Round of 16 โ Quarterfinals โ Semifinals โ Finals
Timeline estimate:
- Group voting: 2-4 days
- Knockout rounds: 4-8 days
- Total: 1-2 weeks
Example 4: Large Groups Tournament (40 titles, 10 groups) โ
Setup:
/bracket-setup create name:"Ultimate Showdown" max-titles:40Configuration:
- Groups: 10 groups (A-J) of 4
- Advance: Top 2 from each group = 20
- Wildcards: Best 10 third-place finishers = 30 total
- Knockout structure: Round of 32 (2 byes, to group winners) โ Round of 16 โ Quarterfinals โ Semifinals โ Finals
Timeline estimate:
- Group voting: 4-5 days
- Knockout rounds: 6-8 days
- Total: 2-3 weeks
Example 5: Maximum Groups Tournament (48 titles, 12 groups) โ
Setup:
/bracket-setup create name:"Epic Community Championship" max-titles:48Configuration:
- Groups: 12 groups (A-L) of 4
- Advance: Top 2 from each group = 24
- Wildcards: Best 8 third-place finishers = 32 total
- Knockout structure: Round of 32 โ Round of 16 โ Quarterfinals โ Semifinals โ Finals
Timeline estimate:
- Group voting: 5-7 days
- Knockout rounds: 7-10 days
- Total: 3-4 weeks
What's Possible โ
The tournament bracket system supports a wide range of features and configurations:
Tournament Types โ
- Movies - Powered by TMDB
- TV Shows - Powered by TMDB
- Video Games - Powered by RAWG
- Board Games - Powered by BoardGameGeek
- Books - Powered by Google Books
Flexible Structure โ
- Straight bracket: 2-32 titles, no groups
- Groups tournament: 4-12 groups of 4 (16-48 titles), then a knockout
- Dynamic resizing of the group count during setup
- Seeding: random or ordered for straight brackets; from group results for groups tournaments
- Wildcard system fills the knockout bracket
- Setup form - set up a tournament from a CSV or JSON file, or by filling in a form (
/bracket-setup setup-link)
Voting Options โ
- Group stage: Pick your top 2 titles in each group
- Knockout stage: Single-elimination voting
- Flexible deadlines: 5 minutes to 30 days
- Deadline extension for any phase
- Button voting throughout, through a personal voting dashboard (only you see your picks)
Opening Strategies โ
- Entire round: Open all matchups at once (up to 5)
- By region: Open one of the 4 regions
- Individual matchups: Open one at a time for spotlight effect
Customization โ
- Custom images for any title (overrides API posters)
- Custom announcements with banner images
- Regional identification (1A, 2B labels) for clear bracket navigation
- Tournament naming for branding
- Default voting and tiebreaker durations set on the setup form
Management Features โ
- Persistent storage across bot restarts
- Vote tracking per user
- Status monitoring at any time
- Automatic winner advancement
- Bracket regeneration for fixing issues
- JSON export that can be re-imported through the setup form
Visual Features โ
- AI-generated versus images with the separate
/imagecommand - Bracket images with
/bracket view - Group standings
- Live vote counts during voting
Limitations & Not Possible โ
Understanding what the system cannot do helps set proper expectations:
Tournament Configuration โ
- โ Cannot change tournament type after first title is added
- Tournament type (movie/tv/game/boardgame/book) is locked by the first title added
- โ Cannot edit tournament once voting begins
- No adding/removing titles after setup
- โ Cannot remove groups that still have titles in them
- โ Maximum 12 groups (48 titles) or 32 titles in a straight bracket
- โ Each group must have exactly 4 titles
- Cannot proceed with incomplete groups
Voting Restrictions โ
- โ Cannot undo a result once a matchup is closed
- Close-matchup is final - winner is locked in
- โ Finished groups stay finished
/bracket opennever reopens a closed group, and the knockout is seeded from its results
- โ Cannot vote after deadline
- Voting deadlines are enforced strictly
Technical Limitations โ
- โ One active tournament per server at a time
- Cannot run multiple tournaments simultaneously
- โ Cannot restore cancelled tournaments
- Cancel is permanent - no recovery
- โ AI image generation has rate limits
- Per-user and per-server limits apply
- Requires OpenAI API key configuration
Bracket Structure โ
- โ Cannot hand-seed a groups tournament's knockout
- Knockout seeding comes from group results (ordered seeding is for straight brackets only)
- โ Cannot modify knockout bracket structure
- Bracket format is determined by participant count
- โ Cannot skip knockout rounds
- Must complete all rounds sequentially
- โ Cannot have byes in group stage
- All groups must have 4 titles
Data Management โ
- โ Cannot import votes or results
- The setup form imports a lineup and settings only; JSON export leaves out votes
- โ Cannot merge tournaments
- Each tournament is independent
Permissions โ
- โ Cannot delegate specific permissions
- Only Admins and Moderators can manage
- No custom role configuration
- โ Cannot restrict voting to specific roles
- All server members can vote (if group is open)
Tips for Tournament Organizers โ
Before Starting โ
- Plan your size - Straight bracket (2-32 titles) or groups tournament (4-12 groups)
- Announce in advance - Build hype before creating tournament
- Prepare title list - Have titles ready to add quickly
- Test with small tournament - Practice with an 8-title straight bracket first
During Setup โ
- Use custom images for better visual appeal
- Add titles efficiently - Don't rush, but don't delay too long
- Use
/bracket-setup announcewhen ready to begin - Consider group waves - Open groups in batches (A-D, then E-H)
During Group Stage โ
- Monitor participation - Use
/bracket extend-votingif turnout is low - Engage community - Post reminders about open groups
- Track votes - Check group vote counts before closing
- Stagger group opening - Not all at once if server is large
During Knockout โ
- Create suspense - Use
/bracket open-matchupfor spotlight matches - Use regions strategically - Open the 4 regions separately with
/bracket open-matchup region: - Generate hype images - Use
/image matchup:"Title A vs Title B"for key matchups - Post updates - Share bracket progress with community
Best Practices โ
- โ Use clear, descriptive tournament names
- โ Give reasonable voting windows (24-48h typically)
- โ Engage with participants in chat
- โ
Use
/bracket statusfrequently to track progress - โ Announce winners publicly after each round
- โ Consider streaming Finals on voice chat
Common Mistakes to Avoid โ
- โ Opening all groups at once (overwhelming)
- โ Setting too short voting periods
- โ Not announcing tournament start
- โ Closing voting too early (low participation)
- โ Not generating versus images for Finals