Chronicle: An ambitious Matrix chat bot
Find a file
Bill Niblock 6fe1a7a251 Update how Addons are used
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)
2021-02-14 21:06:46 -05:00
lib Update how Addons are used 2021-02-14 21:06:46 -05:00
chronicle Add very basic Chronicle run script 2021-02-06 22:23:04 -05:00
Gemfile Add README and Gemfile 2021-02-06 22:20:33 -05:00
LICENSE.txt Use the MIT License, at least for now 2021-02-06 22:27:29 -05:00
README.md Add 8ball command 2021-02-07 20:45:54 -05:00

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:

  1. Fork the repository, and clone it locally
  2. Setup a bot user in Matrix, and get it's "Access Token" (or use your own).
  3. Export the access token to CHRONICLE_ACCESS_TOKEN for ease of use
  4. Run bundle update to install dependencies.
  5. Run bundle exec chronicle -d <your-homeserver-address-here> CHRONICLE_ACCESS_TOKEN
  6. Invite the bot user to a room, and !ping to make sure it's working!
  7. 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:

  1. Fork the repository, and perform any changes you'd like.
  2. Submit a pull request, explaining the changes.
  3. 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.