Matrix-Discord bridge with modern features.
Find a file
2025-03-01 02:21:17 +13:00
.vscode changing spaces to tabs 2023-08-21 21:04:41 +12:00
docs Update docs for why the bridge has a website 2025-03-01 00:10:56 +13:00
scripts Optional password protection for the web server 2025-02-25 14:36:49 +13:00
src Fix automatic content length workaround switch 2025-02-28 23:30:22 +13:00
test m->d: fix image captions spec, fix upload issues 2025-02-28 00:39:03 +13:00
.c8rc.json Rearrange code (self-review) 2024-03-04 17:02:38 +13:00
.gitignore Tidy up repo 2024-09-15 02:11:43 +12:00
addbot.js Add tests for reactions interaction 2024-09-30 01:42:12 +13:00
addbot.sh Remove token from config file 2024-09-13 23:47:11 +12:00
COPYING license nicense 2023-10-02 23:12:03 +13:00
package-lock.json Support mentions of slash commands 2025-03-01 01:26:38 +13:00
package.json Support mentions of slash commands 2025-03-01 01:26:38 +13:00
readme.md Add screenshot to readme 2025-03-01 02:21:17 +13:00
start.js Sadly, the presence API is worse than I hoped 2025-02-11 01:37:23 +13:00

Out Of Your Element

Modern Matrix-to-Discord appservice bridge, created by @cadence:cadence.moe

Releases Discuss on Matrix

Why a new bridge?

  • Modern: Supports new Discord features like replies, threads and stickers, and new Matrix features like edits, spaces and space membership.
  • Efficient: Special attention has been given to memory usage, database indexes, disk footprint, runtime algorithms, and queries to the homeserver. Efficiency details.
  • Reliable: Any errors on either side are notified on Matrix and can be retried. Messages sent during bridge downtime will still be bridged after it comes back up.
  • Tested: A test suite and code coverage make sure all the logic and special cases work.
  • Simple development: No build step (it's JavaScript, not TypeScript), minimal/lightweight dependencies, and abstraction only where necessary so that less background knowledge is required. No need to learn about Intents or library functions.
  • No locking algorithm: Other bridges use a locking algorithm which is a source of frequent bugs. This bridge avoids the need for one.
  • Latest API: Being on the latest Discord API version lets it access all features, without the risk of deprecated API versions being removed.

What works?

Most features you'd expect in both directions: messages, edits, deletions, formatting (including spoilers), reactions, custom emojis, custom emoji reactions, mentions, channel mentions, replies, threads, stickers (all formats: PNG, APNG, GIF, Lottie), attachments, spoiler attachments (compatible with most clients), embeds, URL previews, presence, discord.com hyperlinks, and more.

Metadata is also synced: people's names, avatars, usernames; channel names, icons, topics; spaces containing rooms; custom emoji lists. Syncing Matrix rooms, room icons, and topics is optional: you can keep them different from the Discord ones if you prefer.

I've also added some interesting features that I haven't seen in any other bridge:

  • Members using the PluralKit bot each get their own persistent accounts
  • Replies from PluralKit members are restyled into native Matrix replies
  • Simulated user accounts are named @the_persons_username rather than @112233445566778899
  • Matrix custom emojis from private rooms are still visible on Discord as a sprite sheet
  • To save space, larger files from Discord are linked instead of reuploaded to Matrix (links don't expire)

For more information about features, see the user guide.

Caveats

  • This bridge is not designed for puppetting.
  • Direct Messaging is not supported until I figure out a good way of doing it.

Get started!

Read the installation instructions →