Skip to content

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 โ€‹

CommandWho Can UseDescriptionPhase
helpEveryoneView tournament guide and command overviewAny
/bracket-setup createAdmin/ModCreate a new tournamentSetup
/bracket-setup setup-linkAdmin/ModPrivate link to the web setup form (CSV/JSON upload or fill in)Setup
/bracket-setup manage-titlesAdmin/ModAdd or remove titles from groupsSetup
/bracket-setup resizeAdmin/ModChange the number of groups before voting beginsSetup
/bracket-setup edit-nameAdmin/ModRename the tournamentAny
/bracket-setup announceAdmin/ModAnnounce the tournament to the channelSetup
openAdmin/ModSmart: Opens next round (auto-detects phase)Any
closeAdmin/ModSmart: Closes current round (auto-detects phase)Any
open-groupsAdmin/ModOpen specific groups for button-based votingGroup Stage
close-groupsAdmin/ModClose specific groups and calculate resultsGroup Stage
regenerateAdmin/ModRebuild the knockout bracket from group results (fixes bracket structure issues)Knockout
resolve-tiebreakerAdmin/ModResolve a tiebreaker โ€” tally votes or manually overrideAny
open-matchupAdmin/ModOpen specific matchup(s) for votingKnockout
close-matchupAdmin/ModClose specific matchup(s) and advance winner(s)Knockout
extend-votingAdmin/ModExtend or change voting deadlineAny
my-votesEveryoneView your voting history and available votesAny
statusEveryoneView tournament status with live voter counts and leadersAny
list-groupsEveryoneList all groups and their titlesAny
viewEveryoneView visual bracket (knockout phase only)Knockout
exportEveryoneExport the lineup and settings (JSON) or results (Markdown)Any
cancelAdmin/ModCancel the tournamentAny

Key Changes:

  • ๐Ÿ†• Smart Commands: /bracket open and /bracket close auto-detect tournament phase
  • ๐Ÿ”„ Unified Management: /bracket-setup manage-titles replaces add-title and remove-title
  • โš–๏ธ Tiebreaker Voting & Resolution: Ties are now resolved by member button-voting, with /bracket resolve-tiebreaker available to tally votes early or manually override the winner
  • ๐ŸŽจ AI Images Moved: Matchup image generation now lives in the standalone /image command (/image matchup:"Title A vs Title B"), alongside its freeform, message, and versus-search modes
  • ๐Ÿ†• Setup Form: /bracket-setup setup-link sets up a whole tournament from a CSV or JSON file, or a form. See Setup Form
  • โŒ Removed: advance-knockout โ€” /bracket open starts 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 smart open/close/open-matchup commands

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 help

Benefits:

  • 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 resize changes 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:48

Notes:

  • 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 announce to tell the server
  • Only one active tournament per server at a time

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-link

Notes:

  • 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:json file 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 perform
    • Add Title - Add a new title
    • Remove 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 out
    • movie - 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:7

The 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-groups shows
  • Removing: Shifts remaining titles up in position, so check /bracket list-groups again 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:9

Notes:

  • 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 server
  • image (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 message or image is 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
  • matchups (optional, integer 1-5): In a knockout round, open only the next N matchups, in bracket order. matchups:1 runs 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-4 instead
  • Nothing opens the next round automatically โ€” run /bracket open after 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

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

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-voting to add more time if needed

How Members Vote:

  1. Click a button to select a title (turns green)
  2. Click a second title to complete vote (2 selections required)
  3. Click selected title again to deselect
  4. 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-votes

Output 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 open

Notes:

  • 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

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 open never reopens a closed group
  • Tiebreaker winners are automatically applied to final standings
  • After all groups are closed (and tiebreakers settled), run /bracket open to 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 regenerate

Notes:

  • 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 open starts 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:

RoundMatchupsLabels
Round of 32161Aโ€“1D, 2Aโ€“2D, 3Aโ€“3D, 4Aโ€“4D
Round of 1681A, 1B, 2A, 2B, 3A, 3B, 4A, 4B
Quarterfinals41A, 2A, 3A, 4A
Semifinals21A, 3A
Finals1Finals

/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 round
  • matchup (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 (and region blank) 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 status to 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

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 footer
  • winner (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:2

Notes:

  • 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 extend
    • group - Group Stage Voting
    • knockout - 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
  • 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 status

Output 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 matchups

Notes:

  • 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-post brings 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-groups

Notes:

  • 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 position that manage-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 view

Notes:

  • 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 status for 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 format
    • json - Lineup and settings in the setup form's import format
    • markdown - Formatted results for announcements

Example Usage:

/bracket export format:json
/bracket export format:markdown

JSON 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-link to 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:

markdown
# 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: 847

Use 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 cancel

Notes:

  • 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 open builds 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:8

Configuration:

  • 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:40

Configuration:

  • 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:48

Configuration:

  • 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 /image command
  • 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 open never 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 โ€‹

  1. Plan your size - Straight bracket (2-32 titles) or groups tournament (4-12 groups)
  2. Announce in advance - Build hype before creating tournament
  3. Prepare title list - Have titles ready to add quickly
  4. Test with small tournament - Practice with an 8-title straight bracket first

During Setup โ€‹

  1. Use custom images for better visual appeal
  2. Add titles efficiently - Don't rush, but don't delay too long
  3. Use /bracket-setup announce when ready to begin
  4. Consider group waves - Open groups in batches (A-D, then E-H)

During Group Stage โ€‹

  1. Monitor participation - Use /bracket extend-voting if turnout is low
  2. Engage community - Post reminders about open groups
  3. Track votes - Check group vote counts before closing
  4. Stagger group opening - Not all at once if server is large

During Knockout โ€‹

  1. Create suspense - Use /bracket open-matchup for spotlight matches
  2. Use regions strategically - Open the 4 regions separately with /bracket open-matchup region:
  3. Generate hype images - Use /image matchup:"Title A vs Title B" for key matchups
  4. 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 status frequently 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

Egg Shen โ€” A Discord bot for movie, TV, video and board gaming, and book communities.