Dynamic commands are different from regular bot commands because they are specific to a channel. Dynamic commands can only be modified by the channel broadcaster or moderators.

Managing Dynamic Commands

Dynamic commands have two primary components, the trigger and the response, as well as options regarding each dynamic command.

The trigger is what users in the chatroom will enter to receive a response from the bot. For example, if you added a command such as !cmd add !test This is a test. the trigger would be !test and whenever it is used, the bot would respond This is a test.

Triggers do not need to start with an exclamation point (!) but must be one word.

The response can consist of various Command Values, which allow you to create dynamic commands using data that the bot is able to provide. For example, if you added a command such as !cmd add !greet Hi, ${_Target_}! the command would respond with either the mentioned person, or the person who sent the command if no one is mentioned.

CommandDescriptionAliases
!cmd add trigger responseAdds a command that will respond with the provided response when the trigger is used.
!cmd delete triggerDeletes the command with the specified trigger name.!cmd del

!cmd rem

!cmd remove
!cmd edit trigger responseChange the response of a specific command.
!cmd addto trigger responseAdd additional information to a response (longer than Twitch messages allow) to a command.
!cmd show triggerDisplays how the response for the specified command is formatted.
!cmd options triggerDisplays the currently set options of the specified command.!cmd adjust
!cmd options trigger option:value…Sets one or more options for the specified command. To set multiple options at once, separate them with spaces.!cmd adjust

Command Options

Dynamic commands also have various options that you can adjust to make various commands respond differently. Such as replying to a message, or giving a command a cooldown.

OptionValue TypeDescriptionExamples
EnabledBooleanThis will allow the command to be used (true)/stop the command from being used (false)enabled:true

enabled:false
CooldownIntegerStops the bot from responding for the specified number of seconds until the cooldown ends.cooldown:5

cooldown:60
ReplyBooleanWhether the command should reply directly to the user who triggered it, or just send a message in the chat.reply:true

reply:false
LevelIntLimits the command to only be used by certain people above the specified level.level:0

level:100
OfflineBooleanLimits the command to only being used while the channel is offline (not streaming).offline:true

offline:false
OnlineBooleanLimits the command to only being used while the channel is offline (they are streaming).online:true

online:false

Command Values

Each command is able to have specific values from data the bot has collected or is able to access. Command values can be accessed by adding ${_ValueName_} to the response of a command - where the ValueName is replaced by one of the available values below.

For example, a command with the response Hi, ${_Target_}! would respond with either:

  • If a user is mentioned: Hi, MentionedUser!
  • Or, if no one is mentioned: Hi, PersonWhoSentCommand!

Additionally, command values can be nested within other command values. For example, if you wanted to get the time for a specific user, you could have a command with the response It is currently ${${Target}.Time} for ${${Target}.Nickname}. that would respond with either:

  • If a user is mentioned: It is currently 5:56 PM for MentionedUser.
  • Or, if no one is mentioned: It is currently 5:56 PM for PersonWhoSentCommand.

Generic Values

ValueDescription
TargetThe second word used in the command. If none is provided, it will default to the person who sent the command.
ChannelTargetThe second word used in the command. If none is provided, it will default to the channel name.
MessageThe message the person has sent, excluding the trigger.

For example, if the user sent the command !test this is a weird test command - the message would just be: this is a weird test command
SenderThe name of the person who sent the command.

User Data

You can replace the User portion of these values with a specific username. For example, if you wanted to exclusively receive the time for a specific user, you could use SpecificUsername.Time

ValueDescription
User.UsernameThe user’s name.
User.NicknameThe user’s nickname, if available.
User.TimeThe user’s time, if available.
User.ColourThe user’s Twitch name colour as a hex code.
User.ColorAn alias of User.Colour, the user’s Twitch name color as a hex code.
User.MessagesSentThe number of messages the user has sent across all chats.
User.PointsThe amount of points the user has.
User.FishThe amount of fish the user has caught. Null if none.
User.FishTypesThe types of fish the user has caught. Null if none.
User.BirthdayThe user’s birthday in yyyy-MM-dd format, if available.
User.TimeToBirthdayThe amount of time until the user’s birthday, if available.
User.RPSWinsThe number of times the user has won in RPS.
User.RPSTiesThe number of times the user has tied in RPS.
User.RPSLossesThe number of times the user has lost in RPS.
User.LastMessageTimeThe time of the user’s last sent message in yyyy-MM-dd hh:mm:ss tt format.
User.LastMessageHereThe user’s last known message sent in the current chat, if available.
User.LastMessageHereTimeThe time of the user’s last message in the current chat, in yyyy-MM-dd hh:mm:ss tt format, if available.
User.LastMessageTimeHereAgoHow long it has been since the user last sent a message in the current chat, if available.

Channel Data

Similar to User Data, you can replace the Channel portion of these values with a specific channel username. For example, if you wanted to exclusively see if a specific channel was live, you could use SpecificUsername.IsLive

ValueDescription
Channel.ChannelNameThe channel’s name.
Channel.ChannelMessagesThe number of messages sent in the current channel (since the bot connected to it).
Channel.TitleThe channel’s currently set title.
Channel.GameThe channel’s currently set game category.
Channel.IsLive”is live” if the channel is live, “is not live” if the channel is not live or could not be found.
Channel.TimeTitleChangedThe time the title was changed (null if bot is not connected or is not listening for changes).
Channel.TimeSinceTitleChangedHow long it has been since the title was changed (null if bot is not connected or is not listening for changes).
Channel.TimeGameChangedThe time the game was changed (null if bot is not connected or is not listening for changes).
Channel.TimeSinceGameChangedHow long it has been since the game was changed (null if bot is not connected or is not listening for changes).
Channel.TimeLastLiveThe time the channel was last live (null if bot is not connected).
Channel.TimeSinceLastLiveHow long it has been since the channel was live (null if bot is not connected).
Channel.TimeJoinedThe time bot started listening to the channel (null if bot has not joined channel).
Channel.TimeSinceJoinedHow long it has been since the bot started listening to this channel (null if bot has not joined channel.)
Channel.BannedUsersThe number of bans that have occurred in the current chat (null if bot is not connected).
Channel.GPTTokensUsedThe amount of Tokens used by GPT (0 if unused).
Channel.GPT4TokensUsedThe amount of Tokens used by GPT4 (0 if unused).
Channel.VanishTimeThe vanish time in seconds for !vanish (0 if bot is not moderator).

Assorted Data

ValueDescription
LastFMSong.NameWill output the most recently listened to track for the name provided.
LastFMRecent.NameWill output the most recently listened to track for the name provided, with some additional text conditions. For example, if the user is currently listening to the song it will return is now listening to otherwise it will say was last listening to

See Also