Skip to content

Twitch Chatbot Setup

MrTwinkles47 edited this page Sep 10, 2022 · 10 revisions

You can use an existing chat bot or roll your own custom bot. Whichever bot you choose must be capable of custom commands with variables and GET/urlfetch capability. SMRequests recommends using StreamElements.

Command variables that are supported across end-points. Refer to your bot’s documentation to determine how to use variables.

  • Arguments -- bot must support multi-word arguments!
  • Twitch user -- required for request commands
  • Broadcaster -- required for broadcast commands and multiple stream accounts
  • Game/Category -- Useful if your bot does not have game specific commands (SE)
  • Twitch tier -- Useful for limiting requests to certain user levels (subscriber, moderator, etc.)

StreamElements (recommended)

  1. Go to your custom bot commands page: https://streamelements.com/dashboard/bot/commands/custom.
  2. Replace [URL] with your website URL and replace [KEY] with your security key.
  3. Create a new command, copy the text below, and paste it into the "response" field.
  4. Set user level, cooldowns, and command aliases.
  5. Optional: Disable the built-in song request default commands.
Expand for example commands

Basic commands

Command:    !songlist
Alias:      !sl, !list
User Level: everyone
Response:   ${sender}->The songlist for requesting songs can be found here: https://[URL]/songlist.php

Command:    !request
Alias:      !sr
User Level: everyone
Response:   ${urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&song=${queryescape ${1:}}}

Command:    !requestid
Alias:      !rid
User Level: everyone
Response:   ${urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&songid=${queryescape ${1:}}}

Command:    !cancel
User Level: everyone
Response:   ${urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&cancel=${queryescape ${1|1}}}

Command:    !random
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&random=random&song=${queryescape ${1:|0}}}

Command:    !portal
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&random=portal&song=${queryescape ${1:|0}}}

Command:    !top
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&random=top&song=${queryescape ${1:|0}}}

Command:    !gitgud
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&random=gitgud&song=${queryescape ${1:|0}}}

Command:    !randomunplayed
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&random=unplayed&song=${queryescape ${1:|0}}}

Command:    !randomroll
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&random=roll&num=3&song=${queryescape ${1:|0}}}}

Command:    !theusual
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&random=theusual&song=${queryescape ${1:|0}}}

Moderator/Broadcaster Commands

Restrict these commands to mods or higher user levels

Command:    !skip
User Level: moderator
Response:   ${urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&skip=${queryescape ${1|1}}}

Command:    !complete
User Level: moderator
Response:   ${urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&complete=${queryescape ${1|1}}}

Command:    !banuser
User Level: moderator
Response:   ${urlfetch https://[URL]/requestor.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&game=${game}&banuser=${queryescape ${1:}}}

Command:    !whitelist
User Level: moderator
Response:   ${urlfetch https://[URL]/requestor.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&game=${game}&whitelist=${queryescape ${1:}}}

Command:    !bansong
User Level: moderator
Response:   ${urlfetch https://[URL]/song_admin.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&game=${game}&bansong=${queryescape ${1:}}}
 
Command:    !bansongid
User Level: moderator
Response:   ${urlfetch https://[URL]/song_admin.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&game=${game}&bansongid=${queryescape ${1:}}}

Command:    !requesttoggle
Alias:      !rt, !toggle
User Level: moderator
Response:   ${urlfetch https://[URL]/broadcaster.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&requesttoggle=${queryescape ${1:|0}}}

Command:    !stepstype
User Level: moderator
Response:   ${urlfetch https://[URL]/broadcaster.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&stepstype=${queryescape ${1}}}

Command:    !meter
User Level: moderator
Response:   ${urlfetch https://[URL]/broadcaster.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&meter=${queryescape ${1}}}

Special Random Commands

You may need to adjust these commands to fit your specific song packs.

Command:    !randomben
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=ben&random=Ben+Speirs%7CBen+Fears&song=${queryescape ${1:|0}}}

Command:    !randomddr
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=ddr&random=Dance+Dance+Revolution%7CDancing+Stage&song=${queryescape ${1:|0}}}

Command:    !randomitg
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=itg&random=ITG%7CIn+The+Groove&song=${queryescape ${1:|0}}}

Command:    !randomfearmix
User Level: everyone
Response:   ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=fearmix&random=FEARMIX&song=${queryescape ${1:|0}}}

Command:    !randomcafecursed
User Level: everyone
Response:  ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=cafe&random=Cafe+Cursed&song=${queryescape ${1:|0}}}

Command:    !randomhellkite
User Level: everyone
Response:  ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=hkc&random=HellkiteChaos&song=${queryescape ${1:|0}}}

Command:    !randombgs
User Level: everyone
Response:  ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=bgs&random=iambgs%7CBGS+Mania&song=${queryescape ${1:|0}}}

Command:    !randommiku
User Level: everyone
Response:  ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=miku&random=miku%7Cvocaloid&song=${queryescape ${1:|0}}}

Command:    !randomweeb
User Level: everyone
Response:  ${urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=${channel}&user=${sender}&tier=${user.level}&game=${game}&type=weeb&random=weeb%7Canime%7Cotaku%7Cjapan%7Cvocaloid&song=${queryescape ${1:|0}}}

NightBot (alternative)

  1. Go to your custom bot commands page: https://nightbot.tv/commands/custom.
  2. Replace [URL] with your website URL and replace [KEY] with your security key.
  3. Create a new command, copy the text below, and paste it into the "message" field.
  4. Set user level, cooldowns, and command aliases.
  5. Optional: Disable the built-in song request default commands.
Expand for example commands

Basic commands

Command:    !songlist
Alias:      !sl, !list
User Level: everyone
Response:   $(twitch $(user) "{{displayName}}") => The songlist for requesting songs can be found here: https://[URL]/songlist.php

Command:    !request
Alias:      !sr
User Level: everyone
Response:   $(urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&song=$(querystring))

Command:    !requestid
Alias:      !rid
User Level: everyone
Response:   $(urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&songid=$(querystring))

Command:    !cancel
User Level: everyone
Response:   $(urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&cancel=$(querystring))

Command:    !random
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&random=random&song=$(querystring))

Command:    !portal
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&random=portal&song=$(querystring))

Command:    !top
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&random=top&song=$(querystring))

Command:    !gitgud
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&random=gitgud&song=$(querystring))

Command:    !randomunplayed
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&random=unplayed&song=$(querystring))

Command:    !randomroll
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&random=roll&num=3&song=$(querystring))

Command:    !theusual
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&random=theusual&song=$(querystring))

Moderator/Broadcaster Commands

Restrict these commands to mods or higher user levels

Command:    !skip
User Level: moderator
Response:   $(urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&skip=$(querystring))

Command:    !complete
User Level: moderator
Response:   $(urlfetch https://[URL]/request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&complete=$(querystring))

Command:    !banuser
User Level: moderator
Response:   $(urlfetch https://[URL]/requestor.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&game=$(twitch $(channel) "{{game}}")&banuser=$(querystring))

Command:    !whitelist
User Level: moderator
Response:   $(urlfetch https://[URL]/requestor.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&game=$(twitch $(channel) "{{game}}")&whitelist=$(querystring))

Command:    !bansong
User Level: moderator
Response:   $(urlfetch https://[URL]/song_admin.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&game=$(twitch $(channel) "{{game}}")&bansong=$(querystring))
 
Command:    !bansongid
User Level: moderator
Response:   $(urlfetch https://[URL]/song_admin.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&game=$(twitch $(channel) "{{game}}")&bansongid=$(querystring))

Command:    !requesttoggle
Alias:      !rt, !toggle
User Level: moderator
Response:   $(urlfetch https://[URL]/broadcaster.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&requesttoggle=$(querystring))

Command:    !stepstype
User Level: moderator
Response:   $(urlfetch https://[URL]/broadcaster.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&stepstype=$(querystring))

Command:    !meter
User Level: moderator
Response:   $(urlfetch https://[URL]/broadcaster.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&meter=$(querystring))

Special Random Commands

You may need to adjust these commands to fit your specific song packs.

Command:    !randomben
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=ben&random=Ben+Speirs%7CBen+Fears&song=$(querystring))

Command:    !randomddr
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=ddr&random=Dance+Dance+Revolution%7CDancing+Stage&song=$(querystring))

Command:    !randomitg
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=itg&random=ITG%7CIn+The+Groove&song=$(querystring))

Command:    !randomfearmix
User Level: everyone
Response:   $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=fearmix&random=FEARMIX&song=$(querystring))

Command:    !randomcafecursed
User Level: everyone
Response:  $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=cafe&random=Cafe+Cursed&song=$(queryescape))

Command:    !randomhellkite
User Level: everyone
Response:  $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=hkc&random=HellkiteChaos&song=$(queryescape))

Command:    !randombgs
User Level: everyone
Response:  $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=bgs&random=iambgs%7CBGS+Mania&song=$(queryescape))

Command:    !randommiku
User Level: everyone
Response:  $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=miku&random=miku%7Cvocaloid&song=$(queryescape))

Command:    !randomweeb
User Level: everyone
Response:  $(urlfetch https://[URL]/rand_request.php?security_key=[KEY]&broadcaster=$(channel)&user=$(twitch $(user) "{{displayName}}")&userid=$(userid)&tier=$(userlevel)&game=$(twitch $(channel) "{{game}}")&type=weeb&random=weeb%7Canime%7Cotaku%7Cjapan%7Cvocaloid&song=$(queryescape))

Refer to this guide to create your own!