Update Custom Commands to leverage ActiveRecord and save commands to a database. By default, it will use SQLite. Configuration for this (and potential configuration for PostgreSQL and MySQL) live in `config/db.yml`. Inculde a Rakefile for handling DB creation and migrations. Rakefile: Add Rakefile to handle running the bot, and DB management Gemfile: Update with new gem dependencies db/migrate/*: ActiveRecord migrations for Custom Command custom_commands.rb: Update to leverage ActiveRecord Leverage the Rakefile to start the bot, removing the binary file. Update the Dockerfile to also leverage the Rakefile. Dockerfile: Update to use Rakefile, and install new dependencies chronicle: Remove unnecessary start file Refactor the `chronicle_bot` file into `chronicle` and `matrix` chronicle.rb: General Chronicle setup matrix.rb: Start a Matrix-specific bot Update the bot to read configuration from files, instead of either the environment, or hard-coded values. config/db.yml: Database configuration config/bot.yml: General bot configuration Update the README to reflect the above change with regards to running the bot either using the Rakefile, or using a Docker container.
3.2 KiB
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
- List available commands (
!listcommands
) and get help with them (!help [COMMAND]
) - 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
) - Ad-hoc simple custom commands (
!addcommand hello Hey there!
-->!hello
-->Hey there!
) - Run in a Docker container!
- More to come!
Planned Features
- 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!)
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 its "Access Token"
- Update
config/bot.yml
with the Homeserver URL, and the Access Token - Update
config/db.yml
with any desired changes (defaults use SQLite) - (Optional) Update
config/bot.yml
with any additional changes - Run
bundle update
to install dependencies - Run
rake chronicle:start
- Invite the bot user to a room, and
!ping
to make sure it's working!
Docker
The included Dockerfile is very simplistic, and may be expanded in the future. For now, there is no pre-built image stored in a Hub, so you'll need to build your own.
- Fork the repository, and clone it locally
- Setup a bot user in Matrix, and get its "Access Token"
- Update
config/bot.yml
with the Homeserver URL, and the Access Token - Update
config/db.yml
with any desired changes (defaults use SQLite) - (Optional) Update
config/bot.yml
with any additional changes - Build the image:
docker build -t chronicle-bot .
- Run Chronicle in Docker with
docker run --rm --name chronicle chronicle-bot
- Invite the bot user to a room, and
!ping
to make sure it's working!
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.