Bot
Chat commands, timers, auto-moderation, custom roles, and built-in system commands for Twitch and YouTube.
Bot
The Bot plugin adds chat commands, timers, auto-moderation, and custom roles for Twitch and/or YouTube.
Requirements
Connect at least one platform:
The Bot plugin is configured when either platform is connected. You can use both together.
Pages
Open Bot in the sidebar:
| Page | Description |
|---|---|
| Overview | Connection status, Twitch bot account, bot settings, summary counts |
| Commands | Custom chat commands with handler chains |
| Timers | Scheduled actions on an interval |
| Moderation | Custom auto-mod rules |
| Roles | Custom user roles for command permissions |
Plugins can also register commands programmatically via app.commands.create() — see Plugin API — Chat commands.
Bot settings
| Setting | Default | Description |
|---|---|---|
| Bot enabled | on | Master toggle for commands and timers |
| Command prefix | ! | Prefix that triggers commands |
| Auto-moderation | on | Run moderation rules on chat messages |
| Send responses as bot account | on | Use the connected Twitch bot account for command replies when available |
| Twitch / YouTube chat | on | Per-platform toggles |
Twitch bot account
For Twitch, you can connect a separate bot account so command responses appear from a dedicated bot user (similar to Nightbot or StreamElements) instead of your streamer account.
Your main Twitch account must stay connected via the Twitch plugin for chat listening, EventSub, and moderation. The bot account is used only to send messages.
Setup
- Connect your streamer account on Plugins → Twitch (if not already connected).
- Create a separate Twitch account for the bot.
- Mod the bot in your channel:
/mod YourBotName - Open Bot → Overview.
- Click Connect bot account and authorize the bot Twitch account.
- Keep Send responses as bot account enabled.
If messages still fail, disconnect and reconnect the bot account so Twitch grants the latest chat scopes.
YouTube
YouTube live chat always sends messages as the connected channel. There is no separate bot identity on YouTube, so the Bot plugin does not offer a second account link for YouTube.
Commands
Custom commands work like Actions handler chains: aliases, permissions, cooldowns, platform sources, and a top-to-bottom handler chain.
Allowed roles include platform roles (Everyone, Mod, Broadcaster, VIP, Subscriber) and custom roles from Bot → Roles.
Chat messages matching {prefix}{command} are processed after moderation and before built-in commands.
Command arguments
Use <arg> placeholders in the command pattern:
| Pattern | Example chat | Variables |
|---|---|---|
setalias <target> | !setalias CoolUser | {target} = CoolUser |
say <message> | !say hello world | {message} = hello world |
The last <arg> captures the rest of the message. Earlier arguments match one word each.
Cooldowns
Each command can have optional cooldowns:
| Field | Description |
|---|---|
| Global cooldown | Minimum time between any use of the command (all viewers) |
| User cooldown | Minimum time before the same viewer can use it again |
Leave a field empty for no cooldown on that scope. Cooldown state is kept in memory and resets when the app restarts. When a command is blocked by cooldown, the bot replies in chat with the command name and how long is left.
Built-in commands
| Command | Description |
|---|---|
!commands | Lists enabled custom commands |
!uptime | Stream uptime |
!bot | Bot status and prefix |
Custom commands with the same name override built-ins.
Organizing commands
The Commands page works like Actions: commands are grouped, reorderable, and bulk-editable.
- Groups — assign a group per command in the edit form, or move multiple commands at once with Edit selected
- Drag and drop — reorder commands within a group, move them between groups, or reorder groups
- Collapse — collapse groups to focus on one section; state is remembered across sessions
- Clone — duplicate a command (including handlers) from the command card or the edit header
- Enable / Disable — select commands and use the toolbar (same pattern as Actions); there is no Enabled toggle in the edit form
- Export / Import — share commands as a JSON file
Export and import
Use Export all (or Export selected when commands are selected) to download a JSON file of your commands. Import always creates new commands — existing ones are never replaced.
- Plugin-owned commands (for example seeded by Rankings) are not included in exports.
- Handlers from plugins that are not installed still import, but show as unavailable until those plugins are available.
Timers
Timers run handler chains on a random interval between min and max seconds (minimum 30s). Optional minimum chat activity and online-only mode.
Handlers receive timerId, name, platforms, and firedAt. Twitch and YouTube Send Message handlers work without live chat context.
Moderation
Rules use a condition tree (AND/OR/negate). Actions: delete message, timeout (10 min), warn (Twitch only).
Moderators, broadcasters, and owners are exempt by default.
Using moderation in Actions
| Trigger | Description |
|---|---|
| Moderation rule | Fires when a saved rule matches (exempt roles from the rule are not applied) |
| Chat message | Fires when a custom condition tree matches |
Browse IDs: Bot triggers.
Roles
Custom roles are lists of users you can use as command permissions (permission value role:<id>). Manage them under Bot → Roles, or with handlers in Actions:
| Handler | Description |
|---|---|
| Add user to role | Add a user by username or from trigger data |
| Remove user from role | Remove a user from a role |
| User in role | Write whether the user is a member into an action variable |
These are separate from command layout groups on the Commands page (those only organize the UI).
Browse IDs: Bot handlers.