Bot Control
Bot Control is the runtime switchboard for every chat / social bot Lumio runs on behalf of accounts. It surfaces each account × platform combination and lets operators pause or resume the bot without touching account-level configuration. Use it for incident response, platform rate-limit flare-ups, or when debugging a single account's bot behaviour.
Where to find it
Admin sidebar → Bot Control (/bot-control).
Quick start
- Open Admin → Bot Control.
- Filter by platform (All / Twitch / YouTube / Kick / Trovo / Discord) and/or search by account name or ID.
- Locate the row for the misbehaving bot.
- Click Pause to stop it immediately, or Resume to bring it back.
- Watch the status badge update: Active, Paused, or No Connection.
Detailed walkthrough
Status badges
Each row shows one of three states:
- Active — the bot is connected and processing events.
- Paused — the bot connection exists but is explicitly paused by an admin. No messages are sent or received.
- No Connection — the account has no bot connection for this platform. Pause / Resume are hidden.
Filters
- Search — debounced match against account name or account ID.
- Platform — dropdown: All Platforms, Twitch, YouTube, Kick, Trovo, Discord.
Row columns
Account name, platform, current status, last connection heartbeat, action button. Rows without a connection show a disabled badge and no button.
Pause / Resume
The UI calls a toggle endpoint that flips the paused flag on the bot connection row. The change is distributed via Redis pub/sub so the relevant bot worker picks it up within a few seconds.
Common scenarios
- Twitch platform incident — filter by
twitch, select-all is not supported in the UI; pause accounts one by one or use the Providers page to flip the global kill-switch. - Customer-reported bot spam — find the account, pause it on the affected platform, investigate bot commands / modules.
- Resume after maintenance — filter by platform, resume each paused row.
- Audit which accounts have a Discord bot connected — filter by
discord; rows with Active or Paused have a connection, No Connection does not.
Permissions
| Action | Permission |
|---|---|
| View bot statuses | bot-control:read |
| Pause / resume a bot | bot-control:edit |
Dashboard entry requires admin:access. System admins hold these implicitly.
API
| UI action | GraphQL | REST |
|---|---|---|
| List bot statuses (filtered) | adminBotStatuses | GET /v1/admin/bot-control/statuses |
| Pause / resume | adminToggleBotForAccount | PUT /v1/admin/bot-control/\{account_id\}/\{platform\} |
The frontend calls its own Next.js proxy routes at /api/bot-statuses and /api/bot-statuses/toggle, which forward to the REST admin endpoints above.
Tips & gotchas
- Pause is per account × platform — not global. For a platform-wide halt, toggle the kill-switch on Providers instead.
- Pausing does not revoke OAuth tokens. The bot connection stays authenticated and resumes instantly when toggled back.
- A bot with No Connection cannot be paused because there is nothing to pause. It has to be connected first from the account's side.
- The toggle is idempotent — calling pause on an already-paused bot is a no-op.
Related
- Providers — platform-level kill-switches and global bot identity
- Bot Commands — command registry executed by these bots
- Discord Guilds — Discord-specific guild-to-account mapping