Commands
Tournaments are slash commands under /tour. The dice games
share /roll — Death Roll is /roll dr, and the next
dice game takes its own name beside it — hi, lo,
far, close. There is no verb to type:
/roll dr throws down a challenge anyone can take, and
/roll dr user:@rival aims it at somebody. /roll dice
is just a number — 1 to 100, or to whatever max: says. Poker nights are
under /poker — a roster, the payments and the record for a
game played away from Discord.
Inside a tournament's thread, commands know which tournament you mean.
Anywhere else, add code: — every tournament shows its code in
its thread name.
Playing a tournament
| Command | What it does |
/tour join | Take a spot in the tournament in this thread |
/tour join entries:2 | Take two spots — you may hold several |
/tour join code:K4M2QP | Join from anywhere by quoting the code |
/tour join entries:2 tab:@friend | You play, they pay — they get tagged |
/tour join entries:2 for:@friend | You pay, they play — they get tagged |
/tour leave | Drop all your spots, or entries:1 to drop one |
/tour checkin | Confirm you are here once check-in opens |
The bracket starts only once every place has checked in. Joining during
check-in takes an empty place only, never one somebody is still holding; an
organizer can check in a player who is there but missed it with
/tour admin checkin, or remove a no-show with
/tour admin dq to open their place.
While it fills
Every join is announced in the thread — who joined, and how full the
tournament now is — and the roster is pinned and kept current:
one message for the whole tournament, edited as people join, leave, check in
or are substituted. When it starts, the bracket image is pinned beside it.
Looking things up
| Command | What it does |
/tour info | The tournament card: rules, fee, prize and its picture |
/tour bracket | The current bracket as an image |
/tour roster | Who is in so far — and, when the fee is a price, what each payer owes so far, with the total if the bracket fills |
/tour pending | Bring every unfinished match back to the bottom of the thread, so nobody scrolls to confirm. In an olympics, a game that finished without its result reaching the bracket is put in |
/tour summary | What everyone owes, the winner and the prize — once the bracket is drawn |
/tour list | Every tournament running in this server |
/tour profile | Your record, or player:@name for someone else |
/tour help | All of this, in the channel |
Settling a match
A live match card carries a green Won button beside each
player's name. Press the one next to whoever won — you do not have to be
that player:
- You won, and you press it — the card returns to the
bottom of the thread with Confirm and
Dispute, and your opponent (or an organizer) confirms.
- You lost, and you press your opponent's name — that is
a concession, and it settles the match immediately. Nobody disputes their
own loss.
- An organizer presses either — settled outright, and
logged as their decision.
This exists because a match should not stall behind a winner who has gone
quiet. Whoever claimed a win can never confirm their own claim, so a result
always has two people behind it.
If a match goes quiet, anyone in the tournament can run
/tour pending to bring the unfinished cards back down — both
the ones waiting on a confirmation and the ones nobody has played yet. In
an olympics it brings back each match's dice card instead, with the rolls
so far, and pings whoever still has to roll. A match whose game already
finished but never moved the bracket on gets its result put in. An
organizer can also /tour ping waiting:true, which mentions
exactly the players a round is stuck on and tells each of them what they
owe.
Running a tournament
Organizers only — a role you choose, or Manage Server.
| Command | What it does |
/tour create name:Summer Cup size:16 prize-value:$120 | Ask to open a tournament. An approval card is posted in the channel and the hosts are tagged; the thread opens when another host presses Approve. The bot's owner can approve any request, including their own. prize-value is what the prize is worth (0 if there is none), shown next to what a full bracket collects |
| Reject on the card | Another host turns it down, with a reason if they like. The host who asked presses Edit to change the name, fee, prize, prize value or description, and it is sent for approval again. Withdraw drops the request |
… entry-fee:£5 prize:Trophy prize-image:<link> | Optional details, all editable later |
… style:olympics | The bot deals every match as a dice game and takes the result — nobody reports anything. The final is best of three: each finalist secretly picks one game, and the bot draws the third from the rest |
… style:olympics match-minutes:60 | How long a match may sit unrolled before the bot rolls for whoever hasn't — 10 minutes if you leave it out. The final has no limit |
/tour open-checkin | Close registration, open check-in, ping everyone |
/tour start | Draw the bracket and ping round one |
/tour cancel | Cancel it. In an olympics, every dice game still being played is closed and settles nothing |
/tour admin force-win round:2 match:1 winner:@alice | Set a result outright |
/tour admin reopen round:2 match:1 | Undo a result and everything downstream. In an olympics the match is dealt again, and a later match being played is stopped until its seats are decided |
/tour admin void-entries player:@alice count:1 | Remove entries at random |
/tour admin checkin player:@alice | During check-in: check a player in. all:true checks in everyone who hasn't yet |
/tour admin dq player:@alice replacement:@bob | Disqualify a player. Once the bracket has started a replacement is required, and takes every seat they held; before the draw, leave it off and their places reopen |
/tour admin substitute out:@alice in:@bob | Hand every seat a player holds to someone else |
/tour ping message:Doors open | Ping everyone still in the tournament |
/tour ping waiting:true | Ping only the players a match is waiting on, and say what each owes. In an olympics, only the players who have not rolled yet |
/tour admin set prize:New prize | Change a detail; - clears one. prize-value:$150 corrects what the prize is worth |
/tour admin set match-minutes:10 | Olympics: change the match clock at any time, including for matches already in play |
/tour admin redraw | Re-run the draw, before anything has been played. In an olympics the dealt cards are closed and the new draw is dealt |
/tour summary cost:5 | Set the price of one entry and post what everyone owes |
Settling up
When the final is decided, the bot posts what everyone owes
under the champion: the price of an entry, and one line per person who
bought any, tagged so they see it. A friend who covered two spots on a tab
sees them on their own line:
@rich — $9.63 · 3 entries (1 own, 2 for @alice)
The price comes from the entry fee when the fee is a plain price —
$5, £3.50, 5 each. If it is anything
else, or there was none, the host is tagged with a Set the
price button instead. /tour summary cost: sets or
corrects it at any time. Every entry in the bracket pays in full, including
ones later disqualified; the bot never tracks who has paid.
Before the draw, the roster shows the same lines so far,
for anyone who wants to pay up front:
$5 an entry × 6 of 16 entries = $30 so far · $80 if full.
Each line is exact for the entries that payer holds now; only the total
is an estimate, because the field can still change until the draw.
Substitute is the exception to the role: only the
tournament's creator — or the bot's operator — can run it, because it is
the one command that changes who is playing after the bracket exists.
Results, positions and the shape of the tree are untouched; only the name
on those seats changes.
A plain roll
| Command | What it does |
/roll dice | A number from 1 to 100 |
/roll dice max:48484 | A number from 1 to 48,484 — a raffle with that many tickets |
No game, no opponent and nothing on the scoreboard — and still checkable.
Each roll's card carries the fingerprint for the next roll in that channel,
so every roll after the first can be held to a secret posted before anybody
pressed. The first in a channel says it cannot be; see
Fairness.
One roll each
Four games with the same shape: both players roll once, and a comparison
decides it. A tie rolls again — in far and
close that includes two different rolls the same distance
from 50, like 30 and 70.
| Command | What it does |
/roll hi | Highest roll wins — open challenge, 1–100 |
/roll lo | Lowest roll wins |
/roll far | Furthest from 50 wins — always 1–100 |
/roll close | Nearest 50 wins — always 1–100 |
/roll hi user:@rival wager:100 | Aimed at somebody, for a wager |
/roll lo max:1000 | A bigger range — hi and lo only |
/roll hi item:a Steam key | Name what you are playing for — a thing, or a link to one |
/roll hi user:@rival best-of:3 | First to two games takes the series — and the wager, once |
/roll hi code:K4M2QP | Roll in that game, if its card has scrolled away |
far and close are fixed at 1–100 so they
stay the games everybody knows: over 1–10 every roll is below 50, and
“furthest from 50” would quietly mean “lowest”.
Death Roll
| Command | What it does |
/roll dr | Open challenge — anyone but you may accept, nothing at stake |
/roll dr user:@rival | Challenge them in particular — no wager |
/roll dr user:@rival wager:100 | Challenge them for a wager of 100 |
/roll dr user:@rival wager:100 start:500 | …and rolling starts at 500 |
/roll dr wager:100 | Open challenge for a wager |
/roll dr item:a Steam key | Name what you are playing for — a thing, or a link to one |
/roll dr user:@rival wager:100 best-of:3 | First to win two duels takes the series and the 100 |
/roll dr code:K4M2QP | Roll in that duel, if its card has scrolled away |
/roll cancel [code] | Withdraw a challenge you are still offering |
/roll stats | One dice record — wins, losses, played, and your score |
/roll history | Your recent games, all dice games together |
/roll top | This server's top ten by wins, across every dice game |
/roll help | All of this, in the channel |
/roll void code:CODE | Organizers: clear a stuck game |
Several at once
You can be in as many duels at once as you like, and leave
as many challenges waiting — being mid-duel does not make you
unchallengeable. The buttons belong to their own duel, so they are never
ambiguous, and a typed roll has to name its duel with code:
rather than the bot picking whichever came back first.
Starting a game, and rolling in one
/roll dr starts a game: on its own the challenge is open to the
room, and user: aims it at somebody. Add wager: and
start: to set the terms.
item: names what you are playing for — “a Steam key”, or
a link to it. It rides on every card the game posts, from the challenge to the
result, so nobody has to scroll back to remember what was at stake. The bot
only carries the words: a wager moves a score, but an item is between the two
of you to hand over. The two are independent, so a game can have either, both
or neither.
Best of three
best-of:3 turns any dice game into a series: the first to win
two games takes it. It is still one game — one challenge,
one code, one wager — so nothing moves after game one or two, and the whole
stake moves once when somebody reaches two. The boards count the series as
one win and one loss.
Each card says where the series stands — Best of 3 · game 2 ·
@alice leads 1–0 — and a short score card goes up between games. In
Death Roll every duel starts again from the agreed number and draws its own
first turn, because going first is the worse seat and alternating would
give it to one player twice. A tie in the one-roll games still just rolls
again; it is not a game won by nobody.
The whole series draws from one secret, published when it ends, so every
roll of every game can be checked with 🔒. A series that goes quiet
part-way closes like any game does: nothing settles, whatever the score.
Rolling is the button on the card addressed to you. The only
typed roll is /roll dr code:K4M2QP, which exists for a card that
has scrolled away — and it names the duel rather than guessing, because a
roll in the wrong game cannot be taken back.
How a duel goes
Both players roll once to decide who goes first, each on their own message.
Then turns alternate: the range is 1 to the last number rolled,
inclusive, so rolling the ceiling exactly is legal and simply leaves it
where it was. Roll a 1 and the duel is over.
A wager moves a notional score — see Terms. The bot
never announces anyone's running total on its own; /roll stats
and /roll top are how it is read.
Poker nights
The bot does not deal — a poker night happens at a table, or in a client
the bot has no account on. What it does is the part that goes wrong in
Discord: who is coming, what it costs, where to send the money, who has
sent it, and who won.
The roster card is deleted and reposted every time somebody
joins, so it stays near the bottom of the channel instead of
scrolling away. It carries the buy-in, the payment link, the prize and a
Join button.
| Command | What it does |
/poker join | Take a seat at the night running in this channel |
/poker join code:P4M2Q | Join from anywhere by quoting the code |
/poker leave | Give your seat back |
/poker info | Cost, payment link, prize and who is in |
/poker info code:P4M2Q | Any night, including one that finished months ago |
/poker profile | Your points, nights played, and where you finished each time |
/poker profile player:@name | Somebody else's |
/poker leaderboard | Most participation points in this server |
/poker leaderboard month:09/2026 | Just that month |
/poker help | All of this, in the channel |
Participation points
Every finishing position is worth something, and the size of the
field sets the scale. At a table of N the winner takes
N points, second takes N−1, and last takes 1.
| Field | 1st | 2nd | 3rd | … | last |
| 20 players | 20 | 19 | 18 | … | 1 |
| 8 players | 8 | 7 | 6 | … | 1 |
| 2 players | 2 | 1 | — | | |
So coming fourth of twenty is worth 17 — more than winning a heads-up game,
and that is the point. A big night is worth more at every position, and
somebody who turns up every week can out-rank somebody who won twice and
stopped coming. Points and nights played are separate numbers:
one is how well you did, the other is how often you showed up.
The leaderboard ranks on points, with first, second and third places
breaking ties. A cancelled night pays nothing.
Paying, on the night
/poker checkin pings every player and posts a card with
one button per person. You press your own once you have
paid; the host can press anybody's, for whoever hands over cash at the
door. Nothing is verified — the bot records that a human said the money
arrived, and never touches the money itself.
A night can seat up to 50. Past 20 the card carries one
I've paid button and a menu the host marks people from,
because Discord allows a limited number of buttons on one message.
Running one
Opening a night is an organizer command, because it puts a
payment link on a card the bot renders. You host one night at a time, which
is why none of these need a code — add code: to act on
somebody else's.
| Command | What it does |
/poker create cost:$20 | Open a night in this channel |
/poker create cost:$20 pay:paypal.me/you | …with somewhere to send it |
/poker create … prize:The pot prize-image:<link> | …and a prize, with a picture |
/poker create … name:Friday Poker notes:7pm, bring chips | Name it, and add a note |
/poker create … playing:false | You are running it, not sitting at it |
/poker checkin | Ping everyone and open the paid buttons — re-runnable |
/poker remove player:@ghost | Somebody who never paid or never turned up |
/poker complete | The night is over — opens the ranking, then puts it on the board |
/poker cancel | It did not happen — nobody's record is touched |
/poker admin adjust user:@alice played:1 | Correct a monthly count by hand |
/poker admin adjust user:@bob played:-1 note:counted twice | Undo one — adjustments are appended, never edited |
/poker admin adjust user:@dan points:5 note:dealt all night | Award points the finishing order cannot express |
Ranking the night
Points need the whole field placed, first to last. There
are three ways to do that and a host can mix them freely in one night —
they all fill the same list of positions.
| Way in | When it suits |
| Busted, on the check-in card | Press it as each player goes out. They take the lowest position still free, so by the last hand there is nothing left to do. |
/poker complete | A button per player, headed with the place being filled and what it is worth. Press down the order. |
| Type the order | Seat numbers from the roster, best first — 3,1,5,2,4. The whole field at once, for a host who wrote the payouts down. |
The last player is placed for you, and Undo
takes back the most recent result wherever you pressed it. The roster locks
once ranking starts — a position is anchored to the size of the field that
played — so undo first if somebody needs adding or removing.
Participation is counted by calendar month, in Eastern time,
so a game that runs past midnight still belongs to the evening it was
played. A cancelled night counts for nothing at all.
Checking a game was fair
| Command | What it does |
/verify code:K4M2QP | The commitment, the player seed, the revealed secret, and how to recompute the rolls yourself |
/verify | How many games here are still running and unproven, and how many fingerprints are waiting for the next /roll dice |
Every result card also carries a 🔒 Provably fair button,
which shows the same panel without typing anything. Works for any game of
chance the bot runs, including ones added later — see
Fairness for the method in full.
Server settings
| Command | What it does |
/config organizer-role role:@Organizers | Which role may run organizer commands, for every game |
/config game-role game:poker role:@PokerHosts | A role that runs one game's organizer commands and no other's |
/config game-role game:poker | Leave the role out to clear it |
A game role is added to the organizer role, never
substituted for it: whoever holds @Organizers still runs
everything, and Manage Server always works. So setting one can only ever
widen who can do something — it can never take access away. Useful when the
people you trust with a poker buy-in are not the same people who run your
brackets.