Awesome
Nio Smith
A plugin-based bot for @matrix-org,
written in python using
matrix-nio,
supporting end-to-end-encryption out of the box.
It's based on the lovely nio-template by @anoadragon453
Pull Requests and feedback welcome. :-)
Plugins
See plugins/README.md for further details on plugin capabilities.
Features
- ✔ dynamic plugin-loading (on startup), just place your plugin in the
plugins
-directory - ✔ transparent end-to-end encryption (E2EE)
- ✔ configurable command-prefix
- ✔ fuzzy command matching (for the autocorrect-victims among us)
- ✔ silently ignores unknown commands to avoid clashes with other bots using the same command prefix
- ✔ dynamic population of
help
-command with plugins valid for the respective room - ✔ autojoin channels on invite (can be restricted to specified accounts)
- ✔ resilience against temporary homeserver-outages (e.g. during restarts)
- ✔ resilience against exceptions caused by plugins
- ✔ simple rate-limiting to avoid losing events to homeserver-side ratelimiting
- ❌ cross-signing support
- ❌ dynamic plugin-loading (at runtime)
- ❌ user-management
Setup
docs/SETUP.md contains a short guide on getting you started with the bot.
Requirements
- python 3.11 or later (be aware that specific plugins might require newer python versions).
- libolm
- matrix-nio with end-to-end-encryption enabled
- fuzzywuzzy for fuzzy command matching and nick linking (yes, it's worth it)
- Pillow for image-handling
- blurhash-python to generate blurhashes of image files
- aiofiles for file-handling
- requests for fetching images
See plugins/README.md for further details on additional plugin requirements.
Breaking changes
Please see docs/BREAKING.md for a list of breaking changes.
Project Structure
Please see docs/STRUCTURE.md for a description of the project structure and included files.