forcebot-rs-2.0
Twitch bot written in rust
High Level Acceptance Criteria
- For Streamers, an easy way to setup & control bot functionality
- For Channel Chatters, play bot games and interact with the bot with easy intuitive CLI-like commands
- For Custom Module Developers , Custom Module API and guidelines are provided to add custom functionality
Requirements Details
Streamers & Bot administrators should be able to easily deploy the chat bot with some built in functionality
Command responses can be customized based on the target chatter's role. Elevated chat commands should require special channel roles to run.
Custom Module API is provided for Custom Module Developers so they're not required to check on twitch api rate limits for bot responses. Custom Module API should provide a way to access & modify module level persistent variables
Some Built in Custom Modules can be included
Example Custom Modules #todo
- Pyramid Indicator #todo
- Target Pyramid Builder #todo
- OnLive indicator #todo
Specification #todo
Elevated commands require special channel roles to run. In general, roles from most privileged to least are :
- Bot Admin
- the admin must work with the bot in the chat to be recognized as having a temporary channel role
- Broadcaster
- MOD
- VIP
Guest Badges can be given temporarily by those of the same role level or higher
The bot could be set to Silent mode by a MOD, Broadcaster, or Admin chatter. The bot should be Silent on live stream automatically
Bot Responses stay within twitch rate limits, but are generally queued if the bot faces a rate limit.
The bot continually loops through chat responses until applicable bot action can be done
Bot responses should be adjusted so it doesn't trigger other bot prefixes
Bot Modules
Bot Objects are grouped into Modules that can be disabled / enabled by channel by Moderators, Broadcasters, or Bot Admins . By default, loaded modules are enabled by default
Bot Objects #todo
Bot Objects are loaded into the bot and are used during the life of the bot
Bot Objects must be loaded as part of a package
Listeners
Specify conditions to listen within a channel for including
- sender name
- sender badge
- custom conditions given msg content or info
Users can define a callback function for the listener to execute using chatter or bot data
Commands
Commands are a type of listener that trigger from a prefix character or phrase and for a min badge role
Special AdminOnly
commands can be defined
Routines #todo
Implementation
The bot will be written in rust. If data persistence is required, postgres
db might be used
Future Enhancements
Enhancements left for future projects
- Port
forcebot_rs
& originalmodulatingforcebot
functionality StreamElements
points to Bot Gamba Stocks- dynamically load custom crates or package crates (binaries w a library)?