Settings reference
How command toggles are stored and enforced.
| Setting or field | Type | Default | What it does |
|---|---|---|---|
GuildCommand.command | string | none | Slash command name, for example ban or giveaway. The API accepts ^[\w-]{1,32}$. |
GuildCommand.enabled | boolean | true | Whether this command may run in the guild. Missing row also means enabled. |
GuildCommand.guildId | snowflake | current guild | The server this override belongs to. A unique constraint keeps one row per command per guild. |
GET /api/commands/[guildId] | API response | live Discord commands plus stored rows | Returns { command, description, enabled }[], sorted by command name. |
PATCH /api/commands/[guildId] | { command, enabled } | none | Upserts the per-guild override after access checks. |
| Disabled interaction reply | ephemeral message | n/a | If enabled is false, the bot stops before command execution and replies with the disabled message. |
Autocomplete
The disable check is in the chat-input command path. Autocomplete handlers for /shop buy and /rss remove may still answer choices, but the actual command execution is blocked when disabled.
The command router also handles context menus and components, but the files documented here are slash commands under packages/bot/src/commands/**. Unknown slash commands are logged and otherwise ignored.
