Bot Talk

Introduction

Our channel’s primary bot, ToBeOrNotToBot sends messages in chat in response to chat commands as well as events that occur during the show such as a chatter’s first message of the day, the opening of voting, etc.

Inspired by the tremendous creativity chat has shown in coming up with song titles, venue names, and tour names, we’re now adding the ability to add custom messages ToBeOrNotToBot can use during these scenarios.

Important – Please Read

  1. !bot is very beta!!!
  2. Normal chat rules cover anything you might give ToBeOrNotToBot to say.
  3. A message is currently limited to 400 characters, including variables.
  4. Everything you submit will be reviewed first by a moderator, and possibly edited, before it’s added to ToBeOrNotToBot’s vocabulary.
  5. There is no guarantee if or when your message will be used, particularly as more and more custom messages are added. ToBeOrNotToBot has been designed to be unpredictable.
  6. Currently you can only submit custom messages while the show is live.

The Future of !bot

Depending on how much chat enjoys contributing to this we may continue to add more events and commands that trigger messages and possibly add additional features.

Expand to read our !bot To Do List

This is our dream list… meaning there is no timetable for if or when these features will ever be implemented

  1. Create a way for people to add messages offline, in bulk, and privately in case they want to keep their messages a surprise for the rest of chat
  2. Allow the creation of messages that are timed to be sent on a specific date.
  3. Add a second bot and the ability for the bots to have scripted conversations with each other at random times
  4. Assign every message a “mood”, so that each day we can randomly assign a mood for the Bot and have it only use messages consistent with its current mood.
  5. Allow users the option of letting other chatters add custom greetMe’s for them (currently users can only add their own greetMe’s or mod greetMe’s.
  6. Possibly add a notification system for when a custom message has been used so the creator can see on VOD if they didn’t attend that particular show.

 

Getting started –  Custom Greeting from ToBeOrNotToBot

ToBeOrNotToBot has the ability to greet you with a custom greeting after you type your first message in chat each show. Let’s say you want it to say “Hey there, beautiful!”. To add this phrase, you’d type the following command into chat:

!bot greetMe Hey there, beautiful!

Notice the structure of this command. Anytime you submit a custom message to ToBeOrNotToBot you’ll follow the same basic format:

!bot [category] [message]

So in the above example, greetMe is the category and Hey there, beautiful! is the message.

You can add multiple custom messages to a category for ToBeOrNotToBot to choose between. So, in the case of greetMe, if you submit enough messages, you’ll be greeted differently almost every day.

Note: The greetMe category is unique in that currently it is the only category where the messages you submit will only be used in response to you.

Variables (local)

Some message categories include “local” variables specific to the category. By default when ToBeOrNotToBot sends a greetMe message it begins with your username like this:

ToBeOrNotToBot: @twitchUser – Hey there beautiful!

However, with the use of a variable (hashtags on both sides), you can position the username wherever you’d like it:

!bot greetMe Hey there, beautiful #username#!

Using this message template, ToBeOrNotToBot would generate the following:

ToBeOrNotToBot: Hey there beautiful @twitchUser!

Variables (global)

In contrast with “local” variables, “global” variables can work in any !bot talk. Here are two examples that use the global variable #venue#:

!bot greetMe Welcome to #venue#!
!bot random I seem to have gotten lost… can someone give me directions to #venue#?

When using either of the templates, ToBeOrNotToBot would replace #venue# with the same value, whatever the current venue of the day is:

ToBeOrNotToBot: @twitchUser Welcome to The Restaurant at the End of the Universe!
ToBeOrNotToBot: I seem to have gotten lost… can someone give me directions to The Restaurant at the End of the Universe?

Expand for list of Global Variables
  • botFollowers — ToBeOrNotToBot’s follower count
  • botUrl — link to ToBeOrNotToBot’s channel
  • dayName — returns the current day name (e.g. Tuesday) in ET time zone
  • discord — links to The Kid’s discord server
  • facebook — link to The Kid’s facebook page
  • faqUrl — link to the FAQ
  • instagram — link to The Kid’s instagram page
  • modRandom — returns a random username of one of our mods who is currently logged into chat
  • otherBot — name of a competitor bot on Twitch that ToBeOrNotToBot is trying to surpass in followers
  • otherBotFollowers — number of followers a competitor bot on Twitch has that ToBeOrNotToBot is trying to surpass
  • showNotes — notes about today’s show (what’s new…)
  • songs — list of songs in current show (e.g. [1] Slopes Of Uncertainty [2] Abstract Anomaly )
  • tour — name of current tour
  • tourRequester — name of viewer who suggested the tour name
  • twitter — link to The Kid’s twitter page
  • usernameRandom — returns a random username of someone who is logged into chat (limited to viewers who are regulars and have already typed at least 5 messages already that day)
  • venue — the name of the venue for the current show
  • venueRequester — name of viewer who suggested the venue
  • venueWithPreposition — the name of the venue for the current show along with the preposition required to work with phrase We’re live [preposition] [venue name]

Options {option1|option2|…}

Options are an easy way to add variety to a custom message without having to create multiple message templates.

Take this example for instance:

!bot greetMe Hope you’re having a {lovely|wacky|breezy} day!

The curly braces contain an option set with 3 options for ToBeOrNotToBot. Each option is separated by vertical bars (shift + \ on most keyboards). When ToBeOrNotToBot sees a list of options like this it will randomly choose one of them. So using the above example, when it sends your message it might say any one of the following:

ToBeOrNotToBot: Hope you’re having a lovely day!
ToBeOrNotToBot: Hope you’re having a wacky day!
ToBeOrNotToBot: Hope you’re having a breezy day!

You can nest option sets within option sets like this:

!bot random  {!key {A-|G|Bb}|!bpm {90|100|101}|!sound {isc|cia}}

Note: Currently you are limited to 10 option sets per message. And each option set is limited to 10 options.

Multipart Messages

You can create multipart messages using Pauses and Delays. There can be multiple Pauses and/or Delays in a single !bot talk.

Pause Format: {P=[Number of seconds to pause between messages, between 1-8]}

During Pauses, ToBeOrNotToBot will not send any unrelated messages in between your multipart !bot talk. For that reason Pauses are limited to a max of 8 seconds.

Here’s an example of a Pause:

!bot random Sorry, I’ve got to change the laundry. I’ll be back in 3 seconds. {P=3} Ok… I’m back

This would generate the following:

8:46:00 – ToBeOrNotToBot: Sorry, I’ve got to change the laundry. I’ll be back in 3 seconds.
   …after a 3 second delay…
8:46:03 – ToBeOrNotToBot: Ok.. .I’m back.

Delay Format: {D=[Number of seconds to delay before sending next related message]}

Unlike Pauses, Delays can be any number of seconds since ToBeOrNotToBot can send other unrelated messages during the delay. Meaning you could theoretically have ToBeOrNotToBot say something and then have it say a followup message years in the future!

Here’s an example of a Delay:

!bot random In an hour I’m going to tell you a secret… {D=3600} Oh yeah, my secret… My first job was passing butter.

This would generate the following:

8:50:00 – ToBeOrNotToBot: In an hour I’m going to tell you a secret…
   …an hour passes…
9:50:00 – ToBeOrNotToBot: Oh yeah, my secret… My first job was passing butter.

!bot Message Template Categories

Notes:

  • Structure: When adding custom message templates always use this format, !bot [category] [message]
  • Triggered by: Refers to the action that triggers ToBeOrNotToBot to send a message that uses a custom template from the category
  • Required Variables: If a message template category lists a required variable, you must include the variable in your message template.
  • Optional Variables: Are just that. Optional. You do not need to include them in your template

Jump to:

setlist message with a list of the songs created up to the current point in the show
Triggered by: !setlist chat command
Required Variables: @songs@    - -   list of songs (e.g. [1] Slopes Of Uncertainty [2] Abstract Anomaly )
Optional Variables: @username@
Example Scenario: We've played songs titled 'Slopes Of Uncertainty' and 'Abstract Anomaly'
This setlist template:
!bot setlist Our set so far... @songs@
Will generates this:
ToBeOrNotToBot: @TwitchUser - Our set so far... [1] Slopes Of Uncertainty [2] Abstract Anomaly


bitsThanks (thank you from ToBeOrNotToBot for the bits)
botFollow (a request from ToBeOrNotToBot for you to follow its channel)
botTalk (a request from Tooby for help writing his script for a specific category)
donationAlert (notify chat of donation)
ethanhawke (informs chat how many times "ethan hawke" has been typed in chat)
favorite (Tooby confirms the current song has been saved to your list of favorites)
followage (length of time user has been following the channel)
greetMe (greeting from ToBeOrNotToBot)
greetMod (mod greeting from ToBeOrNotToBot)
hostFollow (message asking our viewers to go follow the host)
hostThanks (message thanking the host)
preorderAlert (thank you from ToBeOrNotToBot for the pre-order)
random (random thought from ToBeOrNotToBot)
requestCongratsFirst (congratulations for first request)
setlist (list of the songs created up to the current point in the show)
songAfter (message stating bot's reaction to finished song)
songBefore (message stating bot's anticipation to music)
songDuring (Tooby's reaction to the music)
subAlert (notify chat of new subscription)
subRenewalAlert (notify chat of subscription renewal)
supportThanks (thank you from Tooby)
tieBroken (Tooby's reaction to the tie-break)
titleCongrats (congratulations to user with the winning title )
titleCongratsFirst (congratulations from bot to the user with their first winning title )
uptime (length of time The Etcetera Kid has been live today)
voteBegin (message informing chat they can start voting)
voteDuring (message related to voting (randomly and not every vote))
voteEnd (message informing chat that voting has ended)
willItBlend (an answer to 'will it blend?')
bitsThanks thank you from ToBeOrNotToBot for the bits
Triggered by: a cheer in chat
Optional Variables: #bits#    - -    Number of bits
  #username#
Example Scenario: @TwitchUser cheers with a 100 bits.
This bitsThanks template:
!bot bitsThanks #username# Wow! Thanks for the #bits# bits!!!
Will generate this:
ToBeOrNotToBot: @TwitchUser Wow! Thanks for the 100 bits!
botFollow a request from ToBeOrNotToBot for you to follow its channel
Triggered by: randomly (once per show)
Required Variables: #botUrl#    - -    link to ToBeOrNotToBot's channel
Optional Variables: #botFollowers#    - -    ToBeOrNotToBot's follower count
  #otherBot#    - -    name of a bot on Twitch that ToBeOrNotToBot is trying to surpass in followers
  #otherBotFollowers#    - -    this bot's follower count
Example Scenario: PhantomBot has 18 followers and ToBeOrNotToBot has 2
This botFollow template:
!bot botFollow So, umm guys.... #otherBot# has been talking trash about how it has #otherBotFollowers# followers and I've only got #followers#... Hint, hint... #url#
Will generate this:
ToBeOrNotToBot: So, umm guys.... PhantomBot has been talking trash about how it has 18 followers and I've only got 2... Hint, hint... https://www.twitch.tv/tobeornottobot
botTalk a request from Tooby for help writing his script for a specific category
Triggered by: just before song starts
Required Variables: #category#    - -    Bot talk category
Optional Variables: #unused#    - -    Number of messages left that haven't been used yet
Example Scenario:
This botTalk template:
!bot botTalk Help write my script! I only have #unused# unused #category# messages left!
Will generate this:
ToBeOrNotToBot: Help write my script! I only have 5 unused botFollow messages left!
donationAlert notify chat of donation
Triggered by: donation
Required Variables: #amount#    - -    amount donated
  #username#
Example Scenario: The Kid receives a donation of $5 from @twitchuser
This donationAlert template:
!bot donationAlert Donation Alert!!! Just received #amount# from #username#!
Will generate this:
ToBeOrNotToBot: Donation Alert!!! Just received $5 from @twitchuser!
ethanhawke informs chat how many times "ethan hawke" has been typed in chat
Triggered by: !ethanHawke chat command
Required Variables: #hawkeCount# - number of times "ethan hawke" has been typed in chat
Optional Variables: #hawkeCommandCount# - number of times !ethanhawke command has been run
  #username#
Example Scenario:
This ethanhawke template:
!bot ethanhawke The words "Ethan Hawke" have graced our channel with their presence a total of #hawkeCount# times. And this command inexplicably has been run #hawkeCommandCount# times.
Will generate this:
ToBeOrNotToBot: The words "Ethan Hawke" have graced our channel with their presence a total of 206 times. And this command inexplicably has been run 143 times.
favorite Tooby confirms the current song has been saved to your list of favorites
Triggered by: !favorite or !fave command in chat
Optional Variables: #username#
Example Scenario:
This favorite template:
!bot favorite I've added the current song to your list of favorites
Will generate this:
ToBeOrNotToBot: I've added the current song to your list of favorites
followage length of time user has been following the channel
Triggered by: !followAge
Required Variables: #dateFollow#    - -    Mon dd, YYYY (e.g. Oct 11, 2016)
  #daysFollowed#    - -    (e.g. 81 days, 17 hours, 7 minutes, 59 seconds)
Optional Variables: #username#
Example Scenario:
This followage template:
!bot followage You first followed The Etcetera Kid on #dateFollowed# (#daysFollowed#).
Will generate this:
ToBeOrNotToBot: You first followed The Etcetera Kid on Oct 11, 2016 (81 days, 17 hours, 7 minutes, 59 seconds).
greetMe greeting from ToBeOrNotToBot
Triggered by: response to a chatter's first message of the day
Optional Variables: #username#
Example Scenario: Your username is k&ppa
This greetMe template:
!bot greetMe !greetMe Hey there, beautiful #username#!
Will generate this:
ToBeOrNotToBot: Hey there, beautiful @k&ppa!
greetMod mod greeting from ToBeOrNotToBot
Triggered by: response to a mods first message of the day if they don't have custom greetMe messages
Optional Variables: #username#
Example Scenario:
This greetMod template:
!bot greetMod Hey there supermod!
Will generate this:
ToBeOrNotToBot: Hey there supermod!
hostFollow message asking our viewers to go follow the host
Triggered by: someone hosting the channel (minimum 5 viewers)
Required Variables: #username#    - -    host's name
  #url#    - -    host's Twitch url
Example Scenario: @TwitchUser hosts our channel with 25 viewers.
This hostFollow template:
!bot hostFollow Hey team, make sure to go check out #username# and give them a follow!!!
Will generate this:
ToBeOrNotToBot: Hey team, make sure to go check out @TwitchUser and give them a follow!!!
hostThanks message thanking the host
Triggered by: someone is hosting the channel (minimum 5 viewers)
Required Variables: #username#    - -    host's name
  #hostViewers#    - -    number of viewers from host
Example Scenario: @TwitchUser hosts our channel with 25 viewers.
This hostThanks template:
!bot hostThanks Woohoo! #username# is now hosting us with #hostViewers# viewers! Thanks #username#!!! <3
Will generate this:
ToBeOrNotToBot: Woohoo! @TwitchUser is now hosting us with 25 viewers! Thanks @TwitchUser!!!
preorderAlert thank you from ToBeOrNotToBot for the pre-order
Triggered by: somebody pre-ordering the live album of the show
Example Scenario:
This preorderAlert template:
!bot preorderAlert Yo Kid! Somebody just pre-ordered the live album for tonight's show! Thanks for the pre-order whoever you are!!!!
Will generate this:
ToBeOrNotToBot: Yo Kid! Somebody just pre-ordered the live album for tonight's show! Thanks for the pre-order whoever you are!!!!
random random thought from ToBeOrNotToBot
Triggered by: random occurrence, will only happen once
Example Scenario:
This random template:
!bot random Someday I'd like to swim in the ocean.
Will generate this:
ToBeOrNotToBot: Someday I'd like to swim in the ocean.
This random template:
!bot random I'm feeling pretty claustrophobic today. The Kid really needs to get me some more memory!
Will generate this:
ToBeOrNotToBot: I'm feeling pretty claustrophobic today. The Kid really needs to get me some more memory!
requestCongratsFirst congratulations for first request
Triggered by: a user gets their first request on a song
Required Variables: #users#    - -    user or users with first request on a song
Example Scenario: @TwitchUser and @KappaUser have their first request on a song
This requestCongratsFirst template:
!bot requestCongratsFirst Woohoo! Congrats to #users# on your first request in a song!!!
Will generate this:
ToBeOrNotToBot: Woohoo! Congrats to @TwitchUser and @KappaUser on your first request in a song!!!
setlist list of the songs created up to the current point in the show
Triggered by: !setList
Required Variables: #songs#    - -    list of songs (e.g. [1] Slopes Of Uncertainty [2] Abstract Anomaly )
Optional Variables: #username#
Example Scenario: We've played songs titled "Slopes Of Uncertainty" and "Abstract Anomaly"
This setlist template:
!bot setlist Our set so far... #songs#
Will generate this:
ToBeOrNotToBot: Our set so far... [1] Slopes Of Uncertainty [2] Abstract Anomaly
songAfter message stating bot's reaction to finished song
Triggered by: randomly (and not every time) after song
Example Scenario:
This songAfter template:
!bot songAfter My supply is running low, but here's one etcCalp.
Will generate this:
ToBeOrNotToBot: My supply is running low, but here's one .
songBefore message stating bot's anticipation to music
Triggered by: randomly (and not every time) before song
Example Scenario:
This songBefore template:
!bot songBefore CurseLit Time to Etceterate CurseLit
Will generate this:
ToBeOrNotToBot: Time to Etceterate
songDuring Tooby's reaction to the music
Triggered by: randomly (and not every time) during song
Example Scenario:
This songDuring template:
!bot songDuring This is my jam!!!
Will generate this:
ToBeOrNotToBot: This is my jam!!!
subAlert notify chat of new subscription
Triggered by: new subscription
Required Variables: #username#
  #subType#    - -    ( e.g. Twitch, Bandcamp, or Patreon )
Example Scenario: @TwitchUser subscribes on Twitch
This subAlert template:
!bot subAlert Sub Alert!!! #username# just subbed on #subType#!
Will generate this:
ToBeOrNotToBot: Sub Alert!!! @TwitchUser just subbed on Twitch!
subRenewalAlert notify chat of subscription renewal
Triggered by: subscription renewal
Required Variables: #username#
  #subType#    - -    e.g. Twitch, Bandcamp, Patreon.
  #subMonths#    - -    months subbed
Optional Variables: #username#
Example Scenario: @TwitchUser resubs on Twitch for 10 months
This subRenewalAlert template:
!bot subRenewalAlert #subType# ReSub Alert!!! #username# has subscribed for #subMonths# consecutive months now!
Will generate this:
ToBeOrNotToBot: Twitch ReSub Alert!!! @TwitchUser has subscribed for 10 consecutive months now!
supportThanks thank you from Tooby
Triggered by: donation or subscription (your reply must work for either)
Optional Variables: #username#
Example Scenario:
This supportThanks template:
!bot supportThanks Thanks #username# for your generous support!
Will generate this:
ToBeOrNotToBot: Thanks @TwitchUser for your generous support!
tieBroken Tooby's reaction to the tie-break
Triggered by: Random Number God casting tie-breaking vote in poll
Optional Variables: #greek# - the username of the Greek diety casting tie-breaking vote
Example Scenario:
This tieBroken template:
!bot tieBroken Tie break, Kid? More like vote rigged by #greek#.
Will generate this:
ToBeOrNotToBot: Tie break, Kid? More like vote rigged by Apollo_!RNG!.
titleCongrats congratulations to user with the winning title
Triggered by: title poll ending
Required Variables: #winningTitle#    - -    the winning title
  #titleWinCount#    - -    number of user's titles that have won so far
  #otherWinningTitles#    - -    user's other winning titles
Optional Variables: #username#    - -    username of winner
Example Scenario: @TwitchUser's title "Best Title Ever" wins the song title poll. @TwitchUser's previous winning titles include "The Aardvark"
This titleCongrats template:
!bot titleCongrats Wow! Congrats #username#! You can add #winningTitle# to your list of winning titles including #otherWinningTitles#.
Will generate this:
ToBeOrNotToBot: Wow! Congrats @TwitchUser! You can add Best Title Ever to your list of winning titles including The Aardvark.
titleCongratsFirst congratulations from bot to the user with their first winning title
Triggered by: poll ending
Required Variables: #winningTitle#    - -    the winning title
Optional Variables: #username#    - -    username of winner
Example Scenario: @TwitchUser's title "The Aardvark" wins the song title poll.
This titleCongratsFirst template:
!bot titleCongratsFirst Congrats #username# on naming your first song with #winningTitle#!
Will generate this:
ToBeOrNotToBot: Congrats @TwitchUser on naming your first song with The Aardvark!
uptime length of time The Etcetera Kid has been live today
Triggered by: !uptime
Required Variables: #timeStreaming#    - -    length of time The Kid has been streaming
Optional Variables: #username#
Example Scenario: The Kid has been streaming for 2 hours, 5 minutes, 9 seconds.
This uptime template:
!bot uptime The Etcetera Kid has been delivering a stream of 1s and 0s over the interwebs for #timeStreaming#.
Will generate this:
ToBeOrNotToBot: The Etcetera Kid has been delivering a stream of 1s and 0s over the interwebs for 2 hours, 5 minutes, 9 seconds.
voteBegin message informing chat they can start voting
Triggered by: voting for a poll starting
Optional Variables: #pollType#    - -    venue, song title, or first sound
Example Scenario: A poll to choose the song title begins accepting votes
This voteBegin template:
!bot voteBegin You may now begin voting on the #pollType#.
Will generate this:
ToBeOrNotToBot: You may now begin voting on the song title.
voteDuring message related to voting (randomly and not every vote)
Triggered by: voting for a poll is in process
Optional Variables: #pollType#    - -    venue, song title, or first sound
Example Scenario:
This voteDuring template:
!bot voteDuring The 7th #pollType# is clearly the best. Kappa.
Will generate this:
ToBeOrNotToBot: The 7th venue is clearly the best.
voteEnd message informing chat that voting has ended
Triggered by: voting for a poll has ended
Optional Variables: #pollType#    - -    venue, song title, or first sound
Example Scenario:
This voteEnd template:
!bot voteEnd Voting is closed.
Will generate this:
ToBeOrNotToBot: Voting is closed.
willItBlend an answer to 'will it blend?'
Triggered by: The !willitblend command
Optional Variables: #username#
Example Scenario:
This willItBlend template:
!bot willItBlend Only one way to find out! MrDestructoid
Will generate this:
ToBeOrNotToBot: Only one way to find out!