Skip to content

a modular bot for @matrix-org, written in python using matrix-nio, supporting end-to-end-encryption out of the box

License

Notifications You must be signed in to change notification settings

alturiak/nio-smith

Repository files navigation

Nio Smith

Built with matrix-nio Code style: black Documentation Status #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.