Custom commands
Your own chat commands - with variables, random picks, response lists, permissions, and cooldowns.
Custom commands are on the Chat bot page under the Custom tab. Hit Add command and fill in:
- Command name - lowercase letters, numbers,
_and-. Don’t type the!, it’s added for you. - Response - what the bot says. Variables below.
- Aliases - extra triggers, comma or space separated.
- Permission - Everyone, Subscribers, or Moderators. Checked from the viewer’s badges on whichever platform they typed in, so it works the same in Twitch and Kick chat.
- Cooldown - 0 to 3600 seconds, with a scope of Global (one timer for the whole chat) or Per user.
- Show on your tip page’s command list - whether it appears at
/commandson your tip page (the!commandsbuilt-in links there). Off = still works in chat, just not listed. - What viewers see (optional) - a plain one-liner for that list, like “Ask the bot anything”. See The tip page listing.
- Platforms - shown once you have both Twitch and Kick connected: a switch per platform, so a command can answer in one chat and stay silent in the other. Both on by default; with a single platform connected everything simply runs there.
Variables
Curly braces are blanks the bot fills in when it speaks. The basics:
| Variable | Becomes |
|---|---|
{user} |
The name of whoever ran the command |
{touser} |
Who the command is aimed at - the first word typed (minus any @), or the viewer themselves |
{args} / {arg:1} … {arg:9} |
Everything the viewer typed after the command / the Nth word of it |
{pick:a|b|c} |
One of the options, at random |
{random:1-100} |
A random whole number in the range |
{list:name} |
A random line from one of your response lists |
{if:…|yes|no} |
One text or the other, depending on a comparison |
{count} |
A counter that bumps every time the command runs |
{uptime}, {game}, {title}, {viewers} |
Live facts about your stream |
{ai:prompt} |
A one-line reply from an AI model |
So Hey {user}, {pick:good luck|no refunds|welcome aboard}! works exactly
how you’d hope - and variables nest, so
{if:{random:0-1}==1|Heads|Tails} does too.
That’s a taste. The full list, with a page for each, is in
Variables - including {repeat:}, {followage},
{emote}, {7tv}, {urlfetch:} and the URL encoders.
The tip page listing
Your tip page has a /commands page listing every enabled command, so viewers
can see what’s available without asking. For custom commands it shows the
What viewers see text if you’ve written one. If you haven’t, it shows your
response with each variable turned into a label - Hey {user}: {list:quotes}
reads as “Hey your name: random line · quotes”.
Two things are never shown there, whatever you wrote: the address inside
{urlfetch:} and the prompt inside {ai:}. A viewer only sees “live data” or
“AI reply”. If you’d rather a command wasn’t listed at all, switch off Show on
your tip page’s command list in the editor. It keeps working in chat.
Response lists
For long random pools, make a Response list (third tab): give it a name, paste one line per item, and reference it from any command with {list:name}. The bot picks a random line each time. One list can feed as many commands as you like.
Good to know
- Built-in commands win: if you name a custom command
!queue, the built-in answers. - Each command has an enable toggle, so you can bench one without deleting it.
- Commands work the same in Twitch and Kick chat.
{uptime},{title},{game}and{viewers}read the channel the message came from (or any channel you name -{viewers:kick},{game:twitch:somebody}). A few variables have no Kick source yet ({accountage},{emote},{emotes},{bttv},{ffz}) and render empty there - the variables index has the full table. - Responses that would start with
/or!are refused - no, viewers can’t make your bot run/ban.