Two doors onto the same store: a letter that arrives on its own, a code that gets typed. Behind them, the same kinds of rewards and the same one-shot grant.
In short
What lands in the inbox, and what opens it
The game writes to the player instead of waiting for them: five letter types exist, from an organization invite to a referral about to lapse, and they all land in the same place. >mail opens the inbox, >mail read opens one letter.
A letter can carry rewards: six kinds exist, up to 20 in the same letter. Claiming is all or nothing, in a single transaction: a kind the game can no longer serve refuses the whole letter rather than handing out half of it.
The other door goes through no letter at all: >code hands out the same rewards the moment it is typed. A code is at most 32 characters long, case and spaces are normalized before it is read, and >code list only ever shows the public codes.
A code can refuse, and it refuses in six ways. Only three are spelled out: the others melt into one shared message, because telling them apart would tell anyone which codes exist.
Six kinds of rewards
A reward is a typed line, not an object set aside in advance: the game reads it again at grant time. A letter carries 20 of them at most, and each kind is served by the module that knows how to build it.
A kind whose module is not loaded refuses the whole claim rather than burning the letter: the letter stays, and can be claimed later.
A reward already owned, a pet or a skin, is marked as such instead of being granted twice.
The letter as it lands
None of the wording is written by the bot: the sender provides the title, the body and the rewards. The rest of the frame is the same for every letter.
The summer rush closes on Sunday
- The header
Written outside the frame: sender and subject, so the letter is recognized without opening it.
- The title
The letter's title, taken from the send as it stands.
- The body
Written by the sender, never generated.
- The rewards
One line per reward: 6 possible kinds, 20 rewards at most in the same letter.
- The reward state
Replaced by a confirmation line as soon as the rewards are granted.
- Claim
Only shows if the letter carries unclaimed rewards. The click grants everything in one transaction.
- Filing
Follow pins the letter, archive takes it out of the inbox, delete wipes it.
No mention is ever notified from a letter: the text comes from elsewhere, so it is made inert when rendered.
The buttons live as long as the message does. A letter reopened with
>mail readlays down fresh ones.
The life of a letter
A letter goes through four states, and only one of them is irreversible. Nothing files itself away: the inbox only empties on the player's own move.
- An invite, an announcement, a referral
- A direct message, unless the mail notice is switched off
- The letter opens in full, rewards included
- The sender stays visible after reading
- Everything goes through, or nothing does
- A summary is written onto the letter, reward by reward
- No letter vanishes on its own
- A deleted letter does not come back
Deleting an unclaimed letter loses its rewards: nothing puts them back in the inbox.
Claiming writes a summary onto the letter, reward by reward: what was granted, what was already owned. It fits the 20 rewards of a letter.
Six ways to refuse a code
A code's conditions are set when it is created, and a player may already have used theirs: three refusals are spelled out as they stand, the three others melt into one shared message so no one learns which codes exist.
| The refusal | What closed it | Own message |
|---|---|---|
| DisabledThe code still exists, it just no longer works. | An administrator switched the code off after the fact. | · |
| ExpiredThe date is set at creation, never pushed back at use time. | The end date has gone by. | · |
| Sold outStock is decremented before the grant: a lost race grants nothing. | The code's global stock has been reached. | · |
| Level too highThe one refusal that names its bound in the answer. | The code targets players below a given level. | ✓ |
| Account too oldServes welcome codes without touching long-standing players. | The code targets accounts created after a date. | ✓ |
| Already redeemedOne claim per player per code, whatever stock is left. | This player has already claimed this code. | ✓ |
A refusal that already assumes the code is known does not fill the attempt gauge. The merged refusals do count as an attempt, exactly like an unknown code.
Stock is consumed before the grant, by a conditional write: two players racing for the last unit, only one gets it.
The guard against guessing
A code is a short secret, typed in a public channel: nothing stops anyone from guessing it, except a sliding window of 10 failed attempts per 5 minutes.
Normalization bounds a code at 32 characters before it is ever read: past that, it is refused without counting as an attempt.
An accepted code empties the gauge: a player who misses then succeeds starts over clean.
The commands
Manage your mailbox
<mails>The message you want to read
<mails>The message you want to delete
Use a reward code
redeemManage which notifications the bot sends you
disableenablestatus