Most commands are moderator-only, unless noted otherwise. Make sure to make the bot a moderator, or else it may not respond to commands and could get throttled.

Commands that contain sub-commands should display simple usage information when you run them in chat, and each subcommand usually provides a usage bit as well.


BenBot features a website dashboard that you can use to more easily control the bot. You can edit custom commands, view analytics, change moderation settings, and more. It also contains stream overlays for follower/subscriber notifications, now-playing tickers, on-screen chat, and Patreon notifications.

It also features an easy wizard for setting up a BenBot for the first time, including instructions for getting a custom BenBot name.

To use the dashbaord, you'll need to register an account. Once you've done that, you'll need to click "+ Add Channel" on the switch page. Enter your channel's name and select which streaming service you use (Twitch.TV or Beam.Pro) and hit continue.

If you already have a BenBot, you will be prompted to run a few commands in your chat to add yourself as a dashboard user. The rest is simple and straight forward.

If you do not already have a BenBot at this stage, you will then be prompted which bot username you would like. You can select from a list of pre-made bot names, or you can choose to use a custom bot name. If you choose custom bot, you will be taken to a page with instructions on how to obtain a custom bot. Custom bots are manually added by hand, and may take between an hour to a day or so to be added to your channel. Pre-made bots are automated and instant.

Note: We're temporarily not accepting new custom bots. See "FAQ" page for details.

You can associate multiple channels with your dashboard account. This is useful if you have mutliple channels, or you moderate various channels and want access to the site.

Custom Commands

These commands are used to manipulate custom commands.
Command Description
!commands set [command] [message] Creates a command with a custom message that can be executed as !command. Targets work with this command (see here for more information on targets). You can override existing commands with this command.

To make it a moderator-only command, put a + in front of the command name. To make it a subscriber-only command, use a $ symbol instead.

Commands can now include newlines by typing \n in the message body.
[benbaptist] !commands set youtube My YouTube channel is youtube.com/benbaptist. 
[sauceben] Set command '!youtube'.
[benbaptist] !youtube
[sauceben] My YouTube channel is youtube.com/benbaptist.
!commands del [command] Deletes a custom command. Remember to put a + in front of the command name for deleting custom moderator-only commands.

Tip: You can type del or delete, either way works.
[benbaptist] !commands delete youtube
[sauceben] Deleted command '!youtube'.
!commands list Shows a list of all of the custom commands.
[benbaptist] !commands list
[sauceben] Regular commands: !pizza, !BONKERS, !hello, !echo,
[sauceben] Moderator commands: !ohai,
!repeat set [command]
!repeat delete [command]
!repeat toggle [command]
!repeat delay [seconds per repeat]
!repeat list
Automated messages that print in your chat every X amount of seconds, the bot will run a command and cycle to the next. It will not output if the streamer is offline.

Tip: You can use !repeat in conjunction with !commercial to make periodic automatic commercials.
[benbaptist] !repeat set commercial 30
[sauceben] Set repeat for command '!commercial 30'.
[benbaptist] !repeat delay 500
!alias add [alias command] [commands ...]
!alias remove [alias command]
!alias list
Allows you to add and remove aliases to certain commands. Aliases can be used as "scripts"
List format: [original command] => [alias command]

Tip: !alias can be used to "rename" commands. For example, you can rename !balance to your currency's name.

WARNING: the 'list' subcommand can be very spammy if you have a lot of aliases.
[benbaptist] !pizza 
[sauceben] I sure do love pizza!

[benbaptist] !alias add pizzapie pizza
[benbaptist] !pizzapie
[sauceben] I sure do love pizza!

[benbaptist] !alias list
[sauceben] !pizza => !pizzapie

[benbaptist] !alias remove pizzapie
[sauceben] Removed alias '!pizzapie'.
!enable [command]
!disable [command]
Enables or disables commands. This can be used to disable built-in BenBot commands, or custom commands.
[benbaptist] !disable balance
[sauceben] Disabled '!balance'.
[benbaptist] !enable balance
[sauceben] Enabled '!balance'.

Stream Commands

Command Description
!uptime Return how long the streamer has been streaming. Rough estimate based off of the API.
!title [title ...]
Retrieves or sets the title. Requires that you make 'sauceben' a channel editor. Only works on Twitch.TV for now.
!game [game name ...]
Retrieves or sets the currently-playing game. Must be a valid game for this to work. Requires that you make 'sauceben' a channel editor. Only works on Twitch.TV for now.
!raid [name] Built-in raid command, to direct users to another channel at the end of a stream. If you want a custom message, you can override this command with a custom command.
[benbaptist] !raid xyntak
[sauceben] Let's raid xyntak! #benbaptistRaid https://beam.pro/xyntak

Here's an example custom raid command...
[benbaptist] !commands set raid Time to raid [[arg1]]! https://beam.pro/[[arg1]]
!highlight now [name] Create a highlight at the current time. Make sure you're registered on the BenBot dashboard prior to using this. You'll receive an email at the end of the stream containing the list of highlights at the times.

You can also view a list of past highlights on the dashboard on the "Highlights" tab.
!multistream [channels]
Generates a multi-channel link that works between Twitch.TV and Beam using a space-separated list. Defaults to the current streaming service for each channel name. Automatically includes the current channel.

To explicitly state which service the stream is coming from, you must prefix it with either "beam:" or "twitch:"
[benbaptist] !multistream beam:matt beam:decitm twitch:mktheworst
[sauceben] Here you go: http://benbaptist.com/multi#b:benbaptist/b:matt/b:decitm/t:mktheworst/
[benbaptist] !multistream graphoniac duke
[sauceben] Here you go: http://benbaptist.com/multi#b:benbaptist/b:graphoniac/b:duke/
!commercial [time] If the bot is an editor in your channel, it will play a commercial for the specified amount of time.
The commercial time must be one of the following values: 30, 60, 90, 120, 150, 180
[benbaptist] !commercial 30
[sauceben] Playing a commercial now - thanks for supporting this stream.

Music Commands

Various commands related to music.
Command Description
!lastfm setuser [username] This command changes the Last.FM username to scrobble from. This is used for the !song command.
!song Shows the currently playing music if `!lastfm setuser` was used.
!spotify [playlist] Spotify support

[benbaptist] !commands delete youtube
[sauceben] Deleted command '!youtube'.
!songrequest [Spotify URI]
!songrequest allow [everyone/subscribers/moderators]
Add a Spotify song to the playlist using the Spotify URI. The Spotify URI of a song can be obtained by right-clicking a song in Spotify, and selecting "Copy Spotify URI". The "allow" subcommand (mod-only) changes what users can play. Benbot

[benbaptist] !songrequest spotify:track:2olVm1lHicpveMAo4AUDRB
[sauceben]Added: 'The Power Of Love - 2006 Digital Remaster' by Huey Lewis & The News, from the album 'Greatest Hits: Huey Lewis And The News'.
[benbaptist] !songrequest allow subscribers
[sauceben] Only subscribers will be able to use !songrequest now.
!songs [clear] If no subcommands are provided, it will print out the Spotify playlist URL, shortened with goo.gl.

`!songs clear` will wipe the playlist.

[benbaptist] !songs
[sauceben] You can find the Spotify playlist here: http://goo.gl/oj7Vg3
[benbaptist] !songs clear
[sauceben] Cleared the Spotify playlist!

Currency Commands

Various commands for BenBot's currency system, including the loyalty system.
Command Description
!balance [user]
!balance [user] +/-/$[currency]
With no arguments provided, this command will display your current balance. If a user is provided, it'll show the balance for that particular user (mod only). If you provide a currency after the user, it will change their balance (channel owner only by default, see !balancemod).

Tip: You can use the !alias command to change the name of !balance if you want.
[benbaptist] !balance
[sauceben] benbaptist's balance: 527 coins
[benbaptist] !balance HomeDerpo
[sauceben] HomeDerpo's balance: 32 coins
[benbaptist] !balance HomeDerpo +5
[sauceben] Adding 5 to HomeDerpo's balance.
[benbaptist] !balance HomeDerpo $500
[sauceben] Setting HomeDerpo's balance to 500.
!balancemod [user] This command allows you to add balance moderators - users that can arbitrarily change the balance of any user, including themselves. By default, only the channel owner may do this - even regular moderators cannot change anything. Run again with the same name to remove the moderator.
[benbaptist] !balancemod HomeDerpo
[sauceben] Added 'HomeDerpo' as a balance moderator.
[HomeDerpo] !balance HomeDerpo $5000000
[sauceben] Setting HomeDerpo's balance to 5000000.
[benbaptist] !balancemod HomeDerpo
[sauceben] Removed 'HomeDerpo' as a balance moderator.
!loyalty toggle Toggles the loyalty system. The loyalty system is a concept in which active users are rewarded with currency when active. Viewers will receive coins by being in the channel, but active viewers whom chat will be rewarded with far more currency.

By default, the loyalty system only operates while the streamer is online. To change this, use !always_online.
[benbaptist] !loyalty toggle
[sauceben] Enable the loyalty system.
!loyalty timers [Regular Handout] [Bonus Handout] Tweak the loyalty system's handout times in seconds. A regular handout occurs every X amount of seconds, and gives out one coin to every "active" viewer (a viewer who was spoken within the last 30 minutes by default. can be changed with !loyalty activity). A bonus handout occurs if the viewer has said at least one thing every minute since the last bonus.
[benbaptist] !loyalty timers 60 120
[sauceben] 1 coin will be handed out to all active viewers every 60 seconds. 3 coins will be handed out every 60 seconds if the viewer speaks every minute.
!loyalty activity [Number of Minutes] This command is used to change how long a viewer is considered 'active' until the loyalty system stops giving them coins all together. In order for a viewer to receive any coins, they must say one thing in the chat every X amount of minutes, otherwise they'll be deemed 'inactive'. Default is 30 minutes.
[benbaptist] !loyalty activity
[sauceben] Viewers will be considered 'active' for 30 minutes.
!gamble open [Bet Total] [Option 1, Option 2, etc...]
!gamble close
!gamble winner [Option]
!gamble cancel
Commands that allow you to open bets for viewers to gamble on specific options or outcomes.

Viewers will use the !bet command to bet on their option. You will then use !gamble winner command to specify which option has won. Viewers who betted on the winning option will receive all of the cash.

!gamble open is used to start the bet. Bet total is the max currency that any given user can bet. You can have any number of options. !gamble close will prevent new bets from being placed, while !gamble cancel outright cancels the gamble and refunds all the currency.
[benbaptist] !gamble open 50 win, lose
[sauceben] Open bet with max amount of coins '50' with the options: win, lose
[benbaptist] !bet 50 win
[andrew] !bet 50 lose
[propeng] !bet 50 lose
[benbaptist] !gamble close
[sauceben] Bets are now closed.
[benbaptist] !gamble winner lose
[sauceben] A total of 150 coins were thrown in.
[sauceben] And the winner is...
[sauceben] lose with 150 coins! That works out to 75 coins per winner.
As seen in the example above, propeng and andrew got 75 coins.
!bet [Coins] [Option] Places a bet on the specified option for the amount of coins.
!menu set [Item] [Price] [Message ...]
!menu del [Item]
!menu list
!menu purchased
Manage a list of items that a user can buy with !order. Items can be purchased using the bot's currency system. When an item is purcahsed, the specified message is repeated back at the user for that specific item. Currently, items have no use and is mostly a novelty. You can, however, track purchases and distribute awards manually. Certain targets can be used for the custom message, such as [[name]].

In the future, you will be able to setup automatic triggers using this system.
!order [Item] Allows users to purchase an "item" using their currency. A custom message will replay in their name.

Tip: you can use !alias to "rename" this command to something else - e.g. !buy, or !purchase.
[benbaptist] !order whitelist
[sauceben] @benbaptist Congratulations, you can now be whitelisted on the Minecraft server! Please notify an admin so they may whitelist you.

Spam Protection Commands

Command(s) Description
!bans caps
!bans urls
!bans swears
!bans spam
!bans classy
!bans ip
!bans global
!bans usernames
Toggles auto-banning on caps lock, posting URLs, swear words, IP addresses, unclassiness, and more.
The 'global' filter is a list of users that have been globally blacklisted for extreme reasons. Any stream that has the global blacklist turned on will auto-ban these users upon contact.

All ban filters are turned off by default.
[benbaptist] !bans caps
[sauceben] Strike on caps is now enabled. Don't type in all caps!
[sauceben] STOP TYPING IN CAPS LOCK, home_derpo. Strike 1.
!permit [name] Permits a user for three minutes so they can post URLs, talk in caps, and swear without being striked by the bot. Run it again to unpermit someone.
[benbaptist] !permit home_derpo
[sauceben] home_derpo has been permitted for three minutes.
!friend [name] Permits a user permanently so they can post URLs, talk in caps, and swear without being striked by the bot. Run it again to unfriend someone.
[benbaptist] !friend home_derpo
[sauceben] home_derpo is now permanently safe from automatic bans.
!forbid [term] Prevents a specific term from being used in the chat. Run again to remove a specific term.
[benbaptist] !forbid naughty
[sauceben] Forbidified 'naughty'.
[home_derpo] I AM NAUGHTY
[sauceben] shut up derpo. first strike.
!verbosity [bans/all] This command is not implemented yet.
It will eventually be used to tune the verbosity of the bot. i.e. turn off messages when someone is banned automatically by the bot.
[benbaptist] !verbosity bans
[sauceben] Bot will no longer announce bans.
[home_derpo] I AM NAUGHTY
[home_derpo] Message deleted.
Note the lack of a warning from sauceben.

Misc. Commands

Here's a list of some of the various, uncategorised commands in the bot.
Command Description
!set [option] This command allows you to change general bot settings.
[benbaptist] !set meOutput
[sauceben] The bot will now output everything using /me.
!announce [event]
Toggles specific announcements that occur on specific events. Here's a list of events:

join - when a viewer joins the chat
part - when a viewer leaves the chat
followers - when someone follows
subscribers - when a user subscribes to the channel (Twitch/Beam partner only)
hosting - when a user hosts your channel (Beam only)
updates - reminds you when BenBot is updated and you are streaming (turned on by default)
title - prints the stream title in chat when it is changed
song - prints the currently playing

Most messages can be changed using the !setstring command. Refer to the "Strings" selection of this page for more information.
[benbaptist] !announce followers
[sauceben] Turned on follower notification. Use !setstring announce.follower [msg] to change the default message.
!setstring [key] [reset/message ...] Allows you to change certain "strings" that the bot will use when replying to a certain action.
For example, you can change the message that's sent when a user is banned, or when a user joins the chat.

See the "Strings" selection to the left to see a list of strings that can be changed.
[benbaptist] !setstring warn.url Yo [[name]], don't post URLs in here!
[sauceben] warn.url: Yo [[name]], don't post URLs in here!
[billybanhammer] http://spam.com/
[sauceben] Yo billybanhammer, don't post URLs in here! First strike.
billybanhammer was banned in the above example and the custom message was posted.
!quotes add [Message ...]
!quotes del [id]
!quotes total
!quotes sort [Old ID] [New ID]
!quotes lists add [name]
!quote list [name]
!quote [id] OR !quote
Warning: There IS a difference between !quote and !quotes. Yes, it's confusing, and yes, I'm working on making this less confusing.

Quote database for storing quotes and randomly retrieving them with !quote.
[benbaptist] !quotes add "The day I eat a pizza, is the day that I become a man." - benbaptist
[sauceben] Set quote with ID 0: "The day I eat a pizza, is the day that I become a man." - benbaptist
[benbaptist] !quote
[sauceben] "The day I eat a pizza, is the day that I become a man" - benbaptist
!links Beam.Pro only. Grabs social links from your Beam.Pro profile and shares them. Change output with links.youtube and links.twitter.

Alternatively, you can just override this command with your own custom command.
[benbaptist] !links
[sauceben] Visit our YouTube at http://youtube.com/user/benbaptist! Follow us on Twitter at http://twitter.com/jaredrayvalante!
!setcolor [color] Twitch.TV only. Changes the color of the bot in chat. This command only works with custom bots.


Targets can allow you to make command messages a bit more dynamic. All targets use the syntax [[target]]. Here's a list of custom command targets:
Target Description
[[argX]] Uses command arguments. Replace 'X' with 1 or more. Number.
[benbaptist] !commands set greet Hello there, [[arg1]]! Do you have a [[arg2]]?
[benbaptist] !greet benbaptist pizza
[sauceben] Hello there, benbaptist! Do you have a pizza?
[[args]] Takes all command arguments (spaces and all!)
[benbaptist] !commands set greet Hello there, [[args]]!
[benbaptist] !greet benbaptist and thejarren
[sauceben] Hello there, benbaptist and thejarren!
[[name]] Returns the name of the user executing the command.
[benbaptist] !commands set hi Hey [[name]], how are you!?
[benbaptist] !hi
[sauceben] Hey benbaptist, how are you!?
[[randomquote]] Uses a random quote from the quotes library. See docs for the !quotes command above, to add new quotes to the library.
[benbaptist] !commands set love [[arg1]], I'm here for you. Here's a beautiful quote: [[randomquote]]
[benbaptist] !love SpasticPenguin
[sauceben] SpasticPenguin, I'm here for you. Here's a beautiful quote: "Don’t cry because it’s over, smile because it happened."
[[randomquote:X]] Uses a random quote from the specified quote list. Can be used for easily retriving quotes from a specific list, or having custom commands that output a random command.
[benbaptist] !quote lists add joke
[benbaptist] !quote list joke
[benbaptist] !quote add Why did the pizza cross the road? To get to the other slice!
... many bad jokes later ...
[benbaptist] !commands set joke Here's a terrible joke for you: [[randomquote:joke]]
[benbaptist] !joke
[sauceben] Here's a terrible joke for you: Why did the pizza cross the road? To get to the other slice!
[[balance]] Shows the command runner's balance.
[benbaptist] !commands set checkup Hey [[name]], you have [[balance]] coins and a serious case of the hiccups!
[benbaptist] !checkup
[sauceben] Hey benbaptist, you have 520 coins and a serious case of the hiccups!
[[count]] Shows how many times the command was run. Useful for making counters.
[benbaptist] !commands set fails Ben's fail counter: [[count]]
[benbaptist] !fail
[sauceben] Ben's fail counter: 1
[benbaptist] !fail
[sauceben] Ben's fail counter: 2
[benbaptist] !counter fail reset
[sauceben] '!fail' has been reset back to zero from 2.
[[stream_title]] and [[stream_game]] Uses the stream's title or stream's game respectively.
[benbaptist] !commands set nowplaying Hey [[name]], we're doing "[[stream_title]]" and we're currently playing [[stream_game]]!
[benbaptist] !nowplaying
[sauceben] Hey benbaptist, we're doing "FTB with Friends" and we're currently playing Minecraft!
[[raffle]] and [[raffle:subs]] Randomly pick from a viewer in chat. [[raffle:subs]] isolates to subscribers only.

Due to Twitch API limitations, the bot only knows if a viewer is a subscriber if they've said something in chat.

Strings (for !setstring)

Strings allow you to customize responses for the bot.

For example, you can change the bot's ban responses (for each specific ban condition, such as posting a URL), or you can customize the new follower message. Please see the documentation for the !setstring command above.

Remember, this is only customizing the responses. This does not enable or disable any spam control features, or any other features. All spam control built into the bot is disabled by default.
Description Default String Supported Targets
Appended to the end of the first warning.
First strike. [[name]] - Person being timed-out or banned
Appended to the end of the second warning.
Second strike. [[name]] - Person being timed-out or banned
Appended to the end of the third and final warning.
Third strike - last chance. [[name]] - Person being timed-out or banned
Appended to the end of the banned message when a viewer used up their strikes.
You're banned for 24 hours! [[name]] - Person being timed-out or banned
Sent when a viewer posts a URL without a permit with !bans urls turned on.
Please do not post URLs, [[name]]. [[name]] - Person being timed-out or banned
Sent when an unpermitted viewer types too much caps with !bans caps turned on.
Cool down on the caps lock, [[name]]. [[name]] - Person being timed-out or banned
Sent when an unpermitted viewer posts a term forbidden with !forbid.
That word is not permitted here, [[name]]. [[name]] - Person being timed-out or banned
Sent when an unpermitted viewer sends gibbiersh, spammy, or overly repetitive messages with !bans spam turned on.
Spam does not taste good, @[[name]]. [[name]] - Person being timed-out or banned
Sent when a viewer joins the channel if you have !announce join enabled.

Ettiquite warning: please respect the privacy and lurkosity of others. In most cases, it is generally frowned upon to call-out lurkers.
Welcome to the stream, [[name]]. [[name]] - Viewer that joined channel
Sent when a viewer leaves the channel if you have !announce part enabled.
Goodbye, [[name]]. [[name]] - Viewer that joined channel
Sent when a viewer follows the channel, if you have !announce followers enabled.
Thanks for following, [[name]]! <3 [[name]] - Viewer that followed the channel
Sent when a viewer subscribes to the channel, if you have !announce subscribers enabled.
Thanks for subscribing, [[name]]!! <3 [[name]] - Viewer that subscribed to the channel
Sent when a viewer hosts the channel, if you have !announce hosting enabled. (Beam only)
Thanks for subscribing, [[name]]!! <3 [[name]] - Viewer that hosted the channel
Sent when a commercial is being played using the !commercial command.
Playing a commercial now - thanks for supporting this stream. None
Changes the name of the currency used for the loyalty system.
coin None
The text displayed when running !help.
BenBot's documentation can be found here: http://benbot.rocks/ Do '!help list' for a comma-separated list of commands None