An experimental matrix bot for moderation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Sashanoraa 418a79a89d
Fix #11 search not only words
2 days ago
scripts Add tls feature flags 6 months ago
src Fix #11 search not only words 2 days ago
.dockerignore Fix git version in container 2 weeks ago
.envrc Add nix dev environment 2 days ago
.gitignore Add nix dev environment 2 days ago
CONTRIBUTING.md Add to README and add CONTRIBUTING 2 weeks ago
Cargo.lock Emily can now fuzzy search though the ban rules 2 weeks ago
Cargo.toml Emily can now fuzzy search though the ban rules 2 weeks ago
Containerfile Adjust logging in container 1 week ago
LICENSE Update LICENSE (I forgot to do this months ago lol) 1 month ago
LICENSE-fafol.md Update LICENSE (I forgot to do this months ago lol) 1 month ago
LICENSE-hippo.md Update LICENSE (I forgot to do this months ago lol) 1 month ago
README.md Add link to CONTRIBUTING in README 2 weeks ago
build.rs Fix git version in container 2 weeks ago
flake.lock Create nix flake 2 weeks ago
flake.nix Create nix flake 2 weeks ago
shell.nix Don't include rust in shell.nix 2 days ago
test-cmds Clean up old files 2 weeks ago

README.md

Emily

Emily is a cute little matrix bot that helps with moderation <3

Purpose

Emily is primarily being developed to aid in the running and moderation of The Apothecary matrix community and home server. We focusing features that we need or find useful. If you would like to use Emily for yourself you are welcome to, under the terms of the license. We would love feedback and contributions, however we will prioritize our own needs.

Features

Emily has a collection of tools that can help with managing and moderating a matrix server.

Moderator notification

If a user type !mods [message] in any room Emily is in, she will do an @room ping in the control room to alert moderator that some moderation action has been requested. She will also include useful context information in her message.

Tracking media redacted by moderators

If a moderator redacts a piece of media (not posted by them) Emily will post a notification including a link to that media in the control room. This can be useful for other moderators to see later. It also preserves the mxc url of the media which an admin can use to delete that media from your home server's media repo.

Log messages for moderation

Emily can create a text log of recent messages in a room for moderation records

Redact messages

Emily can redact recent messages sent by a user in a room while also create a text log of those messages and surrounding messages for moderation records.

Room templates

Emily can create new rooms from a template room or apply a template room to an existing room. This makes managing large numbers of similar rooms easier. Emily will apply the following to the room

  • The title given in the command
  • The description of the template room with any template variables filled in
  • The room avatar, power levels, join rule, history visibility, and guest access of the template room
  • A canonical alias set to a sluggied version of the name

Setup

Before using Emily you must create a user account for her on your home server. You must also create a room, called the control room, from which you will issue commands to Emily. She will only respond to commands entered in this room.

Emily is configure using environment variables. The follow environment variables must be set:

  • MX_USER - The user name Emily should login in as (ex. @emily:the-apothecary.club).
  • MX_ROOM - The room ID of the control room (ex. !JmUZDmdizioytNxcBx:the-apothecary.club). Note this must be a room id (starts with a !) and not a room alias (starts with a #).
  • STATE_STORE - Path on your local file system where Emily should keep her encryption state store.
  • MX_SESSION - A json string representing Emily's login in session. See Login for how to get this value.

Login

The first time you use Emily you will need her to login in. To do this set the environment variable listed above minus MX_SESSION. Also set the environment variable MX_PASSWORD to the password for Emily's user account. Run Emily and she will print the MX_SESSION value and exit. Set MX_SESSION and unset MX_PASSWORD to run Emily normally.

Install

Emily can be compiled from source or you can use our provided container image codeberg.org/apothecary/mx-emily:latest.

Contributing

See Contributing