Skip to Content
NexmodCommands

Commands

Commands are a core feature of Nexmod. When a viewer types a trigger word in chat, the bot matches it against your configured commands and executes the associated response or flow.

Anatomy of a Command

Every command in Nexmod has the following properties:

PropertyDescriptionDefault
NameThe trigger word viewers type in chat (e.g., hello)Required
EnabledToggle a command on or off without deleting ittrue
Match ModeHow the bot matches messages to this commandSTART
Case SensitiveWhether matching is case-sensitivefalse
PlatformWhich platform the command works onALL
Allowed RolesWho can trigger the command["everyone"]
Global CooldownSeconds before anyone can trigger it again0
User CooldownSeconds before the same user can trigger it again0
ResponseA simple text response sent to chat""
Flow DataA visual flow for advanced command logicnull
AliasesAlternative trigger words for the same command[]
GroupOptional group name for organizing commandsnull

Creating a Command

  1. Navigate to Commands in the dashboard sidebar
  2. Click Create Command
  3. Enter a name — this is the trigger word viewers will type
  4. The command is created and you’re taken to the editor

Match Modes

Match mode controls how the bot determines whether a chat message should trigger your command.

ModeBehaviorExample trigger: hello
StartMessage must start with the command namehello world matches, say hello does not
ExactMessage must be exactly the command namehello matches, hello world does not
AnywhereCommand name can appear anywhere in the messageBoth hello world and say hello match
RegexThe name is treated as a regular expressionFull regex pattern matching

Most commands should use Start mode. This matches the traditional bot command behavior where users type !hello at the beginning of their message. Regex mode is for advanced users who need complex pattern matching.

Platform Targeting

Each command can be scoped to a specific platform:

  • All — Works on both Twitch and Discord
  • Twitch — Only triggers in Twitch chat
  • Discord — Only triggers in Discord

Aliases

Aliases let you define alternative trigger words for the same command. For example, a command named socials could have aliases like twitter, youtube, and instagram — all pointing to the same response.

Aliases follow the same match mode as the parent command.

Permissions

Control who can use each command with role-based permissions. Roles are hierarchical — higher roles inherit access from lower ones.

RoleWho
EveryoneAny viewer in chat
SubscriberTwitch subscribers only
VIPVIPs and above
ModeratorChannel moderators and above
BroadcasterOnly the channel owner

When a user without the required role triggers a command, the bot silently ignores it.

Cooldowns

Cooldowns prevent command spam and keep chat clean. There are two types:

Global Cooldown

A shared timer across all users. Once any user triggers the command, nobody can trigger it again until the cooldown expires.

Example: A !clip command with a 30-second global cooldown ensures viewers don’t flood chat with clip requests.

Per-User Cooldown

A per-user timer. After triggering the command, that specific user must wait before using it again, but other users can still use it immediately.

Example: A !points command with a 60-second user cooldown prevents one viewer from spamming it, while other viewers can still check their points.

Set both cooldowns to 0 to disable them entirely. Cooldowns are measured in seconds.

Simple Response

For basic commands, set a text response directly. The bot sends this message in chat when the command is triggered.

Hello {user}! Welcome to the stream.

Variables

Use variables in your responses and flow nodes to make them dynamic. Variables are wrapped in curly braces.

Built-in Variables

VariableDescriptionExample Output
{user}Display name of the user who triggered the command@viewer123
{channel}The current channel namemychannel
{game}Current stream categoryJust Chatting
{uptime}How long the stream has been live2h 34m

Counter Variables

Counters are numeric values tied to a command that persist across uses. Access them with {counter:name} syntax.

VariableDescriptionExample
{counter:deaths}A counter named “deaths”42
{counter:wins}A counter named “wins”7
{count}Shorthand for the command’s default counter15

Counters can be incremented, decremented, or set to a specific value using the Update Counter flow node.

Global Variables

Global variables are shared across all commands and actions. Access them with {variable:name}.

VariableDescription
{variable:currentSong}A variable you’ve set elsewhere
{variable:lastWinner}Updated by another command or action

Flow Builder

For advanced command logic, Nexmod provides a visual flow builder. Instead of a single text response, you can create a node-based flow that handles branching, conditionals, data manipulation, and more.

The flow builder is available on the Plus plan and above. Free-tier commands use simple text responses.

How Flows Work

A flow is a directed graph of nodes connected by edges. Execution starts at the Start node and follows the connections through each subsequent node. Some nodes have multiple outputs (like conditionals) which create branching logic.

Node Categories

Start

NodeDescription
StartEntry point — every flow begins here. Fires when the command is triggered.

Chat

NodeDescription
Send MessageSend a message in chat. Supports variables like {user}.
Send ReplyReply directly to the triggering message (threaded reply on Twitch).
WhisperSend a private whisper to the triggering user or a specific username.

Flow Control

NodeDescriptionOutputs
CooldownRate-limit the command. Configure global and per-user cooldowns.Pass (allowed) / On Cooldown (blocked)
Permission GateCheck the user’s role before continuing.Allowed / Denied
ConditionalBranch based on a condition (see conditions table below).Yes / No
DelayPause execution for 1–300 seconds before continuing.Next
RandomRandomly pick between two output paths.A / B

Data

NodeDescription
Get VariableRead a global variable’s current value into the flow.
Set VariableWrite a value to a global variable.
Get CounterRead a counter’s current numeric value.
Update CounterIncrement, decrement, or set a counter to a specific value.
Random QuoteFetch a random quote from your team’s quote collection.
MathPerform arithmetic: add, subtract, multiply, divide, or modulo. Store the result in a variable.

Formatting

NodeDescription
Format TextBuild dynamic text using a template with variables, e.g., {user} has {counter:deaths} deaths!
Regex MatchTest text against a regular expression. Outputs Match or No Match.

Moderation

NodeDescription
Timeout UserTimeout the triggering user for a specified duration (1s–14 days). Optionally include a reason.
Purge MessagesDelete the user’s recent messages (1–100 messages).

Conditional Types

The Conditional node supports these condition checks:

ConditionDescription
Message ContainsCheck if the chat message contains specific text
Message Starts WithCheck if the message starts with specific text
Message Matches RegexTest the message against a regular expression
User Role IsCheck if the user has a specific role
Variable EqualsCompare a global variable to a value
Counter Greater ThanCheck if a counter exceeds a threshold
Counter Less ThanCheck if a counter is below a threshold
Counter EqualsCheck if a counter equals a specific value
Random Chance (%)Randomly pass with a given percentage (e.g., 50% = coin flip)
Stream Is LiveCheck if the stream is currently live

Counter Operations

The Update Counter node supports three operations:

OperationDescriptionExample
IncrementAdd to the counterdeaths + 1 → 43
DecrementSubtract from the counterdeaths - 1 → 41
Set ToSet the counter to a specific valuedeaths = 0

Math Operations

The Math node supports:

OperationSymbolExample
Add+10 + 5 = 15
Subtract10 - 3 = 7
Multiply×4 × 3 = 12
Divide÷20 ÷ 4 = 5
Modulo%10 % 3 = 1

Both operands can reference counters ({counter:deaths}) or variables ({variable:score}).


Example Flows

Death Counter

A !death command that increments a counter and announces the total:

  1. StartPermission Gate (moderator+)
  2. Permission Gate → (Allowed) → Update Counter (deaths, increment by 1)
  3. Update CounterSend Message ({channel} has died {counter:deaths} times!)
  4. Permission Gate → (Denied) → Send Reply (Only moderators can update the death counter.)

Random Response

A !8ball command that gives a random answer:

  1. StartRandom (50/50 split)
  2. Random → (A) → Send Message (The magic 8-ball says: Yes!)
  3. Random → (B) → Send Message (The magic 8-ball says: Ask again later...)

Cooldown with Feedback

A !clip command with feedback when on cooldown:

  1. StartCooldown (30s global)
  2. Cooldown → (Pass) → Send Message (Creating a clip for {user}!)
  3. Cooldown → (On Cooldown) → Send Reply (Clips are on cooldown. Try again in a moment!)

Dashboard Permissions

Managing commands in the Nexmod dashboard requires specific team roles:

ActionRequired Permission
View commandscommands:read — Viewer and above
Create, edit, delete commandscommands:manage — Editor and above

Plan Limits

PlanMax CommandsFlow Builder
Free15No
PlusUnlimitedYes
ProUnlimitedYes
VIPUnlimitedYes
Last updated on