Package: matrix-reminder-bot
Matrix Reminder BotA short bot written withnio-template.FeaturesSet remindersHave the bot remind you or the whole roomReminders persist between bot restartsAlarms - persistent notifications for a reminder until silencedSupports end-to-end encrypted roomsInstallmatrix-reminder-bot requiresmatrix-nio, which supports
participation in end-to-end encryption rooms! To do so, it makes use of thelibolmC library.  This library
must be installed to allow for end-to-end encryption functionality, and
unfortunately it isalsorequired for functional message polling, so it is
practically a hard required for this program.Unfortunately, installation of this library can be non-trivial on some
platforms. However, with the power of docker, dependencies can be handled with
little fuss, and it is thus the recommended method of installingmatrix-reminder-bot. Native installation instructions are also provided, but
be aware that they are more complex.DockerRecommended.Follow the dockerinstallation instructions.Native installationInstall libolmYou can installlibolmfrom source,
or alternatively, check your system's package manager. Version3.0.0or
greater is required.(Optional) postgres development headersBy default, matrix-reminder-bot uses SQLite as its storage backend. This is
fine for a few hundred users, but if you plan to support a much higher volume
of requests, you may consider using Postgres as a database backend instead.If you want to use postgres as a database backend, you'll need to install
postgres development headers:Debian/Ubuntu:sudo apt install libpq-dev libpq5Arch:sudo pacman -S postgresql-libsInstall Python dependenciesCreate and activate a Python 3 virtual environment:virtualenv -p python3 env
source env/bin/activateInstall python dependencies:pip install matrix-reminder-bot(Optional) If you want to use postgres as a database backend, use the following
command to install postgres dependencies alongside those that are necessary:pip install "matrix-reminder-bot[postgres]"ConfigurationCopy the sample configuration file to a newconfig.yamlfile.cp sample.config.yaml config.yamlEdit the config file. Thematrixsection must be modified at least.(Optional) Set up a Postgres databaseCreate a postgres user and database for matrix-reminder-bot:sudo -u postgresql psql createuser matrix-reminder-bot -W  # prompts for a password
sudo -u postgresql psql createdb -O matrix-reminder-bot matrix-reminder-botEdit thestorage.databaseconfig option, replacing thesqlite://...string withpostgres://.... The syntax is:database: "postgres://username:password@localhost/dbname?sslmode=disable"See also the comments insample.config.yaml.RunningDockerRefer to the dockerrun instructions.Native installationMake sure to source your python environment if you haven't already:source env/bin/activateThen simply run the bot with:matrix-reminder-botBy default, the bot will run with the config file at./config.yaml. However, an
alternative relative or absolute filepath can be specified after the command:matrix-reminder-bot other-config.yamlUsageInvite the bot to a room and it should accept the invite and join.Setting a reminderHave the bot ping you in the room about something:!remindme <time>; <reminder text><time>is a time that can be expressed in natural language. Examples
include "tomorrow at noon", "on thursday at 5pm", "in 1 week", etc.<reminder text>is the text that the bot will remind you with.Have the bot ping you and everyone else in the room about something
(assuming the bot has permissions to do so):!remindroom <time>; <reminder text>Recurring remindersTo create a recurring reminder, puteveryfollowed by a length of
time, then the time that the reminder should first go off, and then
the reminder text:!remindme every 1w; tuesday; take out the trash!remindroom every 5m; 1m; you are lovedCron-style remindersIf you need more complicated functionality for your reminder's
timing, you can make use of cron tabs. You can read a guide on
cron tabshere.In short they allow you to execute more complicated, recurring
reminders, such as those that should only fire during weekdays.!remindme cron * 9 * * mon-fri; time for the daily stand upThe above reminder would fire each weekday at 9:00am.!remindme cron 0/30 9-18 * * mon,wed,fri; take a short breakThe above reminder would fire every 30 minutes after 9:00am,
until 6:30pm, and only on Monday, Wednesday and Friday.List upcoming reminders!listremindersThis will output a list of reminders and when they will fire next:sometime Do the dishes (every 1d)
sometime Take out the trash
sometime Send email to GrandmaCancel a reminder!cancelreminder <reminder text>Setting an alarmAlarms are the same as a reminder, but they will repeat every 5 minutes
after firing until they are silenced.Creating an alarm is the same syntax as creating a reminder, besides a
different command:!alarmme <time>; <reminder text>!alarmroom every <recurring time>; <start time>; <reminder text>Silencing an alarmAn alarm can be silenced with the following command:!silence <reminder text>DevelopmentPlease seeCONTRIBUTING.md.