---
title: Custom commands
description: Your own chat commands - with variables, random picks, response lists, permissions, and cooldowns.
---

Custom commands live 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.
- **Cooldown** - 0 to 3600 seconds, with a scope of **Global** (one timer for the whole chat) or **Per user**.

{/* SCREENSHOT /images/chat-bot/custom-command-editor.png : The custom command editor open with a filled-in example command - name, response using a {user} variable, permission and cooldown set. Uncomment the Frame below once taken. */}
{/* <Frame caption="The command editor - variables, permissions, cooldowns.">
![The custom command editor](/images/chat-bot/custom-command-editor.png)
</Frame> */}

## Variables

| Variable | Becomes |
| --- | --- |
| `{user}` | The name of whoever ran the command |
| `{channel}` | Your channel name |
| `{pick:a\|b\|c}` | One of the options, at random |
| `{list:name}` | A random line from one of your response lists |

So `Hey {user}, {pick:good luck|no refunds|welcome aboard}!` works exactly how you'd hope.

## 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.
- Responses that would start with `/` or `!` are refused - no, viewers can't make your bot run `/ban`.
