Bot Commands
The Bot Commands view lets operators define global chat commands (available to every Lumio account out of the box) and inspect per-account overrides that accounts have customised on top of those globals. It also supports creating bot commands scoped to a single account.
Where to find it
Admin sidebar → Bot Commands (/bot-commands). Two tabs: Global Commands and Account Commands.
Quick start
- Open Admin → Bot Commands on the Global tab.
- Click Create Global Command.
- Fill in the command name (no
!prefix), description, platforms, minimum role, cooldowns, and pick a Response Type: Text, Template, or Automation. - For Text / Template, enter the response text (template placeholders like
\{user.name\}are allowed in Template mode). For Automation, paste the target automation UUID. - Click Save. The command is live across all accounts immediately.
Detailed walkthrough
Global tab
Lists every command where the scope = global. Columns: command name (!name), description, response type, platforms, min role, cooldowns, enabled flag.
Row actions:
- Edit Command — opens the command editor pre-filled.
- Delete Command — prompts for confirmation ("Are you sure you want to delete the command !{name}?").
Account tab
Switches scope to per-account. Adds a search bar (search by account name or ID). For each account the admin can see the bot commands and their overrides.
Command editor
Fields:
- Command Name — string without leading
!. - Description — free text.
- Response Type — one of
text,template,automation. - Response Text — for
text/template. - Automation ID — UUID when Response Type is
automation. Inline UUID validation ("Invalid UUID format. Expected: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"). - Platforms — multi-select: twitch, youtube, kick, trovo, discord.
- Minimum Role — viewer / moderator / vip / broadcaster (platform-dependent).
- Global Cooldown (s) and Per-User Cooldown (s) — integer seconds.
- Enabled — boolean toggle.
Create vs update
- Create —
POST /api/bot-commandswith the full body. - Update —
PUT /api/bot-commands/\{id\}with the mutated body. - Delete —
DELETE /api/bot-commands/\{id\}(confirm dialog first).
Account-scoped commands and overrides
Accounts can override global commands (for example, changing the response text) without forking the command. The override lives in a separate table and is fetched alongside the global when the bot dispatches. The admin UI exposes this under the Account Commands tab; the underlying endpoints are:
POST /v1/bot-commands/\{id\}/override— set or update an override.DELETE /v1/bot-commands/\{id\}/override— clear the override.
Common scenarios
- Ship a new !lurk command to everyone — Create Global Command, Response Type Text, response
"\{user.name\} is now lurking", enabled. - Quickly disable a misbehaving global — open it in the editor, toggle Enabled off, Save. Accounts won't see it.
- Spot which accounts customised a command — open the command's detail via the overrides endpoint (
adminBotCommandOverridesGraphQL) and review each account's override. - Wire a command to a complex automation — set Response Type to Automation and paste the UUID from the account's Automation Builder.
Permissions
| Action | Permission |
|---|---|
| View global / account commands | bot-commands:read |
| Create a command | bot-commands:create |
| Edit a command | bot-commands:edit |
| Delete a command | bot-commands:delete |
Dashboard entry requires admin:access. System admins implicitly hold every permission above.
API
| UI action | GraphQL | REST |
|---|---|---|
| List global commands | adminBotCommands(scope: GLOBAL) | GET /v1/admin/bot-commands?scope=global |
| List per-account commands | adminBotCommands(accountId: X) | GET /v1/admin/bot-commands?account_id=X |
| List account overrides for a global | adminBotCommandOverrides | — |
| Create global command | adminCreateGlobalCommand | POST /v1/admin/bot-commands |
| Update command | adminUpdateBotCommand | PUT /v1/admin/bot-commands/\{id\} |
| Delete command | adminDeleteBotCommand | DELETE /v1/admin/bot-commands/\{id\} |
| Account override set | — | POST /v1/bot-commands/\{id\}/override |
| Account override clear | — | DELETE /v1/bot-commands/\{id\}/override |
Tips & gotchas
- Automation UUIDs are account-specific. A global command that calls an automation only fires for accounts that own that automation — typically you want Response Type Text or Template for globals.
- Platforms without the required chat scopes (for example, a disabled Trovo bot) silently skip dispatch; the command stays listed but never runs.
- Template placeholders follow the bot's template engine; see
crates/lo-bot-modulesdocs for the full list. - Editing a global with active account overrides leaves the overrides intact — they still apply on top of the new base.
Related
- Bot Control — runtime pause / resume of bots
- Providers — kill-switches that disable entire bot platforms
- Discord Guilds — Discord-specific routing for slash commands