Mautrix Telegram Versions Save

A Matrix-Telegram hybrid puppeting/relaybot bridge

v0.11.2

2 years ago

N.B. This will be the last release to support Python 3.7. Future versions will require Python 3.8 or higher. In general, the mautrix bridges will only support the lowest Python version in the latest Debian or Ubuntu LTS.

Added

  • Added simple fallback message for live location and venue messages from Telegram.
  • Added support for t.me/+code style invite links in !tg join.
  • Added support for showing channel profile when users send messages as a channel.
  • Added "user joined Telegram" message when Telegram auto-creates a DM chat for a new user.

Improved

  • Added option for adding a random prefix to relayed user displaynames to help distinguish them on the Telegram side.
  • Improved syncing profile info to room info when using encryption and/or the private_chat_profile_meta config option.
  • Removed legacy community_id config option.

Fixed

  • Fixed newlines disappearing when bridging channel messages with signatures.
  • Fixed login throwing an error if a previous login code expired.
  • Fixed bug in v0.11.0 that broke !tg create.

v0.11.1

2 years ago
  • Added support for message reactions.
  • Added support for spoiler text.
  • Improved support for voice messages.
  • Improved color of blue text from Telegram to be more readable on dark themes.
  • Fixed syncing contacts throwing an error for new accounts.
  • Fixed migrating pre-v0.11 legacy databases if the database schema had been corrupted (e.g. by using 3rd party tools for SQLite -> Postgres migration).
  • Fixed converting animated stickers to webm with >33 FPS.
  • Fixed a bug in v0.11.0 that broke mentioning users in groups (thanks to @dfuchss in #724).

v0.11.0

2 years ago
  • Switched from SQLAlchemy to asyncpg/aiosqlite.
    • The default database is now Postgres. If using SQLite, make sure you install the sqlite optional dependency.
    • Alembic is no longer used, schema migrations happen automatically on startup.
    • The automatic database migration requires you to be on the latest legacy database version. If you were running any v0.10.x version, you should be on the latest version already. Otherwise, update to v0.10.2 first, upgrade the database with alembic, then upgrade to v0.11.0 (or higher).
  • Added support for contact messages.
  • Added support for Telegram sponsored messages in channels.
    • Only applies to broadcast channels with 1000+ members (as per https://t.me/durov/172).
    • Only applies if you're using puppeting with a normal user account, because bots can't get sponsored messages.
  • Fixed non-supergroup member sync incorrectly kicking one user from the Matrix side if there was no limit on the number of members to sync (broke in v0.10.2).
  • Updated animated sticker conversion to support lottieconverter r0.2 (thanks to @sot-tech in #694).
  • Updated Docker image to Alpine 3.15.
  • Formatted all code using black and isort.

v0.10.2

2 years ago

Deprecation unwarning

While switching away from SQLAlchemy is still planned for v0.11, SQLite is no longer deprecated and will still be supported in the future using aiosqlite.

Added

  • Added extensions when bridging unnamed files from Telegram.
  • Added support for custom bridge bot welcome messages (thanks to @justinbot in #676).

Improved

  • Improved handling authorization errors if the bridge was logged out remotely.
  • Updated room syncer to use existing power levels to find appropriate levels for admins and normal users instead of hardcoding 50 and 0.
  • Updated to Telegram API layer 133 to handle 64-bit user/chat/channel IDs.
  • Stopped logging message contents when message handling failed (thanks to @justinbot in #681).
  • Removed Element iOS compatibility hack from non-sticker files.
  • Made max_initial_member_sync work for non-supergroups too (thanks to @tadzik in #680).
  • SQLite is now supported for the crypto database. Pickle is no longer supported. If you were using pickle, the bridge will create a new e2ee session and store the data in SQLite this time.

Fixed

  • Fixed generating reply fallbacks to encrypted messages.
  • Fixed chat sync failing if the member list contained banned users.

v0.10.1

2 years ago

N.B. Docker images have moved from dock.mau.dev/tulir/mautrix-telegram to dock.mau.dev/mautrix/telegram. New versions are only available at the new path.

Added

  • Warning when bridging existing room if bridge bot doesn't have redaction permissions.
  • Custom flag to invite events that will be auto-accepted using double puppeting.
  • Custom flags for animated stickers (same as what gifs already had).

Improved

  • Updated to Telethon 1.22.
  • Updated Docker image to Alpine 3.14.

Fixed

  • Fixed Bridging Matrix location messages with additional flags in geo_uri.
  • Editing encrypted messages will no longer add an asterisk on Telegram (#623).
  • Matrix typing notifications won't be echoed back for double puppeted users anymore (#631).
  • AuthKeyDuplicatedError is now handled properly instead of making the user get stuck.
  • Fixed public_portals setting not being respected on room creation.

v0.10.0

2 years ago

Deprecation warning

v0.10 is the last release that is guaranteed to support SQLite. A future release will likely switch away from SQLAlchemy and only support Postgres. See the docs for Postgres migration instructions.

Changes since v0.10.0-rc1
  • Added options to bridge archive, pin and mute status from Telegram to Matrix.
  • Added custom fields in Matrix events indicating Telegram gifs.
  • Allowed zero-width joiners in displaynames so things like multi-part emoji would work correctly.
  • Fixed Telegram->Matrix typing notifications.
Changes since v0.9.0

Added

  • Support for multiple pins from/to Telegram.
  • Option to resolve redirects when joining invite links, for people who use custom URLs as invite links (#559).
  • Command to update about section in Telegram profile info (#375, thanks to @MadhuranS in #599).
  • Own read marker/unread status from Telegram is now synced to Matrix after backfilling.
  • Support for showing the individual slots in :slot_machine: dice rolls from Telegram.
  • Options to bridge archive, pin and mute status from Telegram to Matrix.
  • Custom fields in Matrix events indicating Telegram gifs.

Improved

  • Improved invite link regex to allow joining with less precise invite links (#554, #555).
  • Invite links can be customized with the --uses=<amount> and --expire=<delta> flags for !tg invite-link.
  • Read receipts where the target message is unknown will now cause the chat to be marked as fully read instead of the read receipt event being ignored.
  • WebP stickers are now sent as-is without converting to png.
  • Default power levels in rooms now allow enabling encryption with PL 50 if e2be is enabled in config (#471, thanks to @Rafaeltheraven in #550).
  • Updated Docker image to Alpine 3.13 and removed all edge repo stuff.
  • Allowed zero-width joiners in displaynames so things like multi-part emoji would work correctly.

Fixed

  • Matrix->Telegram location message bridging no longer flips the coordinates.
  • Fixed Telegram->Matrix typing notifications.
  • Fixed some user displaynames constantly changing between contact/non-contact names and other similar cases (#533)

v0.10.0-rc1

3 years ago

Deprecation warning

v0.10 is the last release that is guaranteed to support SQLite. A future release will likely switch away from SQLAlchemy and only support Postgres.

Added

  • Support for multiple pins from/to Telegram.
  • Option to resolve redirects when joining invite links, for people who use custom URLs as invite links (#559).
  • Command to update about section in Telegram profile info (#375, thanks to @MadhuranS in #599).
  • Own read marker/unread status from Telegram is now synced to Matrix after backfilling.
  • Support for showing the individual slots in :slot_machine: dice rolls from Telegram.

Improved

  • Improved invite link regex to allow joining with less precise invite links (#554, #555).
  • Invite links can be customized with the --uses=<amount> and --expire=<delta> flags for !tg invite-link.
  • Read receipts where the target message is unknown will now cause the chat to be marked as fully read instead of the read receipt event being ignored.
  • WebP stickers are now sent as-is without converting to png.
  • Default power levels in rooms now allow enabling encryption with PL 50 if e2be is enabled in config (#471, thanks to @Rafaeltheraven in #550).
  • Updated Docker image to Alpine 3.13 and removed all edge repo stuff.

Fixed

  • Matrix->Telegram location message bridging no longer flips the coordinates.
  • Fixed some user displaynames constantly changing between contact/non-contact names and other similar cases (#533)

v0.9.0

3 years ago
Changes since v0.9.0-rc3
  • Fixed cleaning unidentified rooms (#541)
Changes since v0.8.x

Breaking changes

  • Prometheus metric names are now prefixed with bridge_
  • An entrypoint script is no longer automatically generated. This won't affect most users, as python -m mautrix_telegram has been the official way to start the bridge for a long time.

Added

  • Support for logging in by scanning a QR code from another Telegram client (#399).
  • Automatic backfilling of old messages when creating portals (#476).
  • Automatic backfilling of missed messages when starting bridge (#477).
  • Option to update m.direct list when using double puppeting.
  • PNG thumbnails for animated stickers when converted to webm (#467).
  • Support for receiving ephemeral events pushed directly with MSC2409 (requires Synapse 1.22 or higher).
  • Added retrying message sending if server returns 502

Improved

  • Switched end-to-bridge encryption to mautrix-python instead of a hacky matrix-nio solution.
  • End-to-bridge encryption no longer requires login_shared_secret, it uses MSC2778 instead (requires Synapse 1.21 or higher).
  • The bridge info state event is now updated whenever the chat name or avatar changes.
  • Double puppeting is no longer limited to users on the same homeserver as the bridge (#520).
  • Delivery receipts are no longer sent in unencrypted private chat portals, as the bridge bot is usually not present in them (#483).
  • Using the register command now sends a link to the Telegram terms of service.
  • The bridge_connected metric is now only set for users who are logged in.

Fixed

  • File captions are now sent as a separate message like photo captions.
  • The relaybot no longer drops Telegram messages with commands.
  • Bridging events of a user whose power level is malformed (i.e. a string instead of an integer) now works (#526).
  • Fixed bug where syncing members sometimes kicked ghosts of users who were actually still in the chat.
  • Logging out will now delete private chat portals, instead of only kicking the user and leaving the portal in a broken state (#397).
  • Unbridging direct chat portals is now possible (#495).

v0.9.0-rc3

3 years ago

Added

  • Added retrying message sending if server returns 502

Fixed

  • Fixed Matrix → Telegram name mentions
  • Fixed some bugs with replies

v0.9.0-rc2

3 years ago

Improved

  • Ephemeral event handling should be faster by not checking the database for user existence.
  • Using the register command now sends a link to the Telegram terms of service.
  • The bridge_connected metric is now only set for users who are logged in.

Fixed

  • Fixed bug where syncing members sometimes kicked ghosts of users who were actually still in the chat.
  • Fixed sending captions to Telegram with !tg caption (broken in rc1).
  • Logging out will now delete private chat portals, instead of only kicking the user and leaving the portal in a broken state (#397).
  • Unbridging direct chat portals is now possible (#495).