Season pools, split by weighted attendance
Defer the split: loot builds up in a season pool, paid out at the end in proportion to attendance points.
/season start opens a season, and raids created during it settle in pool mode: outsiders and the caller are still paid per raid, the merchant and regear tax is still taken per raid, but the members’ share flows into the season pool instead of their balances. Every settle writes attendance points equal to the raid’s weight — the ⚖️ counter on the roster panel sets ×1 to ×5 — so a CTA can count for more than a gank squad. /season status shows any member the pool, their points, the total and their current share. /season end divides the pool proportionally, floors each payout and sweeps the remainder into the regear bank. Repair is ordered identically in both modes on purpose: a guild that opens a season must not find its repair policy quietly different.
The caller’s cut
An optional off-the-top silver cut plus bonus attendance points for whoever called the raid. Both start at 0.
The caller cut is a percentage taken after repair and before the split, credited to the caller’s balance on top of any share they earn as a participant, and shown as its own Caller cut line on the settled card. Caller bonus points are extra attendance points written to the append-only attendance ledger at settle time. Both live in /settings → 💰 Economy → 💰 Edit rates ("Caller cut % (e.g. 5, 0 = off)" and "Caller bonus points (e.g. 1)"), and both default to 0 — a guild that never configures them sees exactly the plain split.
Casual raids: a split the bot does not credit
An untaxed even split, tracked nowhere. A non-officer’s raid is locked to it, and its own caller may settle it.
The card carries a warning in its footer — "Casual raid — the bot has NOT credited anyone. No balances changed; nothing is on the guild’s books." Its colour is deliberately not the settled-green, so it cannot be mistaken for silver the bot moved. A casual raid still gets the repair field, and there the repair is handed back to whoever fronted it rather than kept by the guild: the payer is picked with a user-select on the settle board and may be anyone on the server, not only a participant.
Departed-member write-off
Sweep the balances of people who left into a third bank, «Left by players». Reversible, never automatic.
When a member leaves Discord their row keeps rendering and their silver sits on the board as a liability nobody will collect, inflating the total officers reconcile against. 🚪 Departed members on /balances checks the board’s holders against the live member list and names whoever is gone. You write them off one at a time (each pick re-verified at click time, so someone who rejoined mid-panel is skipped rather than swept) or all at once behind a confirm that acts on a fresh scan. The silver moves to the departed bank, printed on /bank and drift-audited like the other two. There is no hook on someone leaving the server — a ban appeal or a rage-quit-and-return must not silently move silver — and Restore puts everything back with a compensating pair.
Member-to-member transfers
Off by default. Two-step confirm, an overdraft guard, and a 24-hour officer reversal window.
/transfer is the first silver movement in the bot with no officer in the loop, so everything around it is defensive. Step 1 validates everything knowable — enabled, not yourself, not a bot, positive amount, under the per-transfer cap, within your balance, not while you are in energy debt — so the confirm is about consent rather than discovery. The confirm intent lives 2 minutes and is single-use: step 2 consumes it inside the transaction, re-reads the sender’s balance and writes both legs with the other party recorded. Transfers are zero-sum — send 1,000,000 and the recipient receives 1,000,000, no fee. An officer can reverse one within 24 hours from /audit member, and the reversal is refused if the recipient has since spent below the amount rather than driving them into debt.
Per-member tax exemptions
One member can be exempt from merchant tax, regear tax, or both — on a raid, from the manage panel.
The manage panel for a signup shows Merchant tax and Regear tax as charged or exempt, and the same panel carries the manual type override: 🛡️ guild member (taxed + tracked) or ⚔️ pug (full untaxed share). An exemption covers the member’s whole taxable base, participation bonus included — exemption is a property of the person, not of where their silver came from.
Silver the way players write it
200k · 1kk · 2.3m · 2,343,434 · 2 343 434, and 10% for repair. Ambiguous input is refused, not guessed.
One shared parser sits behind every money field the bot puts in a modal — settle, payouts, balance adjustments, regear claims, giveaways. It reads European grouping (2.343.434) and the European decimal comma (2,5m is 2.5 million, not 25 million), and it refuses a bare 2.3 rather than guessing whether that meant two and a bit million or 2 silver 30. The /adjust and /transfer slash-command options take a plain whole number instead, because Discord validates those itself before the bot ever sees them. Each settle field is capped at one trillion silver — a typo guard on the one flow that credits real balances, and the thing that keeps the preview board’s hidden button ids inside Discord’s 100-character limit.
Officer adjustments, tagged
/adjust adds or deducts a member’s balance, with a regear flag that keeps regear statistics honest.
Every adjustment records the issuing officer, so the ledger line names a person instead of appearing from nowhere. The regear toggle tags the entry as a regear rather than a plain manual adjustment, which is what lets /stats report regears received by a member and regears issued by an officer without an officer having to remember which of their adjustments were which.
The outcome picker
✅ Success · ➖ Partial · 💀 Wipe, as one click on the preview board.
It used to be a free-text field in the modal that expected one of three magic words and silently recorded "unknown" for anything else — so the statistic it fed was mostly "unknown". A select is one click, it gets answered, and it lives on the board rather than the modal so it does not lengthen the common settle.