Skip to main content

The dashboard

Chancery has a web dashboard at chancery.titanite.family. Everything on it can also be done with a slash command, and everything a slash command does can be done on it. See parity for why that matters.

The ? in the corner of any dashboard page links straight to the section of this page that covers it.

Signing in​

You sign in with Discord. Chancery never sees your password.

A server shows up in your picker when both are true:

  • Chancery is in that server, and
  • you are an administrator of it, or you hold the admin or staff role set on its General Settings page.

Change your roles in Discord and the list changes with them. There is nothing to grant on the dashboard itself.

If a server is missing, check in this order: is the bot actually in it; are you an administrator there; has someone set an admin role that you do not have. The third one catches most cases. Setting an admin role does not remove Discord administrators, but it does mean somebody without either will not get in.

Home​

What this server has switched on, and what has changed recently. The strip at the top counts modules on and off, and each chip jumps to that module.

General Settings​

The settings that apply whatever modules you have on: who counts as an admin, who counts as staff, and where the bot reports its own failures.

Every value here is the same one /config set writes. The full list, with the type and default of each, is in the settings reference.

Server administrators bypass all of these. The roles exist so somebody can run the bot without being handed Administrator.

Modules​

One page per module, and each page is a directory rather than a form: a list of categories, and the settings live one level down. Events has twelve settings and Tickets more, so a single page of every setting would be unreadable.

Each category row shows how many of its settings are filled in. If it says needs setup, something in there is required and empty. The module is on, but the part of it behind that row will not work until you fill it.

Switching a module off hides its commands in Discord. Nothing is deleted, and everything comes back when you switch it on again. See Modules.

Lists​

Some categories are a list rather than a set of settings: event types, games, ticket types, panels, forms, suggestion boards, tags, statuses, factions, stores, pipeline stages, divisions.

They all behave the same way. Search, add, click a row to edit it, arrows to reorder, bin to delete. Order matters for some of them: pipeline stages and form outcomes are a sequence and the order is what it means.

Most of these save for real. Three exceptions, for now:

  • Forms is read-only here. A form's questions live behind the versioned publish flow /form uses, not a field you can patch from a table. Build and publish forms with the command.
  • Ticket staff roles still shows placeholder rows. The real data is one row per ticket type, not a flat list of roles, and needs its own page — use /ticketadmin staffrole until it lands.
  • Stores, pipeline stages, checklist steps and divisions are fixed in the bot's code, not settings a server changes, so there is nothing here for them to save to. They display as reference, same as before.

A worked example: setting up Events from the web​

Turning on event hosting for a server, without touching a slash command:

  1. Sign in, pick the server from /servers.
  2. On Home, find the Events chip among the off modules and click it. This takes you straight to that module's page rather than making you hunt for it under Modules.
  3. The Events page opens as a directory: Announcement, Who can host, Cooldowns, Vote requests, Event log. Each its own category, each showing how many of its settings are filled in.
  4. Click Announcement. It says needs setup. Fill in the announcement channel and the hoster role, save.
  5. Back on the directory, Announcement now shows fully configured. The other categories are still optional; leave them for now.
  6. Go to Lists → Event types, click Add, create ssu / "Server Start Up". Do the same under Game presets for at least one game.
  7. That's it. /event start in Discord now has something to offer in its dropdowns, exactly as if an admin had run /config set and /eventadmin type add by hand.

Nothing here is dashboard-only. Anyone could've done the identical thing with slash commands instead, and either path leaves the server in the exact same state, because both call the same code underneath.

Templates​

A template is a message you build once and point things at. A ticket panel, a form panel and an event announcement are all "send this message", so they can all use the same template, and changing it changes every one of them.

Duplicate is on every row, because "the same panel with one line changed" is the thing people actually do.

Variables like ${user} and ${event.name} are filled in when the message is sent. The editor only offers the variables that make sense where the template is used, and will not save one it does not recognise.

Building a template and using it from a custom command or a button works today. Pointing a built-in feature's own message at one is the remaining gap. The event announcement, for instance, still posts its own built-in text regardless of what you set on its Announcement page. This is landing feature by feature; nothing is broken, the wiring on that specific sending path just isn't there for most features yet.

Components​

Buttons and select menus.

The important thing, and the thing people get wrong: this page does not build the button. The button's label, colour and emoji are set on the template. What you build here is a named set of actions, and the button points at it by name. One behaviour can therefore be shared by every button that uses that name.

An action is one of:

ActionWhat it does
Send messageReplies where the button was pressed. Can be visible only to them.
Send channel messagePosts into a channel you pick.
Edit messageReplaces the message the button is on.
Delete messageRemoves the message the button is on.
DM userSends it to them privately.
Open a formStarts one of this server's forms.
Open a ticketOpens a ticket of a type you pick.
Give / take away / toggle rolesChanges the presser's roles.

Role actions are limited on purpose. A button can only hand out roles below your own highest role, so it can never grant more than you hold. This is re-checked the moment the button is pressed, not just when you build it. Your own roles, or the button-builder's, can change afterwards, and the check runs against whoever is pressing it right now.

Open a form and open a ticket call straight into the same code /form and the ticket-opening flow already use, so eligibility rules, duplicate checks and the rest all still apply.

Commands​

Every Chancery command, with whether it is on and who can use it. Custom commands live here too: a name and a list of actions, the same actions the buttons use. Saving one registers it as a real slash command in this server — Discord can take a minute or two to show a brand new one in the picker after you save, the same delay /moduleadmin has always had. Renaming a command retires the old slash command and registers the new one; deleting it removes the slash command entirely. A name that collides with one of Chancery's own commands is refused when you try to save it.

Profile​

Who you are signed in as and which servers you can manage. Nothing is configured here.

Parity​

Anything you can do on the dashboard you can do in Discord, and the other way round. This is structural, not a promise we keep re-checking: both surfaces call the same code, so there is no path where one can write something the other cannot.

The practical consequence: if the dashboard is down, Discord still works. Nothing here is web-only.

One gap remains: a built-in feature's own announcement or notice (the event announcement is the current example) does not yet read the template you can point its message at from that feature's own page. Everything you build directly, a custom command, a button, a select menu, runs for real; this is narrower than it sounds, and is landing feature by feature.

Troubleshooting​

What you seeUsually means
A server missing from the pickerThe bot is not in it, or you hold neither Administrator nor the configured admin/staff role.
A category says needs setupA required setting inside it is empty. Open it; the empty field says what needs it.
A module's commands missing in DiscordThe module is off. Switch it on from its page or with /moduleadmin.
A setting saved on the web but nothing changedCheck the module is on. Settings are kept whether or not the module is enabled.
A brand new custom command isn't in Discord's picker yetGive it a minute or two. Discord itself takes a moment to show a newly registered command, the same as any new slash command.
A custom command or button does nothing when pressedThe template it points at was deleted, or (for a button) its label doesn't match a Components entry's name exactly. Case-sensitive.
A built-in feature's message doesn't reflect the template set for itExpected for now. See Templates. Most built-in features don't read that pointer yet; things you build directly (commands, buttons) do.
A role missing from a role action's listIt is at or above your own highest role. That is deliberate.
A saved custom command's name was refusedIt collides with one of Chancery's own commands. Pick a different name.
"Unknown config key" from /config setThe key does not exist. The autocomplete matches on the setting's name as well as its key. Type what it is called.