Jolt is a custom-built livestream bot for NixillShadosFox's Twitch streams. It is all of the following working together in harmony:
- A Twitch IRC websocket chatbot, API client, and event consumer using TwitchLib
- An OBS Websocket client using OBSWS
- A named pipe server to receive commands sent from Stream Deck via a small client
- A Discord webhook client via DSharpPlus
It is coded in C# as a console app. While the source code is available here, it is not in a state anywhere near "plug-and-play" for other setups. Pieces of it may be made available for general use in the future, however.
If you're looking for a list of commands usable in Nixill's streams, click here.
The parts of the code that I think are the most interesting (and are most likely to receive separate releases for general use) are:
- the End Screen Manager, which updates a list of upcoming streams as well as automatically showing an upcoming raid target
- the Twitch Command Dispatcher, which takes command input from a Twitch chat message and resolves it to a method with parsed parameters.
- the Twitch Reward Dispatcher, which takes rewards defined with a name in code and turns them into on-site channel points rewards, as well as dispatching events to methods as necessary.
Jolt makes use of the following open-source libraries not linked above:
- Nixill, a utilities library that you'd never guess I made! 😄
- Ical.Net to read my calendar for the end stream manager.
- NodaTime, because I'm a Java expat and Joda/Noda handle time classes so much better than Microsoft does.
- NReco.Logging.File, because I lost days trying to make my own combined file-and-console logger and not even succeeding.
- Quartz for scheduling tasks like Super Hexagon Break timers.
- Websocket.Client, because while I'm gonna make my own OBS library from scratch, I did at least want the thread-help that this gives.