Matrix Event Bot
Fedora transitioned its virtual events (e.g. Release Parties) to Pretix (for ticketing) and Matrix (for communication) in May 2024, starting with the Fedora Linux 40 Release Party. The manual process used then was to periodically download CSV data from Pretix and sort through it in a spreadsheet to determine who had not been invited yet. This happened while attendees continued to register leading up to and during the event.
To help make this work more efficient for future volunteers, a Matrix bot was created to assist with automating this process. This document aims to serve as a high-level overview of how to set up and make use of the bot for event organizers.
Bot Setup and Infrastructure
The bot is implemented as a plugin for the popular Matrix bot platform Maubot, the same system that other fedora Matrix bots are made with. The instructions for setting up the bot are largely the same regardless of where it runs and can be found in the README.
Ultimately, the goal is for this bot to be run on Fedora-managed infrastructure alongside the existing bots (such as meetbot and zodbot) so that the task of bot hosting and setup can be taken off the shoulders of event organizers.
If you would like to host an instance of the bot yourself, it is helpful to have the following things ready before starting:
-
A Matrix account to use for the bot (one can be obtained from the current Fedora Community Architect to avoid using a personal one tied to a FAS login)
-
The ability to access Pretix and manage the event that you plan to use the bot with
-
(Optionally, for additional automation) a public facing web domain that you can point at the bot
Running on Communishift
If you are planning to use Communishift to host the bot for multiple fedora events, be aware that some additional work may still needed to fully support multiple events, as well as GDPR considerations.
GDPR Considerations
When hosting on Communishift, you should also be aware of Communishift’s policy on Personal Information. This section is based on this communishift provisioning ticket.
This bot does require processing, and potentially storing, a very limited set of personal information. You may have some additional responsibilities as the organizer of the event (or operator of the bot) in the event that someone chooses to exercise their rights under the GDPR. |
What information does the bot process? The bot fetches the Pretix order identifier and the users Matrix ID from Pretix.
What information does the bot store? The bot may store the Pretix order identifier in memory or on disk. The bot does not directly store the users Matrix ID, however their Matrix ID may still appear in the bot’s logs (there is an open issue to address this)
Why is this information needed and how is it used? The Pretix order identifer is used for the purposes of allowing the bot to avoid repeat-processing of duplicate orders. The user’s Matrix ID is used in order to invite the user to the Matrix room. The directions in the README mention that event organizers should add help text next to the Matrix ID prompt to both inform the user that this is how their Matrix ID wil be used, and also direct them to enter it in the correct format.
Bot Usage
The bot aims to be as simple as possible for event organizers to use and has a few basic commands.
Prior to the event, the bot needs to be given a few pieces of information:
-
What Matrix rooms you want to use for the event
-
How the bot should connect to Pretix
This information is provided via commands such as !setroom
and !authorize
.
The bot also has a few convenience commands for checking the status of various aspects of the bot, as well as a command to mass-invite users from Pretix.
For full documentation about the commands available, see the Usage section of the README.
One notable drawback of the bot with regard to commands is that, in order to prevent event attendees from messing with the bot, the bot is set up to only respond to commands that are given by Matrix accounts specifically listed in the bot’s configuration. There is an open issue to improve this.
Want to help? Learn how to contribute to Fedora Docs ›