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.
- mc!create
- mc!addhost
- mc!addchannel public
- mc!addchannel private
- mc!open
- mc!start
- mc!round
- mc!finish
- mc!topcut
- mc!update
- mc!tb
- mc!capacity
- mc!removehost
- mc!removechannel
- mc!addbye
- mc!removebye
- mc!banlist (experimental)
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.
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.
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.
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.
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.
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
!
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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).