This bot allows the creation of join links to non-public rooms in matrix. It uses the Trixnity framework.
I always struggled with the problem that I have private rooms, I want to share with a group of friends. Before the bot, I had to invite all the people. Now I can invite JoinLink and create an invite link. This link can be shared to my friends who want to join my room (including spaces).
- Get a matrix account for the bot (e.g., on your own homeserver or on
matrix.org
) - Prepare configuration:
- Copy
config-sample.json
toconfig.json
- Enter
baseUrl
to the matrix server andusername
/password
for the bot user - Set an encryption key. The bot will use this string as key to encrypt the state events.
- Add yourself (e.g.,
@user:matrix.org
) or your homeserver (e.g.,:matrix.org
) to theusers
(empty == allow all). Users can interact with the bot. - Add yourself to the
admins
(can't be empty)
- Copy
- Either run the bot via jar or run it via the provided docker.
- If you run it locally, you can use the environment variable
CONFIG_PATH
to point at yourconfig.json
(defaults to./config.json
) - If you run it in docker, you can use a command similar to
this
docker run -itd -v $LOCAL_PATH_TO_CONFIG:/usr/src/bot/data/config.json:ro ghcr.io/dfuchss/matrixjoinlink
- If you want to persist sessions, you should persist the data volume
-v $LOCAL_PATH_TO_DATA:/usr/src/bot/data
- If you run it locally, you can use the environment variable
- A user (see user list in configuration file) can invite the bot to a room.
- After the bot has joined use
!join help
to get an overview about the features of the bot (remember: the bot only respond to users in the user list) - In order to create a Join Link simply type
!join link SomeFancyNameForTheLink
and the bot will create a join link. Please make sure that the bot has the ability to invite users.
I'm typically online in the Trixnity channel. So feel free to tag me there if you have any questions.
- The basic functionality is located in Main.kt. There you can also find the main method of the bot.
- Let's assume that you want to share the private room
!private:room.domain
- After you've invited the bot, you can enter
!join link IShareLinksWithYou
- The bot creates a new public room that contains "IShareLinksWithYou" in its name. This room will not be listed in the room directory; for this example its ID
is
!public:room.domain
- If somebody joins the public room, the bot verifies based on two encrypted state events in
!private:room.domain
and!public:room.domain
whether the rooms belong to each other. If so, the bot simply invites the user to the private room. - If you want to disable the share simply type
!join unlink
in the private room. This will invalidate the join link.