navigation

- Joe Bot -

Joe is a library used to write chat bots in the Go programming language.

Fork me on GitHub

Features

  • Chat adapters for Slack, Rocket.Chat, Telegram, Mattermost, IRC and () VK. Adding your own is easy as well.
  • Event processing system to consume HTTP callbacks (e.g. from GitHub) or to trigger events on a schedule using Cron expressions
  • Persistence of key-value data (e.g. using Redis or SQL)
  • User permissions to restrict some actions to privileged users
  • Unit tests are first class citizens, Joe has high code coverage and ships with a dedicated package to facilitate your own tests

Design

  • Minimal: Joe ships with no third-party dependencies except for logging and error handling.
  • Modular: choose your own chat adapter (e.g. Slack), memory implementation (e.g. Redis) and more.
  • Batteries included: you can start developing your bot on the CLI without extra configuration.
  • Simple: your own message & event handlers are simple and easy to understand functions without too much cruft or boilerplate setup.

Getting Started

To get started writing your own bot with Joe, head over to the Quickstart section or directly have a look at the Basic Tutorials to learn the core concepts. If you want to dive right in and want to know what modules are currently provided by the community, then have a look at the Available Modules section. Last but not least, you can find more instructions and best practices in the Recipes section.

Contact & Contributing

To contribute to Joe, you can either write your own Module (e.g. to integrate another chat adapter) or work on Joe’s code directly. You can of course also extend or improve this documentation or help with reviewing issues and pull requests at https://github.com/go-joe/joe. Further details about how to contribute can be found in the CONTRIBUTING.md file.

License

The Joe library is licensed under the BSD-3-Clause License.