Streaming tool (bots, overlay...)
Pythie was originally a twitch bot that was intended to offer viewers interactions with channel points. It evolves towards a tool allowing the streamer to regroup all the activities related to his stream (and more...)
The project offers two approaches:
- an advanced mode that allows advanced customization and complex interactions, via kotlin code. This is the historical configuration mode.
- a UI mode (early stage), which allows a non-developer to customize the experience of his stream. It allows complex actions to be performed by composing several simple elements.
- Chat bot (on twitch / discord)
- Twitch channel point interactions
- Cross connector interactions (i.e. : Twitch event trigger discord message)
- Overlay editor
- Incoming event: Event received by the bot, the main source of trigger interaction
- Outgoing event: Event emitted by the bot, in response of an incoming events
- Connector: Abstraction of an external platform, provides connection method and state, set of incoming and outgoing event
- Event Handler: Transforms an incoming event into a list of outgoing events
- Feature: Group of event handler, possibly with a state, which provides a coherent behavior for the user (more details)
- Descriptor: Model for generating UI from backend object (more details)
https://github.com/delphes99/pythie-bot/projects/1, feel free to create issues to propose new feature
The project is modularized, you can load only what is needed.
The LaunchBot.kt file that launches all modules. The only configuration needed is the configuration of Ngrok, which is mandatory for the majority of connectors because of the webhooks.
./gradlew shadowJar
The jar is generated in ./pythie-bot/build/libs with the name pythie-bot.jar
java -jar ./pythie-bot/build/libs/pythie-bot.jar
You can now connect to bot-ui to configure your bot : http://localhost:8080/admin
For more advanced customization, check all the pythie-bot module, where all the custom features are configured (especially the delphes99.kt file). Any modification requires bot reboot.