Documentation Matches
Create a match
Create a Sport, Free or Bookmaker match with /match create: form fields, odds, deadline and the public announcement.
Who can create a match
/match create is for managers: the managerrole role, the adminrole role or the Discord Administrator permission. The form checks these rights again when you submit it.
Pick a type
The type option has three choices. Their labels are in French, even for an English Discord client.
| Label shown | Type | Possible results |
|---|---|---|
| Match Sport (2 équipes + nul) | sport |
Team A, Draw, Team B |
| Bookmaker (cotes dynamiques) | dynamic |
Team A, Draw, Team B, with odds that move as people bet |
| Match Libre (choix personnalisés) | free |
2 to 9 choices that you write yourself |
Rules for every type
- Odds: 1.01 to 999. Both comma and dot work (
1,85or1.85). - Title: 200 characters at most.
- Deadline: optional. See below.
Sport match
The form asks for:
- the title;
- team A, as
Name|odds, for examplePSG|1.85(100 characters at most, odds included); - team B, in the same format;
- the draw odds;
- the deadline (optional).
The two teams must have different names, ignoring case. The form does not check this before sending, so identical names only produce a generic error.
Free match
The form asks for:
- the title;
- the choices, in one field, separated by
|:Mbappé|Haaland|Kane(1000 characters at most); - the odds, in a second field, in the same order and separated by
|:2.5|3|4.2(200 characters at most); - the deadline (optional).
You need 2 to 9 distinct choices, and exactly one odd per choice.
When you settle a free match you can also pick “No winners”. Every stake is then lost. Read the warning on Manage a match.
Bookmaker match
The form is the same as a Sport match: title, team A and team B as Name|odds, draw odds and deadline. The odds you enter are the starting odds. After that they move with the money placed on each result.
Reserve and max bet
When the match is created, it copies two config values: the reserve (dynamicreserve, 10,000 by default) and the max bet (maxbet). Changing the config later only affects new Bookmaker matches.
Creation is refused if any starting odd is above (reserve + max bet) / max bet. With a reserve of 10,000 and a max bet of 500, starting odds can go up to 21.00. To offer higher odds, raise dynamicreserve or lower maxbet with /pb config.
How the odds move
With no bets, the displayed odds are the starting odds. When coins go on one result, its odds drop and the others rise. The bigger the reserve, the less the odds move.
The exact calculation:
- starting probability of each result:
p_i = (1/o_i) / sum(1/o_j); - market probability:
q_i = (R × p_i + S_i) / (R + T), where R is the reserve, S_i the stakes on result i and T the total stakes; - displayed odd:
o_i × p_i / q_i, kept between 1.01 and 999, capped by the solvency limit, then rounded down to two decimals.
If a result’s solvency limit falls below 1.01, that result is suspended: its button is disabled and reads “Suspended”.
Limits that protect the market
- A bet is refused, with nothing debited, if it would push the market past its risk limit. A Bookmaker match can therefore never create more coins than its reserve, whatever the result.
- The odds shown when the stake form opened are guaranteed. If they moved by 0.005 or more in the meantime, the bet is refused with nothing debited, and the player has to reopen the match to accept the new odds.
- A Bookmaker bet is final for the player: it cannot be removed. Staff cancel or delete still refunds it.
Live announcement
A Bookmaker announcement is an embed (never an image) refreshed about 350 ms after each bet. It shows the three odds, the pool, the reserve, the max bet, the deadline, the rules and the time of the last update. The bet button is disabled once the match is closed or every result is suspended.
A Bookmaker match cannot be changed with /match edit. Its deadline can still be changed.
Deadline
Two formats are accepted:
| Format | Example | Meaning |
|---|---|---|
| Minutes | 30m |
in 30 minutes |
| Hours | 24h |
in 24 hours |
| Days | 2d or 2j |
in 2 days |
| Date and time | 25/12/2026 21:00 |
Paris time, day first |
The date must be in the future. Leave the field empty for a match with no deadline.
The bot does not close matches automatically at the deadline. It does refuse every bet that arrives after it. The match status switches to “closed” the next time someone uses /bet, /listmatches, /listallmatches or a bet button, and the public announcement then shows “Closed”. You still have to settle the match yourself with /match close.
After creation
- You get a private confirmation with the match ID. Each match has a random ID (
Mfollowed by 10 hex characters) and a#nnumber specific to the server. - The public announcement is posted in the channel where you typed the command. For a Sport or Free match, it has one button per result with its odds, which opens the stake form directly, and a “🎲 Bet” button that opens the match page. The
matcheschanneloption is saved but not used yet, so it does not change this channel. - If canvas visuals are on, Sport and Free announcements are images, with only the “🎲 Bet” button.
- The announcement of a Sport or Free match is then updated at every step of the match (see Manage a match).
- If the role ping is set up, a second message mentions
pingroleright after the announcement. - The creation is written to the server logs and sent to the PronoBot team (title, type, server, creator, choices, deadline).
To edit, settle or cancel the match, see Manage a match.