[Devember 2021] ChatRat, the most beloved member of twitch chat

Description

ChatRat is a twitch bot for smaller streamers to act like a very dumb member of twitch chat. It should blend in just fine with how dumb twitch chat usually is, at least it certainly does in my experience. It’s good for a laugh, some reactions, or just something to make memes of in a stream. It can definitely help if the chat is a little slow, and if the chat knows they can feed it data, well that’s a conversation starter at least.

At the heart of it is a Markov chain text generator library I built for it, since I couldn’t find one for Go with a very short search in Google. There is now one if you look in the links down below, free to use, go ham. It has a fancy feature for custom context depths which I implemented, I should really document that a little more and it may even be updated by the time you’re reading it.

The bot can do some nice commands it can take from chat to get it to work how you want it to, and plenty more are on their way. They should all be documented on the github page at some point.

Goals

  • I wanted to make a chat bot that mimicked what other people said in chat, but didn’t just copy what they said word for word.
  • I also wanted to dip my feet into the Go programming language, because I haven’t really spent too much time in there, and am very enticed by the scheduling factor of it. It seems really cool.
  • Have a laugh at the dumb things that can be generated from the horrible dataset that is twitch chat.

Links

The main bot repo. GitHub - IAmPattycakes/ChatRat: ChatRat is a twitch chat bot built in Go that is a dedicated shitpost machine. Also does some other things, but for now the main thing is just a markov shitpost generator.
The handy Markov chain text generator library. GitHub - IAmPattycakes/Go-Markov

What’s left?

It’s fully functional right now, just in a bit of a beta state. It’s been running without fail on a stream I watch for a while, and we’ve had a great time with it. But here are the QoL “stretch goals” I have because I just kinda love this project and am going to keep working on it after devember is done.

  • Documentation is what makes it actually functional to other people.
  • Proper safeguards for the streamer so that they can’t get locked out of the bot commands, and more command refinement in general.
  • Blacklisting of words/phrases it shouldn’t say
  • Proper CI/CD with github to get it to have nice releases that aren’t just fully manual.

full disclosure

I did start this project like 2 days before it became active on github (I wanted a proof of concept, and it had OAuth stuff built into the code, definitely no good. So I couldn’t really version control.) But this project is actually only going to be 2 and a half weeks old by the time the new year rolls around. I got the benefit of swapping jobs and being forced to take a couple week break between, so time sink is probably similar to the hour a day folks who started in november.

I would post some examples of how dumb it can be, especially with very low context levels, but most of the screenshots I have are either kinda in-jokes or are just NSFW so it may have to be up to your imagination a little. Or you can find out yourself and test it out on your own stream. If you wanna see it live and in person without having to set it up, stop on by twitch.tv/pomfypanda and it’ll be there 24/7 for everyone’s enjoyment. Just be warned, it says some things. Also that isn’t my stream, I just make the bot.

3 Likes

Well over the last day, I got blacklisting, CI/CD, rudimentary getting started documentation going, and “streamer godmode” meaning they can get around being ignored or untrusted regardless. Fixes the whole lockout thing. Now the only CI/CD stuff I can think of wanting is Docker containers.

As for features to add next, I think the next thing is to make the emote spam more configurable and extensible. Then there’s dealing with events, channel point redeems, etc. But that’s going to be attaching to a whole different API, so really won’t happen before the end of devember unfortunately.

Hello, IAmPattycakes.
Thank you for your bot, it’s really easy to use.
Can you please tell does it support cyrillic?
I’m using it on ru-speaking twitch channels and bot only repeat (copy) chat line, not combining new lines. With any “chatContextDepth” I set.
My current chat.log is ~280KB (~1000 lines)

added later:
and can I blacklist words by mask (with asterix ‘*’)?