The slot list is the truth
Slots are assigned in arrival order and renumbered per lobby after grouping. When a Discord message and the slot list disagree, the slot list wins — and every points table carries the revision it was built from.
Slot lists, room IDs, points tables, raid defence and a record when a team disputes — the jobs an Indian Discord organiser does every week, in one bot.
Open a lobby, fill the slot list, hand out room IDs, and reclaim seats when a team no-shows — without chasing DMs.
Slots are assigned in arrival order and renumbered per lobby after grouping. When a Discord message and the slot list disagree, the slot list wins — and every points table carries the revision it was built from.
No channel-posted room ID. A pull-only Retrieve button shows the ID and password to the viewer who asked, with every reveal logged by lobby and time — the credential never rides in a message.
Missed-match and no-show rules ship off by default, run dry-run or staff-confirm first, and unwind in the same step that corrects the result that triggered them.
Concurrent scrims stay isolated inside your Discord. A team cannot hold overlapping seats across lobbies, and a ban applies across the night so an 8 PM sanction cannot slip into the 9 PM lobby.
Anti-raid scoring, lockdown and incident records — because a nuked Discord mid-final is not a smaller problem than a wrong points table.
No-avatar, account-age and join timing feed a server score. Thresholds flex for a published event’s signup rush, so a real registration wave is not treated as a raid.
Raid response raises Discord’s own verification and pauses invites before permission overwrites. If a channel still needs a lock, the exact pre-lock state is saved so restore is exact, not a generic default.
Message similarity, join timing and profile clustering across a cohort — the raid that passes one-by-one screening — with cohort action and a full false-positive rollback.
Every detection becomes one incident with its events and evidence. Unacknowledged incidents escalate, and every automatic containment posts a one-click full revert.
Every important change is written down with who did it. Export the chain when you need to settle an argument — not a chat archaeology session.
Audit rows have no update or delete grant for the app role. A security event someone could rewrite is not evidence, so the guarantee lives in the database.
On the path that decides a published result — evidence, read-out, confirm, publish — views are logged alongside writes, because that store is the most sensitive in the product.
A per-result export covers evidence, read-out, review and publication in one bundle. The audit survives even after the screenshot itself is purged.
The log itself is checkable. A regulatory or law-enforcement export is a named path, not something bolted on when the first request arrives.
In-game names are messy Unicode. Scores bind to the slot for that match. Staff confirm before shaky evidence goes live.
Each match freezes its own slot-to-team binding at lobby lock. A name match can flag a problem, but it never assigns a scoreboard row to a team on its own.
Screenshot reads and participant-submitted evidence sit behind a staff confirm. Manual staff entry and an authoritative feed are the only paths that skip that gate — confirming your own typing is theatre.
Agreement between captures raises confidence and reorders review attention — it never skips the confirm. A one-kill gap and a placement swap are treated as different problems.
Disputes open against a specific field and value, inside a bounded window, with counter-evidence held to the same checks as the original — no fee to file.
Room IDs, registration notes and moderation notices share one governed DM path. No feature is allowed to spam Discord’s DM endpoint on its own.
Four priority lanes: credentials and tournament messages first, then security notices, then moderation, then bulk announcements — and bulk never sends during an active incident.
No process builds its own Discord client for DMs. Everything goes through the queue — a feature that could skip it would be the one that eventually gets the fleet rate limited.
Discord’s invalid-request ban is IP-scoped, not token-scoped: enough bad requests ban the source address for everyone sharing it. Paid tiers sit in shared cohorts of 25; quarantine is free. There is no dedicated address at any price.
From Scrim upward every organisation runs a dedicated Discord application (pool claim by default), so the DM allowance is a conservative fraction of that token’s own throughput — never a slice divided across every Free server on a shared bot.