Quick answer: the best fun Nightbot commands are short, easy to understand, and quiet enough that they do not take over chat. The 12 examples below use Nightbot's documented custom-command fields and built-in variables. Each one includes a copy-ready message, a sensible starting user level, and a cooldown.
Review scope: Stream Mentor rebuilt this guide on July 24, 2026 from Nightbot's current command, variable, timer, and setup documentation. The Nightbot syntax was checked against those primary sources, and the five fixed $(eval) JavaScript bodies were executed locally. We did not post the commands to Nightbot or test them in a live channel. Add one command at a time and test it in a quiet chat before making it available to everyone.
Before copying a command
Nightbot has default commands, which the service provides, and custom commands, which a channel owner or moderator creates. The ideas on this page are custom commands. For the complete current default list, setup steps, filters, and operational controls, use our Nightbot commands guide.
To add an example in the dashboard:
- Sign in at nightbot.tv with the streaming service you intend to use.
- Make Nightbot join the channel by following its current setup instructions.
- Open Commands → Custom → Add Command.
- Copy the command name into Command and the response into Message.
- Choose the recommended user level and cooldown, save, and test it once.
Nightbot's custom-command documentation says command names cannot contain spaces. It also explains that the user level controls who may run the command and the cooldown is the minimum time between uses.
What the variables mean
| Variable | What Nightbot documents | Important limit |
|---|---|---|
$(user) | The name of the person who called the command | It identifies the caller; it does not select somebody else |
$(touser) | The first argument after the command | If no argument is supplied, it falls back to the caller |
$(count) | How many times that custom command has been used | It is a command-use counter, not a verified win, death, or donation total |
$(channel) | The current channel name | It is mainly useful inside another variable |
$(twitch ...) | Current information from a Twitch profile | It is Twitch-specific and can return different information while a channel is offline |
$(eval ...) | A synchronous JavaScript expression evaluated by Nightbot | Nightbot limits execution to one second and warns about inserting raw user input |
The examples below use only editor-written JavaScript and fixed lists inside $(eval). They do not place $(query) or another viewer-controlled string inside JavaScript. Nightbot's Eval documentation explicitly warns that raw variable substitution can become an input-injection problem, especially when another bot responds to command-like output.
12 fun Nightbot commands to copy
The cooldowns are conservative starting points, not universal rules. Increase them when several people trigger the same response, or restrict a noisy game to Regulars. The exact documented user-level values include everyone, subscriber, regular, twitch_vip (Twitch accounts only), moderator, and owner.
1. High-five command
Command: !highfive
Message:
/me $(user) gives $(touser) a high-five. $(count) high-fives and counting.
Start with: Everyone, 30-second cooldown.
A viewer can type !highfive anothername. Nightbot documents both $(touser) and the $(count) counter with a similar hug example. The /me response prefix is supported by Nightbot on Twitch; remove it for YouTube, Trovo, or SOOP.
2. Lurk command
Command: !lurk
Message:
$(user) is lurking. No reply needed — enjoy the stream!
Start with: Everyone, 60-second cooldown.
This response acknowledges somebody who chose to announce a lurk without pressuring silent viewers to speak. Do not automatically call out people who never used the command.
3. Welcome-back command
Command: !back
Message:
Welcome back, $(user)! Chat kept your seat warm.
Start with: Everyone, 30-second cooldown.
This is deliberately a separate command rather than an automatic greeting. Automatic arrival messages can expose lurkers and become noisy in an active channel.
4. Good-game command
Command: !gg
Message:
GG from $(user)! Good luck in the next round.
Start with: Everyone, 30-second cooldown.
Keep the response short enough that it complements normal chat instead of becoming a repeated banner.
5. Moderator shout-out command
Command: !so
Message:
Shout-out to $(touser): https://twitch.tv/$(touser)
Start with: Moderator, 15-second cooldown. Platform: Twitch.
A moderator can type !so channelname. Keep this moderator-only so viewers cannot turn the bot into a stream of arbitrary profile promotions. Check the generated link before relying on it; $(touser) simply prints the first argument and does not verify that the account exists.
6. Stream-uptime command
Command: !uptime
Message:
Stream uptime: $(twitch $(channel) "{{uptimeLength}}")
Start with: Everyone, 30-second cooldown. Platform: Twitch.
This is the exact variable pattern in Nightbot's current Twitch-variable documentation. !uptime is not listed as a built-in default command, so create it as a custom command. Test the offline response as well as the live response.
7. Streamer's local-time command
Command: !time
Message:
Local time for the streamer: $(time Europe/Belgrade "dddd, MMMM Do, h:mm a z")
Start with: Everyone, 60-second cooldown.
Replace Europe/Belgrade with a timezone from Nightbot's supported timezone list. Prefer a region-based name over a fixed offset so daylight-saving changes are handled correctly. Share a broad timezone, not a private address or precise location.
8. Six-sided die
Command: !roll
Message:
$(user) rolled a $(eval Math.floor((Math.random() * 6) + 1)).
Start with: Everyone, 30-second cooldown.
Nightbot's Eval documentation uses the same Math.random() pattern for a number from 1 through 100. This version changes the upper bound to six. Treat it as a lightweight chat toy, not a secure or auditable draw.
9. Coin flip
Command: !coin
Message:
$(user) flipped $(eval ['heads','tails'][Math.floor(Math.random() * 2)]).
Start with: Everyone, 30-second cooldown.
The expression chooses from a fixed two-item list and does not use viewer input. Do not use it to decide a paid contest, wager, or anything that requires verifiable randomness.
10. Magic 8-ball
Command: !8ball
Message:
$(eval const replies = ['Yes.','No.','Ask again later.','Probably.','Very unlikely.','The 8-ball is buffering.']; replies[Math.floor(Math.random() * replies.length)];)
Start with: Everyone, 45-second cooldown.
This follows Nightbot's documented 8-ball structure but uses an original, shorter response list. It does not echo the viewer's question into JavaScript. Keep answers obviously playful and avoid medical, legal, financial, or safety decisions.
11. Random in-game challenge
Command: !challenge
Message:
Chat challenge: $(eval const prompts = ['use starter gear for one round','take the scenic route','let chat name the next loadout','switch roles next round','play one round without fast travel']; prompts[Math.floor(Math.random() * prompts.length)];)
Start with: Regulars, 90-second cooldown.
Edit the fixed list for the game and the streamer's boundaries. Remove any prompt that breaks the game's rules, disrupts teammates, encourages harassment, or creates a real-world safety risk. The streamer can always decline a result.
12. Stream fortune
Command: !fortune
Message:
$(user), your stream fortune is: $(eval const fortunes = ['a clutch moment approaches','the next queue will be kinder','hydrate before the boss fight','a rare drop is closer than it looks','chat believes in the comeback']; fortunes[Math.floor(Math.random() * fortunes.length)];)
Start with: Everyone, 60-second cooldown.
The replies are fixed and positive. Customize them with channel-specific jokes only when a new viewer can understand them and none targets a real person.
Recommended permissions and cooldowns
| Command type | Starting user level | Starting cooldown | Why |
|---|---|---|---|
| Short informational response | Everyone | 30–60 seconds | Useful to new viewers but easy to repeat |
| Random chat game | Everyone or Regulars | 45–90 seconds | Fun output becomes clutter when several people trigger it |
| Profile shout-out | Moderator | 15–30 seconds | Prevents unsolicited promotion and bad links |
| Operational stream change | Moderator or Owner | As needed | Title, category, ads, filters, and similar actions should not be public toys |
| Automatic timer | Not viewer-triggered | Use both interval and chat-line thresholds | Prevents messages from firing into a quiet chat |
Nightbot's values define the minimum allowed role. If a public command becomes disruptive, raising the cooldown is usually the first fix. On a busy channel, moving game commands to Regulars can be more effective than adding more automatic moderation.
Three useful Nightbot timer examples
A timer is not a custom command that runs by itself. Nightbot's timer controls require both an interval and a minimum number of chat lines before a message is sent. That chat-line threshold matters because it helps prevent a bot from repeatedly talking to an empty room.
- Rules:
Quick reminder: be respectful, avoid spoilers, and follow moderator requests. Full rules: [your rules link] - Schedule:
Next planned stream: [day, time, and timezone]. Changes: [your official schedule link] - Break:
Comfort check: stretch, rest your eyes, and grab water if you need it.
Set the interval and required chat activity for the real pace of the channel. Nightbot itself recommends a reasonable number of timers and warns that users do not like being spammed. Twitch's Community Guidelines also prohibit large amounts of repetitive, unwanted messages.
Commands to remove or rethink
- Third-party
!followage, joke, or fact APIs: if an example depends on a$(urlfetch)endpoint, that endpoint can disappear, change output, receive request data, or return unsafe text. Do not call it built in merely because somebody published a code string. - Raw viewer text inside
$(eval): Nightbot documents a concrete input-injection risk. Fixed lists such as the examples above avoid that class of substitution. - A die roll as a giveaway picker: use Nightbot's dedicated giveaway controls and publish the applicable rules. A fun random number is not proof of eligibility or a legally sufficient contest process.
- Automatic welcome messages: they can expose lurkers and flood a busy chat. Let viewers opt in with
!lurkor!back. - Donation, follow, or subscription nagging: one clear information command is enough. Repeated pressure creates a worse chat experience and does not prove genuine engagement.
- Commands another bot interprets as moderation: review the combined output of every bot. Nightbot's Eval warning shows why command-like text generated by one bot can cause an unintended action in another.
Troubleshooting a custom command
- Nightbot says nothing: confirm it joined the correct channel, the custom command is enabled, the caller meets the user level, and the cooldown expired.
- The name is wrong:
$(user)is the caller;$(touser)is the first argument and falls back to the caller when none is supplied. /meappears as text or fails: Nightbot documents response chat commands such as/mefor Twitch, not YouTube, Trovo, or SOOP. Remove the prefix outside Twitch.- Uptime is blank or odd: verify the exact nested
$(twitch $(channel) "{{uptimeLength}}")syntax and test while the Twitch channel is live and offline. - An Eval command errors: copy the full expression, including brackets, quotes, parentheses, and the final semicolon used in list examples. Avoid smart quotes from a word processor.
- Chat becomes command soup: increase cooldowns, restrict games to Regulars, disable low-value commands, and reduce timers.
If the bot itself no longer fits the workflow, compare its current platform support, permissions, exports, and moderation controls in our Twitch bot comparison or the narrower Nightbot vs Moobot guide.
Frequently asked questions
What are the best fun Nightbot commands?
Start with one social interaction such as !highfive, one simple random game such as !roll or !coin, and one useful command such as !uptime. Add more only when viewers actually use them without crowding out conversation.
Can I copy and paste these commands into chat?
The response blocks are written for the dashboard's Message field. Owners and moderators can also manage commands from chat with the documented form !commands add !command_name command response, plus optional user-level and cooldown parameters. The dashboard is easier when a long Eval response contains many spaces and punctuation marks.
Which examples are platform-specific?
Nightbot currently supports Twitch, YouTube, Trovo, and SOOP. Static responses and common variables should be checked on the connected service. The $(twitch) uptime example and Twitch profile link are Twitch-specific, and Nightbot says response prefixes such as /me are not supported on YouTube, Trovo, or SOOP.
Does Nightbot have a built-in !uptime or !followage command?
Neither appears in Nightbot's current default command list. Nightbot documents how to build !uptime with its Twitch variable. A !followage implementation that uses an outside API should be checked for provider ownership, authentication, privacy behavior, and output before use.
Can I use a random command for a paid giveaway?
Do not treat a chat toy as an auditable contest system. Nightbot has a dedicated giveaway panel with active-user, keyword, and random-number modes, but the channel owner still needs clear eligibility, timing, prize, selection, jurisdiction, and platform-compliance rules.
Sources and maintenance note
- Nightbot General Setup, Custom Commands, and
!commandssyntax. - Nightbot Variables, including User, ToUser, Count, Twitch, Time, and Eval.
- Nightbot Timers and Giveaways.
- Twitch Community Guidelines.
These sources were checked on July 24, 2026. Nightbot variables, providers, permissions, and supported platforms can change. Recheck the linked documentation and live dashboard before changing the visible modified date again.