Releases: mautrix/telegram
v0.11.3
N.B. This release drops support for old homeservers which don't support the new /v3
API endpoints. Synapse 1.48+, Dendrite 0.6.5+ and Conduit 0.4.0+ are supported. Legacy r0
API support can be temporarily re-enabled with pip install mautrix==0.16.0
. However, this option will not be available in future releases.
Added
- Added
list-invite-links
command to list invite links in a chat. - Added option to use MSC2246 async media uploads.
- Provisioning API for listing contacts and starting private chats.
Improved
- Dropped Python 3.7 support.
- Telegram->Matrix message formatter will now replace
t.me/c/chatid/messageid
style links with a link to the bridged Matrix event (in addition to the previously supportedt.me/username/messageid
links). - Updated formatting converter to keep newlines in code blocks as
\n
instead of converting them to<br/>
. - Removed
max_document_size
option. The bridge will now fetch the max size automatically using the media repo config endpoint. - Removed redundant
msgtype
field in sticker events sent to Matrix. - Disabled file logging in Docker image by default.
- If you want to enable it, set the
filename
in the file log handler to a path that is writable, then add"file"
back tologging.root.handlers
.
- If you want to enable it, set the
- Reactions are now marked as read when bridging read receipts from Matrix.
Fixed
- Fixed
!tg bridge
throwing error if the parameter is not an integer - Fixed
!tg bridge
failing if the command had been previously run with an incorrectly prefixed chat ID (e.g.!tg bridge -1234567
followed by!tg bridge -1001234567
). - Fixed
bridge_matrix_leave
config option not actually being used correctly. - Fixed public channel mentions always bridging into a user mention on Matrix rather than a room mention.
- The bridge will now make room mentions if the portal exists and fall back to user mentions otherwise.
- Fixed newlines being lost in unformatted forwarded messages.
v0.11.2
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
- 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
- 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).
- The default database is now Postgres. If using SQLite, make sure you install the
- 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
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
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
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 🎰 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
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 🎰 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
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
Added
- Added retrying message sending if server returns 502
Fixed
- Fixed Matrix → Telegram name mentions
- Fixed some bugs with replies