Chat bot
The chat bot posts in your chat on your behalf. It does two things: it answers custom ! commands your viewers type, and it posts timers — recurring messages that go out on their own while you’re live.
Turning it on
From Studio → Chat Bot:
- Switch on Enable the bot on my channel.
- Optionally give the bot a name and a colour for your channel. Leave either blank to use the platform default — the field shows that default as a placeholder.
- Save.
The bot’s badge is the same everywhere and isn’t something you can change. Your name can’t duplicate an existing account’s display name.
Custom commands
A custom command is a name plus a response. A viewer types !name and the bot replies with your text.
Create them under Commands → Add command. For each one you set:
- Command name — lowercase letters, digits and underscore, without the
!. You can type the!; it gets stripped. - Response — up to 200 characters.
- Who can use it — Everyone, Moderators, or Broadcaster only.
- Cooldown — the minimum gap between uses by anyone. The minimum is 1 second.
- Per-user cooldown — the gap between uses by the same viewer.
0means no per-user limit. - Enabled — turn a command off without deleting it.
You can have up to 50 commands.
Commands appear in the chat autocomplete as viewers type !, and only to the people allowed to run them. A disabled command doesn’t appear at all.
Names you can’t use
Built-in slash commands always win. You can’t create a command that collides with one — !ban, !timeout, !poll and so on are rejected when you save, with a message saying why. Because / and ! are separate namespaces, your commands can never shadow a moderator’s /ban.
Variables
You can put these in a response and the bot fills them in:
| Variable | Becomes |
|---|---|
$(user) | The display name of the viewer who ran the command. |
$(touser) | The first word after the command (a @ is stripped), or $(user) if they didn’t type one. |
$(channel) | Your channel’s display name. |
$(count) | How many times the command has run, including this one. |
$(uptime) | How long you’ve been live, e.g. 2h 15m. Shows offline when you’re not. |
$(random) | A number from 1 to 100. |
Some examples:
!discord → Join us at discord.gg/example!hug → $(user) hugs $(touser) <3!deaths → Deaths this stream: $(count)!uptime → Live for $(uptime)$(count) is what makes counter commands work — every time someone runs !deaths, the number goes up by one. It only counts uses that actually produced a reply, so a use blocked by a cooldown doesn’t increment it.
That list is the complete set. Anything else — including anything that would fetch a web page — is rejected when you save the command.
Timers
A timer is a message the bot posts on a schedule while you’re live. It never posts when you’re offline.
Create them under Timers → Add timer. For each one you set:
- Timer name — a label for you; viewers never see it.
- Message — up to 200 characters. The same variables work here.
- Every (seconds) — how often it may post.
- Minimum chat messages — how many chat lines must appear since the timer last posted before it may post again.
- Enabled.
You can have up to 10 timers.
The minimum-messages setting
This is the setting worth thinking about. A timer with a minimum of 0 posts on its schedule regardless of whether anyone is talking — which, in a quiet stream, means the bot talking to an empty room.
Set it to something like 10 and the timer only fires once ten people have said something since it last posted. The bot’s own messages don’t count toward that, so timers can’t keep each other alive.
Pacing
Two things keep the bot from flooding your chat:
- Only one timer per channel posts at a time, even if several come due together. The one that’s been waiting longest goes first.
- There’s a minimum gap between any two bot messages on your channel, shared by timers and command replies. It’s set platform-wide.
So a timer coming due at the same moment as a burst of !commands won’t produce a wall of bot text.
Moderating the bot
The bot can’t be banned or timed out — the buttons don’t appear on its messages. Its messages can be deleted like anyone else’s, so if a timer says something you’d rather remove, remove it.
It isn’t mentionable either: it won’t show up in the @ autocomplete, and mentioning it does nothing.
Its messages are ordinary chat messages in every other way — they appear in chat history, in Mod View, and in the chat replay on your VODs.
Blocked terms
Your channel’s blocked terms apply to what the bot says. If a response or timer message contains one, saving is rejected and the message names the term. It’s checked when you save rather than when the bot posts, so you find out immediately rather than discovering a silent command later.