For awhile I've had a goal of building my own custom integrations from scratch, and hosting them myself.
I started this process by learning how to build Twitch chat bots (which actually are based on the IRC - Internet Relay Chat - Protocol).
I was really surprised Twitch used IRC! I had built a few IRC bots many moons ago.
There are freely / readily-available tools to do custom rewards (which I have and still use for certain features; StreamLabs, StreamerBot, StreamElements, etc.), but I like the idea of learning how to do some things myself from the ground-up. For me, the learning is fun; it's like solving a puzzle! Another reason is that it gives me the know-how to build completely custom stuff that isn't available yet, and to understand how it works so that if it breaks I can fix it myself.
Technology changes pretty quickly too, so if I can't maintain it myself and the tool I use breaks then I'm bummed out, stuck waiting for someone else to get time to fix the issue.
One day I might like to build custom tools and integrations for others too.
I've been doing that kind of thing since highschool, and I really enjoy that kind of work - it helps others while also giving me a fun challenge to solve.
I'm a problem solver, and building solutions that solves problems can be fun ^_^
A friend of mine VirtualStella has a cute reward to "Order a Drink" (once per stream).
Her implementation is really cute - you may get a tasty drink, or a horrible experiment...
I wanted something similar with my camping theme, but I wanted to build it from scratch - for the reasons mentioned above ^_^
Anyways! Here are my technical notes on the EventSub integration.
### Goal ###
* Create a custom Channel Points Reward
* Allow my server or service to know when the Channel Points Reward was redeemed/triggered
* Do something in response to the redemption (like push a message to chat)
### Research ###
IN PROGRESS - this section will be updated as I compile my notes!
#### Authentication ####
* app access_tokens vs. user access_tokens
TBD
#### Local Development & Basic Testing ####
TBD
#### Server-Side Testing ####
TBD