How to build a Twitch bot for free with 0 setup. (Part 3)
In part 2, I explained a bit more of the PHP syntax and how to build a quote command. Now you’ll be able to write a command that accepts input from chat.
We’re gonna build an insult command, which allows a user to direct an insult to another user.
Communication is key
Your bot is learning how to talk.
The way chat and the bot can communicate is via the URL. I’m sure you’ve seen URLs that use a question mark and ampersands:
https://www.youtube.com/watch?v=Tss5ztW4E3M&t=1s
The thing after the question mark is called the query string. It contains key-value pairs separated by ampersands. If you think about it, it’s pretty much like arrays. In that URL, there are 2 pairs:
v
which has a value ofTss5ztW4E3M
t
which has a value of1s
We can access those values in our code:
echo $_GET['v']; // this would output Tss5ztW4E3M
Some of that should look familiar (the brackets and the dollar sign) and some of it shouldn’t (_GET). So far we can deduce it must be a variable and the value it holds must be an array. But we didn’t define $_GET
anywhere, so where does it come from?
We have to go deeper
Not too much though.
Just like thearray_rand()
function was provided to us by PHP out of the box, this variable was too. We call this variable a super global. This array holds values from the query string.
“Don’t you have to put an integer between the brackets to retrieve a value from the array?” Yes, that’s what you do when the value doesn’t have any name. Arrays, like in the query string, can hold key-value pairs. We call them associative arrays. To the left of =>
you have the key and the value on the right:
$person = [
'name' => 'John',
'age' => 23,
'job' => 'Web developer',
'hobbies' => ['guitar', 'running', 'videogames']
];echo $person['hobbies'][2]; // this would output videogames
So for the youtube URL from earlier, you can picture $_GET
in your head like:
$_GET = [
'v' => 'Tss5ztW4E3M',
't' => '1s'
];echo $_GET['t']; // this would output 1s
Back to the insult
Starring the person that wants to lose friends.
Some of you have probably figured out where things are going:
// http://myurl.com?from=johnrivs&to=loremIpsumecho $_GET['to'] . ', ' . $_GET['from'] . ' says you are a doodoo head';
Obviously, something’s missing. If you leave it like that, I’m gonna be the one insulting loremIpsum
all the time whenever someone says !insult user134260394
because johnrivs
and loremIpsum
are hard-coded in the URL. We need to make this dynamic.
Nightbot offers a few variables we can use when adding commands. The ones we need are called $(user)
and $(touser)
. Nightbot will substitute them for the name of the person that triggered the command and the name right next to the command, respectively. So go back to your chat and !addcom !insult $(customapi theurlyougotfromrunnable.com?from=$(user)&to=$(touser))
.
When the user johnrivs
types !insult loremIpsum
, Nightbot will make the call to theurlyougotfromrunnable.com?from=johnrivs&to=loremIpsum
.
Hope that wasn’t too hard. Some other day I will add more parts to this tutorial.
PART 1 | PART 2 | PART 3
Hey there! I’m John Rivs, web developer. After developing a Twitch bot for a while, I’ve decided to explain what’s the first step. My bot looks very differently today from what I show in this tutorial, but it explains almost exactly how my bot started.
Any questions? Leave a comment or hit me up on Twitter.