Nightbot Commands: The Complete Setup Guide
Every Nightbot command in one place — the default commands you get for free, how to build custom !commands from chat or the dashboard, the variables that make them dynamic, and the timers and cooldowns that stop them becoming spam.

What Nightbot Commands Actually Are
Nightbot commands are text triggers your chat can type to get an instant, pre-written reply. A viewer types !discord, Nightbot posts your invite link. That's the whole mechanic, and it has been the backbone of Twitch chat since 2013.
Nightbot is a cloud-hosted bot: you never install anything, you just authorise it against your channel and it joins your chat as a regular user with moderator powers. Everything is configured at nightbot.tv or from chat itself, and it splits into two groups that behave very differently.
Default commands ship with the bot and control Nightbot itself — adding commands, managing filters, running polls. Custom commands are the ones you write: !socials, !specs, !lurk and the rest of your channel's personality. This guide covers both, then looks at where Nightbot's model runs out of road — mainly Kick, which it doesn't support at all.
Nightbot's Default Commands
These come switched on the moment Nightbot joins your channel. Most are moderator-only management tools rather than things you'd advertise to viewers, and every one of them can be renamed, restricted or disabled from the Commands page of the dashboard.
| Command | What It Does | Default User Level |
|---|---|---|
| !commands | Returns a link to the public list of every custom command on your channel, and lets mods add, edit and delete them. | Everyone (management is mod-only) |
| !filters | Turns Nightbot's spam filters on and off without opening the dashboard. | Moderator |
| !regulars | Adds and removes viewers from the regulars list, which is its own user level for command permissions. | Moderator |
| !songs | Controls the song request queue — skipping, clearing, opening and closing requests. | Everyone (control is mod-only) |
| !title | Reads back the current stream title, or sets a new one if a mod passes text after it. | Everyone to read, mod to set |
| !game | Reads back the current category, or changes it when a mod passes a game name. | Everyone to read, mod to set |
| !poll | Creates and reports on a Strawpoll from chat. | Moderator |
| !winner | Picks a random active chatter — the built-in giveaway draw. | Moderator |
| !uptime | Posts how long the current broadcast has been live. | Everyone |
| !followage | Tells a viewer how long they have followed the channel. | Everyone |
| !accountage | Posts how long a viewer's platform account has existed — useful for spotting fresh troll accounts. | Everyone |
Nightbot's dashboard lists these under Commands → Default. Availability and user levels can change — the dashboard is always the source of truth.
The one worth showing viewers is !commands, which returns a link to a public web page listing every custom command on your channel. Pin that link in a panel and you stop answering "what commands do you have?" for the rest of your streaming career.
How to Add a Custom Nightbot Command
There are two routes and they write to the same place. Chat is faster mid-stream; the dashboard gives you every option in one screen.
- 1Sign in at nightbot.tv with the platform account you stream from, then use Join Channel so Nightbot enters your chat.
- 2Give Nightbot moderator status in your channel — without it, links and longer messages get filtered before anyone sees them.
- 3Open Commands → Custom in the dashboard and choose Add Command.
- 4Set the Command field to your trigger, including the exclamation mark, for example !discord.
- 5Write the Message — the exact line Nightbot will post. Keep it to one line so it doesn't dominate chat or your overlay.
- 6Pick a User Level: Everyone for viewer-facing commands, Moderator for anything that changes channel state.
- 7Set a Cooldown in seconds. Thirty is a good default for informational commands.
- 8Add an Alias if you want a second trigger to fire the same response, then save and test it in your own chat.
Nightbot must be modded in your channel to post links or long messages reliably. If it joins but never replies, that's almost always the reason.
Adding Commands From Chat
The chat syntax is quicker once you know it, and it's how most streamers add commands live while someone is asking a question. Every one of these is moderator-level by default.
| Type In Chat | What Happens |
|---|---|
| !addcom !trigger response | Creates a new custom command with that trigger and response. |
| !addcom -ul=mod !trigger response | Creates the command restricted to moderators and above. |
| !addcom -cd=60 !trigger response | Creates the command with a 60-second cooldown. |
| !editcom !trigger new response | Rewrites the response of an existing command. |
| !editcom -ul=everyone !trigger | Changes the user level without touching the response text. |
| !delcom !trigger | Deletes the command permanently. |
| !commands | Posts the public link listing every command on the channel. |
A worked example: typing !addcom -cd=30 !discord Come hang out with us: discord.gg/yourinvite creates a !discord command with a 30-second cooldown. Change the wording later with !editcom !discord …, and remove it with !delcom !discord. If you'd rather see the finished wording before you commit, our !discord command guide has copy-ready responses.
Nightbot Variables: Making Commands Dynamic
A static response is fine for a Discord link. Variables are what turn a command into something that reacts to who typed it, what they typed and what's happening on your stream. Nightbot writes them as $(name).
| Variable | What It Returns | Typical Use |
|---|---|---|
| $(user) | The display name of whoever typed the command. | "$(user) is now lurking" for a !lurk response. |
| $(touser) | The name typed after the trigger, falling back to the sender's own name. | Interaction commands like !hug and !highfive. |
| $(channel) | Your channel name. | Signing off a response with the channel's own name. |
| $(query) | Everything the viewer typed after the trigger, as one string. | Passing a search term into an API lookup. |
| $(1) $(2) $(3) | Individual words after the trigger, positionally. | Commands that take two arguments, like a duel or a versus line. |
| $(count) | A number that increases by one every time the command runs. | Death counters, fail counters, "asked about my chair" counters. |
| $(urlfetch URL) | The plain-text body of a web request, pasted straight into chat. | Community APIs for followage, watchtime or now-playing. |
| $(querystring) | The viewer's input, URL-encoded so it's safe inside a link. | Wrapped inside $(urlfetch) when passing user input to an API. |
| $(eval …) | The result of a small JavaScript expression. | Random picks, simple maths, formatting other variables. |
| $(time ZONE) | The current time in a named timezone. | A !time command for an international audience. |
| $(twitch CHANNEL) | Live status and stream details for a Twitch channel. | Shoutout commands that name the other streamer's last category. |
| $(weather LOCATION) | A short weather summary for a place. | IRL streams that get asked about the weather constantly. |
Variables can be nested — $(urlfetch) commonly wraps $(querystring) so user input is safely encoded into the URL.
Two of these do most of the heavy lifting. $(touser) is how interaction commands work: it returns the name the viewer typed after the trigger, and falls back to the viewer's own name if they typed nothing — which is exactly the behaviour you want for !hug and its variants. $(urlfetch) is how Nightbot does anything it can't do natively: it calls an external API and pastes the plain-text response into chat, which is the standard trick behind community !followage and !watchtime commands.
Worth knowing before you lean on it: a $(urlfetch) command is only as reliable as the third-party API behind it. Free community APIs go down, get rate-limited or quietly disappear, and when they do your command starts posting error text to chat. If a command matters to your channel, prefer a bot that computes the value itself over one that borrows it.
Cooldowns, User Levels and Aliases
Three settings decide whether your commands feel useful or feel like spam. All three sit on the same Add/Edit Command screen.
Cooldown
How long before the command can run again. Nightbot applies it channel-wide, not per user, so one person firing it locks it for everyone until the timer clears.
User Level
Who is allowed to run it — Everyone, Regular, Subscriber, Moderator or Owner. Regular is Nightbot's own tier: a list of trusted viewers you maintain with !regulars.
Alias
A second trigger that runs the same response. Aliases are how you cover the spelling viewers actually type: !socials, !social and !links pointing at one message.
Nightbot's cooldown is channel-wide rather than per-user: once anyone fires !uptime, nobody can fire it again until the timer clears. That's a blunt instrument, but it does stop the "five people spam the same command" problem that ruins a chat overlay during a busy moment. Thirty seconds is a sensible starting point for informational commands and ninety for anything fun.
Nightbot Timers: Commands That Fire Themselves
A timer posts a message on a schedule without anyone typing anything — your socials, your Discord, the fact that you're doing a giveaway at the top of the hour. Nightbot gates them behind two conditions so they can't talk to an empty room.
- 1Open Timers in the Nightbot dashboard and choose Add Timer.
- 2Write the message, or point the alias field at an existing command so the wording lives in one place.
- 3Set the interval in minutes — five is the minimum Nightbot accepts, and 15 to 30 is kinder to your chat.
- 4Set the chat-lines threshold so the timer only fires when the room has actually been talking.
- 5Save, then watch one full rotation live before you add a second timer.
Nightbot enforces a minimum interval of five minutes. Three or four timers on a long rotation reads as helpful; eight timers reads as an ad break.
The chat-lines threshold is the setting people skip and then regret. It tells Nightbot to only post if that many messages have gone by since the last timer fired, which means a quiet stream doesn't end up with your bot talking to itself. Set it to at least five and your timers will look like they're responding to an active chat rather than running on a clock.
A neat trick: point a timer at an existing command by using the alias field, so your !socials wording lives in exactly one place. Change the command, and the timer's message changes with it. Our !socials command guide covers how to format a multi-link response so it doesn't get truncated.
Where Nightbot Stops: The Kick Gap
Nightbot is genuinely good at what it does, and for a single-platform Twitch streamer it may be all you ever need. The honest limits are these.
- No Kick support — Nightbot covers Twitch and YouTube Live, so a Kick simulcast is left without a bot.
- Cooldowns are channel-wide rather than per-user, so you can't let each viewer run a fun command once a minute.
- Anything Nightbot can't calculate itself needs $(urlfetch) and a third-party API, which is a dependency you don't control.
- It's a chat bot only — no overlays, no clipping, no multistreaming, and no conversational AI to fill a quiet room.
- Command lists live per platform, so a Twitch list and a YouTube list are maintained separately even inside Nightbot.
The Kick gap is the one that bites hardest in 2026. If you simulcast to Twitch and Kick, Nightbot covers half your audience — the Kick half types !discord and gets silence. There's no configuration that fixes it, because the platform simply isn't supported.
Nightbot vs StreamUps Commands
StreamUps runs custom !commands too, so it's a fair comparison rather than an apples-to-oranges one. Here's where each is stronger.
| Area | Nightbot | StreamUps |
|---|---|---|
| Custom !commands | Yes, with variables and aliases | Yes, with variables and aliases |
| Platforms | Twitch, YouTube Live | Twitch, YouTube Live, Kick |
| One list across platforms | Configured per platform | One command answers everywhere you're live |
| Spam and link filtering | Deep, mature, highly configurable | Basic AI flagging |
| Song requests | Built in | Now-playing via !song |
| Conversational AI | Not available | Included |
| Merged chat overlay | Not available | Included |
| Multistreaming | Not available | Included |
| Cost | Free, no paid tier | Free tier plus Pro |
The short version: Nightbot wins on moderation depth and a decade of community-written command recipes. StreamUps wins on platform coverage — one command list that answers on Twitch, YouTube Live and Kick at once — and on everything that isn't a command, since the same account also handles AI chat, merged chat overlays and multistreaming. Nothing stops you running both in the same chat, and plenty of streamers do exactly that.
If you're weighing up a switch rather than a supplement, the full breakdown lives on our Nightbot alternative page, and you can browse the whole chat commands library to see what a finished command list looks like.
Commands Worth Adding First
If you're starting from an empty command list, these five earn their place on almost every channel — each one links to a full setup guide with copy-ready responses for Nightbot and beyond.
!lurkLurk
Let viewers announce they're watching quietly without leaving the stream.
!soShoutout
Give another streamer an on-stream shoutout with a link to their channel.
!discordDiscord
Drop your community Discord invite into chat on demand.
!socialsSocials
Share all of your social media links in a single chat message.
!uptimeUptime
Tell chat how long the stream has been live at any moment.
Nightbot Commands FAQ
How do I add a command to Nightbot?
Why isn't Nightbot responding to my commands?
How many commands can Nightbot have?
Does Nightbot work on Kick?
What is the difference between $(user) and $(touser) in Nightbot?
Can I use Nightbot and another chat bot at the same time?
How do I make a Nightbot command that counts things?
What is the minimum interval for a Nightbot timer?
Related Guides & Tools
Set Up Chat Commands in Minutes
Add !lurk, !so, !discord, and more to your Twitch, YouTube, or Kick chat with StreamUps. No bot hosting, no code—just pick your commands and go live.