League Management
Live leagues are managed from the web at your league page → ⋮ → Manage
league, or directly at heir.gg/<slug>/manage. Nearly everything an organizer
used to do from Discord now has a richer home in the browser.
Who can do what
Heir resolves permissions live from Discord every time — nothing is stored, so role changes take effect within minutes.
| Rung | Can |
|---|---|
| Anyone | View standings, players, matches, tier lists, tournaments |
| Signed in | Everything above, plus their own dashboard, settings, and linked accounts |
| Player | Appears in leagues; joins teams |
| Organizer (role) | Manage league settings, schedules, teams, and tournaments from the web; all organizer bot commands |
| Server owner | Everything an Organizer can, plus setup, cancel, and deleting the league |
Only the server owner can grant or revoke the Organizer role from the web — organizers can't create other organizers.
League settings
The management page covers everything /config covers, from the browser:
regions, match nights, per-region slot times,
series format, minimum match format, roster size, the
channels Heir posts to, the ref role, stat approval, predictions, team colors,
and branding.
Sections are grouped by what they touch:
| Group | Sections |
|---|---|
| League | League, Competition, Branding |
| Play | Stat tracking, Servers, Schedule, Season, Predictions |
| Discord | Connection, Channels |
| Account | Audit log, Billing, Danger zone |
Channels sits under Discord, not Play — it's wiring for the bot (where schedules, scores, and stat events post), not a league rule.
Social links
Manage → League → Branding → Social links holds a Discord invite, a YouTube channel, and an X profile for the league. Links that are set render as a small icon row under the league name in the sidebar; a blank field simply shows nothing.
Validation is strict on purpose — each field must be the real thing, and lookalike domains are rejected:
- Discord — a
discord.gg/...ordiscord.com/invite/...invite - YouTube — a
youtube.comchannel (@handle,/channel/UC...,/c/..., or/user/...) - X — an
x.comortwitter.comprofile
Social links are a Pro feature — leagues below Pro can't set them, and the icon row only renders while the plan grants it.
Shouts
Manage → Discord → Channels also routes the bot's announcements — each category has an on/off switch, and off means the bot sends nothing for that category. Everything defaults on.
- Tournament shouts — tournament start and bracket announcements. Optional dedicated channel; falls back to the schedule announcements channel when none is set.
- Prediction shouts — settlement summaries after results. Same optional dedicated channel and fallback.
- Team leaderboard — the persistent team elo leaderboard embeds.
- Stat leaderboards — the persistent per-bucket stat leaderboard embeds.
Turning the team leaderboard off stops the posts, nothing else — standings
still compute, and the web leaderboards are unaffected. These switches live on
the web only; there are no /config options for them.
Every settings page shares a Discord-style save bar: make changes across any tab and one bar tracks them all, with Save changes / Discard. Navigating away with unsaved changes is blocked (the screen shakes) until you save or discard. For Discord-linked leagues the change is applied by the bot itself — the bar waits for Heir's confirmation before reporting a save. Every change is recorded in the league's audit log.
The game is fixed at setup and cannot be changed — switching games would orphan every linked account, stat, and rating.
The Discord health check
If the bot has gone quiet, start here: Manage → Discord → Connection → Detect issues runs a live diagnosis of the Discord integration — the same checks the setup wizard ran, against the server as it is right now:
- Heir is still in the server
- Heir has the permissions it needs
- Heir's role is high enough to manage team roles
- Heir can see the full member list
- Slash commands are authorized (the OAuth scope wasn't dropped on re-invite)
- The league roles exist and setup has finished
- The configured channels and ref role still exist — this catches settings pointing at a channel someone deleted
Every failing check comes with its fix attached:
- Re-invite link — for a kicked bot or a missing slash-command scope. The link lands on the same server with no server picker, so re-adding is one click; re-authorizing also re-grants scopes and permissions.
- Open Channels — jumps straight to the Channels section when a configured channel or role no longer exists, so you can re-point it.
- Instructions — role-position and permission problems explain exactly what to change in Discord's own settings.
Run it whenever "the bot stopped working" — it turns a vague symptom into a named cause in a few seconds, and Check again re-runs after each fix.
The health check is owner-only — it enumerates your server's channels and roles, which Heir won't expose to anyone else.
The Schedule editor
Building and editing weekly schedules lives on the web at
heir.gg/<slug>/schedule → Schedule editor. It's a full-page, drag-and-drop
week navigator that can hold up to eight weeks at once — generate a week from
availability, drag teams into slots, focus a team to see its availability wash
green/red, mark break weeks, and rebuild or delete any week. See
Weekly scheduling for the full model.
Team management
Organizers manage teams from the web too — create and disband teams, edit rosters
and captains, set team colors (including two-color gradients), and review team
profiles. Captains manage their own team's availability on the web: the
availability grid shows each region's real slot times and lets a captain toggle
the whole week at once, which is why availability moved off the
/team-availability set-time command (a static Discord picker couldn't reflect
per-league slot times).
Tournaments
Cups run alongside the league from the web — single- or double-elimination brackets and group stages, self-serve registration, seeding, and live public brackets. See Tournaments.
Deleting a league
Owner only, from the league page's ⋮ menu. Deletion asks you to type the league's exact name, then permanently removes:
- every team, match, stat, rating, schedule, and tournament
- the league's audit history and registered game servers
- the channels and roles Heir created
- Heir itself — the bot leaves your server
There is no undo. Heir re-verifies both your ownership and the typed name before deleting anything.
Transferring your server
If you transfer Discord server ownership, Heir follows automatically: the new owner gains owner-level access (management, deletion) within a few minutes, and the previous owner keeps only whatever roles they still hold. There is nothing to reconfigure.