Back to School!

9/2/2025

It's been quite a long time!

My summer wasn't too eventful, hence the lack of updates to this website.

I started and quickly abandoned many projects in that time, many just small projects where I wanted to toy with a minor idea, but there was one project that I started around the end of summer that I want to talk about.

So once again I found myself wanting to make a Twitch project. That itch strikes me every couple weeks, followed by instant burnout when I have to do Twitch authentication stuff using TwitchLib. Authentication with TwitchLib was something that I always struggled with and wanted to find a way to skip. I've made authentication code for TwitchLib so many times, and I was sick of it.

The solution?

STREAMER.BOT

Streamer.Bot has a built-in websocket server that I could connect to and get Twitch's messages relayed into my own program without needing to authenticate! The only problem is that my dumbass didn't think about the fact that I'd have to parse the JSON messages myself...

So I spent around a week building a custom library for C# that would let me make a simple reusable client to connect to the server and parse those messages into readable objects I could manipulate and read. During that time I learned that most of the websocket side of Streamer.bot is completely undocumented or out of date. Messages I would receive had data that wasn't specified in the documentation, sometimes they were different to the specs entirely, and most other times it was just unusable. I still pushed through because I'm a stubborn bastard.

Eventually after getting only a couple simple message types implemented, I decided to look back into TwitchLib to try and figure out if I was just being stubborn and... yea I was.

It turns out that ALL of the repositories for TwitchLib have an examples folder with a simple implementation of each part of the library written in simple and easy to read code.

so uh... yea. Back to TwitchLib I go.


Also, how the fuck did this blog get to almost 10k views???