Skip to content

Latest commit

 

History

History
430 lines (335 loc) · 16.8 KB

usage-organiser.md

File metadata and controls

430 lines (335 loc) · 16.8 KB

Commands for tournament hosts

Back to main

Commands have a specific name exactly following the command prefix. If the command accepts parameters, these are separated from each other by a pipe |, and from the command name by whitespace. For the following, any words that are separated by | refer to the name of the parameter, and you should replace them with an appropriate value when you use these commands!

All host commands are scoped to the current server and do not work in direct messages. Tournaments can only be managed from the server that they were created in; they cannot be accessed from other servers.

Index

Main tournament workflow

  1. mc!create
  2. mc!addhost
  3. mc!addchannel public
  4. mc!addchannel private
  5. mc!open
  6. mc!start
  7. mc!round
  8. mc!finish
  9. mc!topcut

Tournament administration

  1. mc!forcescore
  2. mc!forcedrop
  3. mc!tie

Informational

  1. mc!info
  2. mc!deck
  3. mc!csv

Before starting a tournament

  1. mc!update
  2. mc!tb
  3. mc!capacity
  4. mc!removehost
  5. mc!removechannel
  6. mc!addbye
  7. mc!removebye
  8. mc!banlist (experimental)

Reference

List ongoing tournaments

mc!list

Caller permission level: MC-TO role

Responds with a list of all preparing and in progress tournaments, including their IDs, names, status, and participant counts.

Create tournament

mc!create name|description

Caller permission level: MC-TO role

Creates a new tournament. Emcee will create the tournament on Challonge with the specified name and description. The description is will also be displayed by Emcee when the tournament is opened for registration, so it should be fairly detailed.

Emcee will respond with a link to the Challonge page and an ID for the tournament to use with future commands, which is generated from the provided name for the tournament. It will also respond with a guide for recommended commands for the next step of the main tournament workflow.

Add host

mc!addhost id|@discordtag

Caller permission level: host for the tournament identified by id

@discordtag must be a valid Discord mention of a user that pings them.

The user is added as a host for the specified tournament, granting them the same permissions as you.

Remove host

mc!removehost id|@discordtag

Caller permission level: host for the tournament identified by id

@discordtag can be a Discord mention, though it does not have to ping, or the user's ID.

The user is deauthorised as a host for the specified tournament, losing all corresponding permissions. You cannot remove yourself if you are the only host; there must always be one host to manage the tournament.

If a host leaves the tournament server, they are not automatically removed and will regain powers for their tournaments if they return.

Add announcement channel

mc!addchannel id|type

Caller permission level: host for the tournament identified by id

type must be either private or public. It may be omitted, in which case public is assumed.

The current channel is added as a channel of the specified type for the specified tournament.

Private channels are intended only for hosts and should not be visible to participants. Deck lists from registrations are broadcast here, along with any diagnostic messages from tournament operation, like score submissions and drops. Please monitor this channel during tournament operation in case of errors or warnings.

Public channels are where sign-up messages and new round announcements are posted. Make sure your to-be participants and participants can read this channel! Participants will be role-pinged for each round.

At least one private and one public channel must be registered before opening a tournament for sign-ups.

Remove announcement channel

mc!removechannel id|type

Caller permission level: host for the tournament identified by id

type must be either private or public. It may be omitted, in which case public is assumed.

If the current channel is registered for the specified tournament as a channel of the specified type, it is removed and Emcee will no longer send announcement messages here. Please note that the type must be correct as it was originally added via mc!addchannel!

Update tournament information

mc!update id|name|description

Caller permission level: host for the tournament identified by id

The specified tournament must be in the preparing stage and not have been started. Updates the name and description for the tournament, affecting the Challonge page and future sign-up messages.

Update tiebreaker settings

mc!tb id|tb1|tb2|tb3

Caller permission level: host for the tournament identified by id

The specified tournament must be in the preparing stage and not have been started. Updates the settings Challonge usees to determine standings amongst players with equivalent score. Exactly zero or three options must be provided. in the case of zero options, the command displays what the current settings are. The full list of options is as follows.

  • match wins
  • game wins
  • game win percentage
  • points scored
  • points difference
  • match wins vs tied
  • median buchholz

Set or read tournament capacity

mc!capacity id|limit

Caller permission level: host for the tournament identified by id

limit must be a whole number. It may be omitted, in which case this reads the tournament capacity instead.

The specified tournament must be in the preparing stage and not have been started.

If limit is omitted, this retrieves the current participant limit. Note that the default maximum is 256, enforced by Challonge's free Standard Plan.

If limit is provided, the participant limit is set to the provided value. Using 0 will disable this feature from Emcee's side as it is by default, but the aforementioned limits from Challonge continue to apply, so it will display as 256. For the same reason, setting the capacity above 256 will not have a meaningful effect.

Open tournament for registrations

mc!open id

Caller permission level: host for the tournament identified by id

The specified tournament must be in the preparing stage and not have been started. If at least one private and one public channel have been registered for the specified tournament, the tournament is opened for registration by posting a message with its name and description in all public announcement channels. This message will have a ✅ reaction button for users to click to begin the sign-up process.

Add artificial round-one bye

mc!addbye id|@discordtag

Caller permission level: host for the tournament identified by id

@discordtag must be a valid Discord mention of a user that pings them.

The specified tournament must be in the preparing stage and not have been started. If the specified user has confirmed their deck for the specified tournament, they will now receive a free win in round 1 of Swiss. This may end up adding more rounds to the tournament on Challonge than expected for a standard Swiss tournament, because this is implemented by adding a fake player that immediately drops when round 1 begins, so in that event, you should tie the extra final round.

Remove artificial round-one bye

mc!removebye id|@discordtag

Caller permission level: host for the tournament identified by id

@discordtag must be a valid Discord mention of a user that pings them.

The specified tournament must be in the preparing stage and not have been started. If the specified user has confirmed their deck for the specified tournament and was assigned a round-one bye per the above command, the round-one bye is removed.

Start tournament

mc!start id

Caller permission level: host for the tournament identified by id

The specified tournament must be in the preparing stage. Removes all pending participants who started the sign-up process but did not submit a deck, deletes all registration messages created by mc!open, and changes the status of the tournament on Challonge to "in progress". While the first round automatically begins on Challonge, and Challonge will automatically advance rounds without waiting for explicit human intervention, Emcee does not announce the first round until you explicitly run the following command.

Proceed to the next round

mc!round id|timer|skip

Caller permission level: host for the tournament identified by id

Both the timer and skip parameters are optional.

The round timer defaults to 50 minutes and must be of the form mm or hh:mm. An explicit zero timer results in no timer.

The skip parameter must come after the timer parameter if provided and be exactly skip. It skips sending pairings in DMs.

If the tournament is in progress, stop all previous round timers for the tournament. Announce to all public channels the current round and the Challonge hyperlink.

Pairings, round-one byes, and natural byes are sent out to each participant in direct messages if skip is not specified. This may take some time due to Discord API rate limits. Any problems are reported to private channels, such as blocked DMs.

Finally, a round timer message is sent out to all public channels if not explicitly zeroed. It will count down every five seconds. When the timer reaches 0, a follow-up announcement will ping all participants that the round is over. Hosts may trigger the next round or run this command again regardless of the state of the timer.

Please note that this does not advance the round on Challonge. Challonge will automatically advance rounds without waiting for explicit human intervention. This command is exclusively for announcing the start of rounds and starting the timer so participants play in regulation.

Finish tournament

mc!finish id|early

Caller permission level: host for the tournament identified by id

If the tournament is in progress and either all scores for every round have been submitted or the early parameter was not provided, all round timers are stopped. An announcement is sent to all public channels, pinging all participants, and then the participant role for this tournament is deleted. If the early parameter was not provided, the tournament is also marked as finished on Challonge.

Start top cut tournament

mc!topcut id|size

Caller permission level: host for the tournament identified by id

size should be a positive integer that makes sense for the tournament.

If the tournament is finished and has at least size participants, a new single-elimination top cut tournament is started on Challonge with the top size participants. The same hosts, decks, and announcement channels are retained, and a new participant role is granted to these users.

This should be called as soon as possible after mc!finish, breaks permitting, lest any participants leave the server.

Tie round

mc!tie id

Caller permission level: host for the tournament identified by id

If the tournament is in progress, sets the score for all outstanding matches in the current round to a 0-0 draw. Challonge will automatically advance to the next round, if any. This is mostly useful for skipping extra final rounds induced by artificial round-one byes or calling the tournament early without cancelling.

Override score

mc!forcescore id|score|@winner

Caller permission level: host for the tournament identified by id

score must be of the form #-#, e.g. 2-1, with the winner's score first.

@winner must be a valid Discord mention of a user that pings them.

If the tournament is in progress and the user tagged is a participant, the score for the last match involving the participant is set to score, in their favour. Draws can also be specified, in which case the mention can be either participant.

This command can submit both outstanding scores and overwrite already-submitted ones. Please note that if the winner's score is lower, Challonge will happily accept the match outcome, as if playing golf.

Drop participant

mc!forcedrop id|@discordtag

Caller permission level: host for the tournament identified by id

@discordtag can be a Discord mention, though it does not have to ping, or the user's ID.

If the specified user exists and is pending or confirmed for the specified tournament, they are dropped. Pending participants are removed from the queue and confirmed participants are unconfirmed. If the tournament is in progress, the match is automatically forfeit to the opponent 2-0 unless they have also dropped, in which case it is amended to a 0-0 draw.

This is irreversible. The participant is informed of the removal via direct message.

If a confirmed participant leaves the server for a tournament while Emcee is online, they should be automatically dropped from the tournament by Emcee.

Show tournament details

mc!info id

Caller permission level: everybody

If used in a server and the tournament identified by id exists, displays a pretty embed of the tournament name, description, Challonge link, capacity, number of currently registered participants, format, current status, any round 1 byes, and hosts.

Show participant deck

mc!deck id|@discordtag

Caller permission level: host for the tournament identified by id

@discordtag can be a Discord mention, though it does not have to ping, or the user's ID.

Reposts the deck profile for the mentioned user if they are confirmed for this tournament.

List participants and deck themes

mc!csv id|pie

Caller permission level: host for the tournament identified by id

The pie parameter is optional.

If no pie parameter is provided, generates a CSV of the form

Player,Theme
User#0000,DetectedTheme1/DetectedTheme2,Main: Card 1, Card 2, Extra: Card 3, Card 4, Side: Card 5, Card 6
User2#0000,No themes,Main: Card 1, Card 2, Extra: Card 3, Card 4, Side: Card 5, Card 6

If the pie parameter is provided, generates a CSV of the form

Theme,Count
DetectedTheme1,2
DetectedTheme1/DetectedTheme2,1
No themes,1

Synchronise tournament info

mc!sync id

Caller permission level: host for the tournament identified by id

Synchronises the tournament name, description, and participant list stored in Emcee with those stored in the Challonge API. Useful for testing in development when changes are made to a tournament on Challonge without going through Emcee.

Set custom allowed card pool (experimental)

mc!banlist id

Caller permission level: host for the tournament identified by id

If no attachment is provided, the default TCG allowed card pool is uploaded as an attachment along with the SHA256 checksum of the file.

If exactly one JSON attachment is provided, the allowed card pool for the tournament is set to the card pool described by the JSON, assuming it is valid. The JSON must be an allow vector.

Allow vector draft specification

An object of the form

{ "password": 3, "password": -1 }

where password is an integer card password quoted in a string and the value is the quantity of that card to allow.

OR

An array of integer pairs of the form accepted by the JavaScript Map constructor

[[10000, 3], [10000000, -1]]

where the first element of each pair is the card password and the second element is the quantity of that card to allow.

Passwords not in the vector will not be allowed. To allow an alias (alternate artwork or card always treated as the same name), use a negative for its quantity value. To forbid the main card but allow an alias (to enforce an alternate erratum), exclude the main or set it to 0 and set the alias to 3 (or any other desired restriction).


Back to main