After some more reading, update the logic for handling the addons. Leverage an "addons module" (Addon), and require that each addon be a class within that module. Within that class, optionally include a `self.register` method, which will be called when the bot is initialized. This method takes one parameter: the bot instance.Registering the addon adds the bot's instance to an instance of the addon, and vice versa, allowing the instances to communicate. Additionally, registering adds the addons commands. Each registered addon must also include a `matrix_command` method, which takes the message String from Matrix. The intention here is to include additional `*_command` methods for different protocols, without having to change much else. Adding additional protocols will determine how well that works. chronicle_bot.rb: Redo addon logic (details above) addons/utils.rb: Update for new addon logic (details above) addons/roller.rb: Update for new addon logic (details above) |
||
---|---|---|
lib | ||
chronicle | ||
Gemfile | ||
LICENSE.txt | ||
README.md |
Chronicle
Chronicle is a multi-purpose chat bot.
It currently supports Matrix, but has ambitions of supporting Discord in the future.
Chronicle is still heavily work-in-progress, and the hobby of an occasionally productive fellow.
Features
- Ping (returns Pong!; good for testing connectivity)
- Dice Roller (
!roll 2d4
->Roll: 2d4 ([2, 1]) ==> 3
) - 8-ball (
!8ball Will I win the lottery?
-->Try again later
) - More to come!
Planned Features
- Ad-hoc simple custom commands (
!addcommand hello Hey there!
-->!hello
-->Hey there!
) - Simple calculator (
!calc 8 + (9-10)
-->Calc: 8 + (9 - 10) ==> 7
) - Simple games (Blackjack, High/Low)
- A "mystery" game (Kind of like Clue! or Noir Syndrome)
- A "progress quest" like game (time-based character auto-progression)
- Expanded custom commands (allow for commands with arguments)
- Enabling of add-on features (ie., everything mentioned above) per room
- Establish/restrict command permissions per user/role per room.
- Change the command prefix (from default
!
to whatever you'd like!) - Run in a Docker container!
Development
You can run your own instance of Chronicle with a few steps:
- Fork the repository, and clone it locally
- Setup a bot user in Matrix, and get it's "Access Token" (or use your own).
- Export the access token to CHRONICLE_ACCESS_TOKEN for ease of use
- Run
bundle update
to install dependencies. - Run
bundle exec chronicle -d <your-homeserver-address-here> CHRONICLE_ACCESS_TOKEN
- Invite the bot user to a room, and
!ping
to make sure it's working! - Update the
allowed_commands
variable to add additional commands (for now).
Contribute
If you are interested in contributing to Chronicle, first let me say thanks! Next, please follow these steps:
- Fork the repository, and perform any changes you'd like.
- Submit a pull request, explaining the changes.
- Work with me to get those changes merged.
Chronicle is a hobby project, and as such I may not be immediately responsive to any requests. Please do not be discouraged! I will try to address any issues or pull requests in a reasonable time.
Issues
If you find something amiss with Chronicle, please submit an issue! I will try to address it in a reasonable time.
Contact
If you're interested in discussing Chronicle, you can speak with me on Matrix! I'm Vagabond.