Of course one of the first questions I got when I started streaming Super Mario Maker 2 was "Do you do viewer levels?" to which I respond, of course I do! So people started putting their course codes in my chat and I used Notepad to keep track (blech!) I needed a tool.
While I have mass respect for Jaku and Warp.World I found myself in need of a slightly different solution.
As a streamer, I don't have a mass following on one particular platform, I am slowly growing, but I also have no partnership status anywhere, and therefor no exclusivity to any particular platform.
Warp.World utilizes Nightbot, a wonderful tool as well, but Nightbot explicitly only works directly with YouTube and Twitch, and has some Discord support, the problem is, I'm on Smashcast and Mixer too, and even stream to my own Steam account, and I stream to all of these simultaneously!
No I know I can't make this work with Steam, but I utilize Restream.io to not only stream to all of these platforms, but it has a live chat that works cross platform too including Discord!
So I figured a Discord bot would be in order, but I needed management software and database interaction too. Having recently built a channel expansion bot for a friend I knew I wanted to use NodeJS w/ Discord.js for that. But what about database interaction? What about my manager? I still wanted to keep to Node, so my options quickly became that I need a server software, and a client software.
Alright, server, ExpressJS with Sequelize for Database interactions, and Sockets.io for live data communication.
Client? Well, the most prolific client software with the most documentation for Node ended up being Electron, sure makes sense. Again Sockets.io.
And of course my Discord Bot, which is NodeJS, Sockets.io, and Discord.js
Alright, story time is over, onto the stuff, which is free and open source by the way.
First up, what the client looks like.
You are able to edit all of the course codes, the submitter, and change the status, the status change is important because it actually lets you utilize the SERVER side of things in-stream! The client even tells you what to embed for this to work. Just click on the "Show Status Bar" button.
Full documentation on the client is right here:
The Discord Bot
The discord bot, on the other hand, is designed to handle the Restream re-transmission of chat across platforms and into/out of Discord, commands look something like this.
Note that the cross-platform chat interactions only work if you are actively using the restream chat software. Discord bot works independently of it as well inside your associated Discord channel.
Full documentation of the Discord bot can be found here:
Now onto the heart of it all, the server. This is actually required for any of the above to work, I know I'm writing this somewhat backwards, but people like seeing screenshots. The only screenshot to see for the server is this one.
The server utilizes Sequelize for Database interactions, Sockets.IO for direct data communication, and Express as it's primary server functionality.
Full documentation for the server can be found here.