Custom commands
Under this tab you create and manage your own commands. Enter a name under Command and the text the bot should post under Response. You can also set aliases when creating a command, i.e. alternative names. Once created, the command has the same settings as default commands (see Configuration fields below). At the bottom right you will find the Variables button with all available placeholders.
Templates
If you are new to bot commands, the Templates button helps you get started. The templates are deliberately chosen to show you how variables work, grouped into Address viewers, Random & fun and Stream info & counters.
Each template demonstrates one variable, for example:
!lurk – $(sender) (the name of whoever runs the command)
!hug – $(sender) and $(touser) (addresses another chatter)
!slap – $(1) (the text the viewer types after the command)
!dice – $(random 1 6) (random number)
!decide – $(randompick("Yes","No","Maybe")) (random choice)
!randomclip – $(randomclip) (links a random clip from your channel)
!game – $(game) (current stream category)
!deaths – $(count deaths +1) (a counter that counts up on every use)
Clicking Use fills the creation form above with that template. You can still adjust the text, then click Add. Templates are therefore not saved directly; they serve as a starting point for learning. Most examples work right away without any changes.
Sound commands
In the Sounds tab you create commands that let your viewers play a sound on stream – for example !airhorn or !applause. The sound comes from your media library and plays through a browser source in OBS.
One-time setup: the sound player in OBS
For a sound to be heard on stream, OBS needs the sound player. There are two ways to add it – use exactly one, otherwise every sound plays twice:
- As a browser source: At the top of the tab, copy the link under
OBS browser source and add it to OBS as a browser source. The source stays invisible; size and position don't matter.
- In the Overlay Builder: Add the
Sound player widget to your scene. It's invisible on stream as well.
OBS only outputs the audio of the scene that is currently live. If a sound should be heard in every scene, the sound player has to be part of each of those scenes – for example as a shared source you add to all of them.
Create a sound command
- Open
New sound command and enter the name of the command.
- Under
Sound, pick a file from your media library or upload a new one via Upload sound (MP3, AAC, M4A or OGG).
- Set the
Volume.
- Optional: enter a
Chat response. If you leave it empty, the command only plays the sound.
Test in OBS plays the sound through your sound player right away – even before you save.
After that the same settings apply as for custom commands (see Configuration fields and Per-user command access below). New sound commands start with higher cooldowns on purpose – 10 seconds global, 30 seconds per viewer – because a sound gets annoying faster than a chat line. The name can't match any other command in your channel, including built-in ones like !so or !clip.
How the sound player plays
- Sounds play one after another, never on top of each other.
- At most 5 sounds wait in line. Anything triggered beyond that is dropped.
- A sound that had to wait longer than 30 seconds is skipped instead of starting late.
- Every sound stops after 30 seconds at the latest.
- If you reload the source in OBS, sounds that already played are not repeated.
!alerts off also silences sound commands – during a hate raid a sound is just as much an attack vector as an alert. !alerts on turns them back on; whatever was triggered in the meantime is not replayed.
Moderators
Sound commands play audio directly on your stream. That's why mods need a permission of their own for them: Sound commands. It's off by default and sits in your account under Mod permissions in the Additional permissions section. Without it, mods don't see the Sounds tab and can't change, delete or hand out access to existing sound commands.
In your public commands overview, sound commands are marked with 🔊 Sound. Your viewers can't see which file is behind it.
When there's no sound
- The test says "Sent to OBS", but you hear nothing: Check that the sound player is part of the scene that is currently live and that the browser source isn't muted in OBS. If the tab shows
Alerts muted instead, alerts are paused via !alerts off.
- The player link is open in a normal browser tab: Browsers block audio until you click the page once. The sound player shows a hint for that. This doesn't happen in OBS.
- The file was deleted from the media library: The media library marks files used by a sound command as in use. If you delete one anyway, the command stays silent until you give it a new sound.
Public commands overview
At the top of the page you will find the link to your public commands overview at https://bytemate.me/commands/[yourchannel]. The Active/Inactive toggle next to it lets you enable or disable this page for your viewers. When the overview is disabled, visitors see a short notice instead.
While you're live, the overview shows a Live badge with your stream title and category under your name. The status refreshes every two minutes.
Configuration fields
Each command supports the following settings:
User Level: Who is allowed to use this command. The selected role and higher roles can trigger it.
- Moderation commands: Only the channel owner can set
!settitle, !setgame, !nuke, !permit and the subathon commands below Moderator, i.e. open them to VIPs or viewers. Mods can still change their cooldown. !settitle and !setgame are set to Moderator by default.
When active?: Always active or only when the stream is online/offline.
Cooldown Global/User: Total time or per-viewer time before the command can be used again.
Command aliases: Alternative names for the command; can be added with or without !.
Response: Enter your response. Clicking the default button at the top right resets the response to the default. Under the textbox you can see the variables you can use.
- Response length: Twitch allows 500 characters per chat message, and that is what the field accepts. The counter above the textbox shows where you are; if the response is too long it is not saved and you get a notice. If a saved response still ends up longer (for example because variables such as
{channel} are replaced by longer values when posting), the bot spreads it across two chat messages and breaks between words.
The Active toggle for each command enables/disables it for chat.
Each channel can have up to 500 commands. Once the limit is reached, a toggle that couldn't be saved flips back and you get a notice.
Per-user command access (Grants)
The grant system lets you give individual viewers access to specific commands — even if their user level would normally be too low.
In the dashboard
Every command has a collapsible "Special User Permissions" section. There you can see all active grants for that command and:
- Enter a Twitch login and choose an expiry (Permanent, 1 hour, 24 hours, 7 days, or 30 days)
- Revoke grants with the Revoke button
Via chat command
Grant access:
!grant @username command [duration]
@username – Twitch login of the user (@ is optional)
command – command name without ! (e.g. uptime, so)
duration – optional: 30m, 2h, 1d – if omitted the grant is permanent
Revoke access:
!revoke @username command
!grant and !revoke are restricted to moderators. Expired grants are deactivated automatically; re-granting updates the expiry.
Variables
A complete list of variables is available in the Bot Variables section.
You can write variables as $(...) or ${...}; positional arguments also work with {1}, {2}, etc.