- Dropped support for Python 3.9.
- Updated Telegram API to layer 183.
- Added support for authenticated media downloads.
- Added support for receiving reactions when using a bot account.
- Added option to limit file size by chat type.
- Fixed reply bridging breaking in some cases.
- Updated Telegram API to layer 169.
- Updated Docker image to Alpine 3.19.
- Fixed some potential cases where a portal room would be created for the
relaybot even if
ignore_unbridged_group_chat
was enabled. - Fixed member sync in groups with hidden members causing puppeted Matrix users to be kicked even if they're still in the group.
- Removed support for MSC2716 backfilling.
- Added
add-contact
anddelete-contact
commands. - Updated Telegram API layer to 166.
- Includes receiving view-once media, blockquotes, quote replies and other such things
- Fixed AuthKeyNotFound errors not being handled and causing users to get stuck in a non-logged-in state.
- Security: Updated Pillow to 10.0.1.
- Added support for double puppeting with arbitrary
as_token
s. See docs for more info. - Added support for sending webm and tgs files as stickers.
- Updated to Telegram API layer 161.
- Fixed cached usernames for Telegram users being cleared incorrectly, leading to mentions not being bridged as usernames.
- Fixed reaction bridging failing if the server running the bridge was rebooted less than 12 hours ago.
- Added option to delete megolm sessions that were received before the automatic ratcheting options were introduced.
- Added config option to use IPv6 for Telegram connection (thanks to @exciler in #920).
- Dropped support for Python 3.8.
- Updated Docker image to Alpine 3.18.
- Added timeout for forward backfills to prevent it from getting stuck permanently.
- Fixed
bridge.filter.users
config option not being read correctly. - Fixed proxy support to use python-socks instead of pysocks.
- Added fallback messages for calls and premium gifts.
- Added options to automatically ratchet/delete megolm sessions to minimize access to old messages.
- Added option to not set room name/avatar even in encrypted rooms.
- Implemented appservice pinging using MSC2659.
- Added option to disable or filter bridging direct chats (thanks to @Steffo99 in #892).
- Added options to specify different limits for forward and catchup backfilling depending on chat type.
- Improved handling logouts and certain connection errors.
- Changed reaction bridging to preserve timestamps.
- Disabled creating portals for DMs that don't have any messages when
sync_direct_chats
is enabled.
- Fixed syncing mute status when portal is created through incoming message rather than in startup sync.
- Fixed bridge incorrectly trusting member list and kicking users when supergroup has member list hidden.
- Fixed sending messages after creating groups from Matrix using relaybot instead of puppet (thanks to @maltee1 in #902).
- Added
allow_contact_info
config option to specify whether personal names and avatars for other users should be bridged.- The option is only safe to enable on single-user instances, using it anywhere else will cause ghost user profiles to flip back and forth between personal and default ones.
- Added config option to notify Matrix room if bridging an incoming message fails.
- Updated Docker image to Alpine 3.17.
- Updated to Telegram API layer 152.
- Improved handling users getting logged out.
- Removed support for creating accounts, as Telegram only allows requesting SMS login codes on the official mobile clients now.
- Replaced moviepy with calling ffmpeg directly for generating video thumbnails.
- Fixed handling Telegram chat upgrades when backfilling is enabled.
- Fixed file transfers failing if transfering the thumbnail fails.
- Fixed bridging unnamed files with unrecognized mime types.
- Fixed enqueueing more backfill.
- Fixed timestamps not being saved in
telegram_file
table. - Fixed issues with old events being replayed if the bridge was shut down uncleanly.
- Added built-in custom emoji packs to allow reacting with any standard unicode emoji from Matrix (note that only premium users can use custom emojis).
- Added infinite backfill using MSC2716.
- The new system includes a backwards compatibility mechanism which uses the old method of just sending events to the room. By default, MSC2716 is not enabled and the legacy method will be used.
- Redacting reactions on Matrix no longer removes the user's other reactions to the same message (premium users can have up to 3 reactions per message).
- Changes to default user permissions on Telegram are now bridged.
- Added database index to make reaction polling more efficient (thanks to @AndrewFerr in #862).
- Fixed provisioning API not working with URL-encoded parameters.
- Support for custom emojis in reactions.
- Like other bridges with custom emoji reactions, they're bridged as
mxc://
URIs, so client support is required to render them properly.
- Like other bridges with custom emoji reactions, they're bridged as
- The bridge will now poll for reactions to 20 most recent messages when receiving a read receipt. This works around Telegram's bad protocol that doesn't notify clients on reactions to other users' messages.
- The docker image now has an option to bypass the startup script by setting
the
MAUTRIX_DIRECT_STARTUP
environment variable. Additionally, it will refuse to run as a non-root user if that variable is not set (and print an error message suggesting to either set the variable or use a custom command). - Moved environment variable overrides for config fields to mautrix-python.
The new system also allows loading JSON values to enable overriding maps like
login_shared_secret_map
.
ChatParticipantsForbidden
is handled properly when syncing non-supergroup info.- Fixed some bugs with file transfers when using SQLite.
- Fixed error when attempting to log in again after logging out.
- Fixed QR login not working.
- Fixed error syncing chats if bridging a message had previously been interrupted.
N.B. This release requires a homeserver with Matrix v1.1 support, which bumps up the minimum homeserver versions to Synapse 1.54 and Dendrite 0.8.7. Minimum Conduit version remains at 0.4.0.
- Added provisioning API for resolving Telegram identifiers (like usernames).
- Added support for bridging Telegram custom emojis to Matrix.
- Added option to not bridge chats with lots of members.
- Added option to include captions in the same message as the media to implement MSC2530. Sending captions the same way is also supported and enabled by default.
- Added commands to kick or ban relaybot users from Telegram.
- Added support for Telegram's disappearing messages.
- Added support for bridging forwarded messages as forwards on Telegram.
- Forwarding is not allowed in relay mode as the bot wouldn't be able to specify who sent the message.
- Matrix doesn't have real forwarding (there's no forwarding metadata), so only messages bridged from Telegram can be forwarded.
- Double puppeted messages from Telegram currently can't be forwarded without
removing the
fi.mau.double_puppet_source
key from the content. - If forwarding fails (e.g. due to it being blocked in the source chat), the bridge will automatically fall back to sending it as a normal new message.
- Added options to make encryption more secure.
- The
encryption
->verification_levels
config options can be used to make the bridge require encrypted messages to come from cross-signed devices, with trust-on-first-use validation of the cross-signing master key. - The
encryption
->require
option can be used to make the bridge ignore any unencrypted messages. - Key rotation settings can be configured with the
encryption
->rotation
config.
- The
- Improved handling the bridge user leaving chats on Telegram, and new users being added on Telegram.
- Improved animated sticker conversion options: added support for animated webp and added option to convert video stickers (webm) to the specified image format.
- Audio and video metadata is now bridged properly to Telegram.
- Added database index on Telegram usernames (used when bridging username @-mentions in messages).
- Changed
/login/send_code
provisioning API to return a proper error when the phone number is not registered on Telegram.- The same login code can be used for registering an account, but registering is not currently supported in the provisioning API.
- Removed
plaintext_highlights
config option (the code using it was already removed in v0.11.0). - Enabled appservice ephemeral events by default for new installations.
- Existing bridges can turn it on by enabling
ephemeral_events
and disablingsync_with_custom_puppets
in the config, then regenerating the registration file.
- Existing bridges can turn it on by enabling
- Updated to API layer 144 so that Telegram would send new message types like premium stickers to the bridge.
- Updated Docker image to Alpine 3.16 and made it smaller.
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
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.
- 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
!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.
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 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.
- 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 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
.
- Added support for message reactions.
- Added support for spoiler text.
- Support for voice messages.
- Changed 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).
- 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.
- Added extensions when bridging unnamed files from Telegram.
- Added support for custom bridge bot welcome messages (thanks to @justinbot in #676).
- 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 generating reply fallbacks to encrypted messages.
- Fixed chat sync failing if the member list contained banned users.
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.
- 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).
- Updated to Telethon 1.22.
- Updated Docker image to Alpine 3.14.
- Fixed Bridging Matrix location messages with additional flags in
geo_uri
. - Editing encrypted messages will no longer add an asterisk on Telegram.
- Matrix typing notifications won't be echoed back for double puppeted users anymore.
AuthKeyDuplicatedError
is now handled properly instead of making the user get stuck.- Fixed
public_portals
setting not being respected on room creation.
- 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.
- Support for multiple pins from/to Telegram.
- Option to resolve redirects when joining invite links, for people who use custom URLs as invite links.
- Command to update about section in Telegram profile info (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 invite link regex to allow joining with less precise invite links.
- 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 (thanks to @Rafaeltheraven in #550).
- Updated Docker image to Alpine 3.13 and removed all edge repo stuff.
- 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.
- Fixed cleaning unidentified rooms.
- Added retrying message sending if server returns 502.
- Fixed Matrix → Telegram name mentions.
- Fixed some bugs with replies.
- 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 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.
- Unbridging direct chat portals is now possible.
- 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.
- Support for logging in by scanning a QR code from another Telegram client.
- Automatic backfilling of old messages when creating portals.
- Automatic backfilling of missed messages when starting bridge.
- Option to update
m.direct
list when using double puppeting. - PNG thumbnails for animated stickers when converted to webm.
- Support for receiving ephemeral events pushed directly with MSC2409 (requires Synapse 1.22 or higher).
- 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.
- Delivery receipts are no longer sent in unencrypted private chat portals, as the bridge bot is usually not present in them.
- 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.
- Fixed deleting messages from Matrix.
- Fixed Alpine edge dependencies in Docker image.
Note: this release is not on PyPI, as the only changes were a mautrix-python update (v0.5.8) and a fix to the Docker image.
- Fixed starting bridge for the first time failing due to not registering the bridge bot.
- Updated Docker image to Alpine 3.12.
- Updated to mautrix-python 0.5.0 and matrix-nio 0.12.0.
- Added option to disable removing avatars from Telegram ghosts.
- Added option to send delivery error notices.
- Added option to send delivery receipts.
- Bumped maximum Telethon version to 1.14.
- Possibly fixed infinite loop of avatar changes when using double puppeting.
- Moved private information to trace log level.
- Added
private_chat_portal_meta
option. This is implicitly enabled when encryption is enabled, it was only added as an option for instances with encryption disabled. - Removed avatars are now synced properly from Telegram, instead of leaving the last known avatar forever.
- Fixed admin detection on Telegram-side relaybot commands (thanks to @davidmehren in #468).
- Fixed bug handling
ChatForbidden
when syncing chats.
- Implemented MSC2346: Bridge information state event for newly created rooms.
- Fixed
sync_direct_chats
option creating non-working portals. - Fixed video thumbnailing sometimes leaving behind downloaded videos in
/tmp
.
- Command for backfilling room history from Telegram.
- arm64 support in docker images.
- Optional end-to-bridge encryption support. See docs for more info.
- Bridging for Telegram dice roll messages.
- Riot iOS not showing stickers properly.
- Updated to Telethon 1.13 to fix bugs like #443.
- No changes since rc1.
- Fixed enabling double puppeting causing saved messages to become unusable.
- Fixed receiving channel messages when
ignore_own_incoming_events
was enabled.
- Fixed missing responses in logout provisioning API.
- Fixed import in database migration script (thanks to @cubesky in #409).
- Fixed relaybot messages being allowed through to Matrix even when
ignore_own_incoming_events
was set totrue
.
- Fixed incorrect parameter name causing
!tg config set
to throw an error. - Fixed potential dictionary size changed during iteration crash.
- No changes since rc4.
- Fixed handling of Matrix
m.emote
events.
- Added option to log in to custom puppet with shared secret (https://github.com/devture/matrix-synapse-shared-secret-auth).
- Updated Docker image to Alpine 3.11.
- Improved displayname syncing by trusting any displayname if user is not a contact.
- Fixed error when cleaning up rooms.
- Fixed stack traces being printed to non-admin users.
- Fixed invite rejections being handles as leaves.
- Fixed
version
command output in CI docker builds not showing the correct git commit hash.
- Added command to get bridge version.
- Made bridge refuse to start if config contains example values.
- Removed some debug stack traces.
- Ignored
ChatForbidden
when syncing chats that was causing the sync to fail. - Fixed DB migration causing some incorrect values to be left behind.
- Dropped Python 3.5 compatibility.
- Moved docker registry to dock.mau.dev.
- Support for bridging animated stickers (thanks to @sot-tech in #366).
- Requires LottieConverter, which is included in the docker image.
- Can be configured.
- Support for MTProxy (thanks to @sot-tech in #344).
- Config option for max length of displayname, with the default being 100.
- Separate config option
for
m.emote
formatting of logged in users. - Streamed file transfers and parallel telegram file download/upload.
- Files are streamed from telegram servers to the media repo rather than downloading the whole file into memory.
- File transfers use multiple connections to telegram servers to transfer faster.
- Parallel and streamed file transfers can be enabled in the config.
- Command to set caption for files and images when sending to telegram.
- Bridging bans to telegram.
- Helm chart.
- Switched from mautrix-appservice-python to mautrix-python.
- Users with Matrix puppeting can now bridge their "Saved Messages" chat.
- The bridge will refuse to start without access to the example config file.
- Changed default port to 29317.
- Mentions are now marked as read on Telegram when bridging read receipts using double puppeting.
- Kicking or banning the bridge bot will now unbridge the room.
- Shrinked Docker image from 151mb to 77mb.
- The bridge will no longer crash if one user's startup fails.
- (hopefully) Incorrect peer type being saved into database in some cases.
- File names when bridging to Telegram.
- Alembic config interpolating passwords with
%
. - A single chat failing to sync preventing any chat from syncing.
- Users logged in as a bot not receiving any messages.
- Username matching being case-sensitive in the database and preventing telegram->matrix pillifying.
- IndexError if running
!tg set-pl
with no parameters.
- Fixed vulnerability in event handling.
- Nested formatting is now supported by Telegram, so the bridge also supports it.
- Strikethrough and underline are now bridged into native Telegram formatting rather than unicode hacks.
- Fixed displayname not updating for users who the bridge only saw via a logged in user who had the problematic user in their contacts.
- Fixed handling unsupported media.
- Added handling for
FileIdInvalidError
in file transfers that could disruptsync
s.
- Native Matrix edit support and new fallback format.
- Config options for
retry_delay
and other TelegramClient constructor fields. - Config option for maximum document size to let through the bridge.
- External URL field for chat and private channel messages.
- Telegram user info (puppet displayname & avatar) is now updated every time the user sends a message.
- Command to change Telegram displayname.
- Possibility to override config fields with environment variables (thanks to @pacien in #332).
- Simplified bridged poll message.
- Telegram user info updates are now accepted from any logged in user as long as the logged in user doesn't see a phone number for the Telegram user.
- Some image errors are now handled by resending the image as a document.
- Made getting started more user-friendly.
- Updated to Telethon 1.8.
- Portal peer type not being saved in database after Telegram chat upgrade.
- Newlines in unformatted messages not being bridged when using relaybot.
- Mime type info field for stickers converted to PNG.
- Content after newlines being stripped in messages sent by some clients.
- Potential
NoneType is not iterable
exception when logging out (thanks to @turt2live in #315). - Handling of Matrix messages where
m.relates_to
is null. - Internal server error when logging in with an account on another DC.
- Spaces between command and arguments are now trimmed.
- Changed migrations to use
batch_alter_table
for adding columns to have less warnings with SQLite. - Error when
ping
ing without being logged in. - Terminating sessions with negative hashes.
- State cache not being updated when sending events, causing invalid cache if the server doesn't echo the sent events.
- Fixed null
m.relates_to
's that break Synapse 0.99.5.
- Fixed Python 3.5 compatibility.
- Fixed DBMS migration script.
- Replaced rawgit with cdnjs in public website as rawgit is deprecated.
- Fixed login command throwing error when web login is enabled.
- Updated telethon-session-sqlalchemy to fix logging into an account on another DC.
- Stopped adding reply fallback to caption when sending caption and image as separate messages.
- Added verbose flag to migration script.
- Added pytest setup and some tests (thanks to @V02460 in #290).
- Fixed scripts (DBMS migration and Telematrix import) not being included in builds.
- Fixed some database problems.
- Removed remaining traces of ORM that might have been the causes of some other database problems.
- Removed option to use lxml in HTML parsing as it was messing up emoji offset handling. The new HTML parser supports using the default python HTMLParser class since 0.5.0rc1, so lxml wasn't really useful anway.
- Fixed bridging documents without thumbnails to Matrix.
- Added option to set maximum size of image to send to Telegram. Images above the size limit will be sent as documents without the compression Telegram applies to images.
- Fixed saving user portals and contacts.
- Added Telegram -> Matrix poll bridging and a command to vote in polls.
- Added missing future-fstrings comments that caused the bridge to not start on Python 3.5.
- Fixed handling of document thumbnails.
- Fixed private chat portals failing to be created.
- Made relaybot handle Telegram chat upgrade events.
- More config options
- Option to to use Telegram test servers.
- Option to disable link previews on Telegram.
- Option to disable startup sync.
- Option to skip deleted members when syncing member lists.
- Option to change number of dialogs to handle in startup sync.
- More commands
username
for setting Telegram username.sync-state
for updating Matrix room state cache.matrix-ping
for checking Matrix login status (thanks to @krombel in #271).clear-db-cache
for clearing internal database caches.reload-user
for reloading and reconnecting a Telegram user.session
for listing and terminating other Telegram sessions.- Added argument to
login
to allow admins to log in for other users.
- Added warning when logging in that it grants the bridge full access to the telegram account.
- Telegram->Matrix bridging:
- Telegram games
- Message pins in normal groups
- Custom message for unsupported media like polls
- Added client ID in logs when making requests to telegram.
- Added handling for Matrix room upgrades.
- Removed lxml dependency from the new HTML parser and removed the old parser completely.
- Switched mautrix-appservice-python state store and most mautrix-telegram tables to SQLAlchemy core. This should speed things up and reduce problems with the ORM getting stuck.
ensure_started
is now only called for logged in users, which should improve performance for large instances.- Displayname template extras (e.g. the
(Telegram)
suffix) are now stripped when mentioning Telegram users with no username. - Updated Telethon.
- Switched Dockerfile to use setup.py for dependencies to avoid dependency updates breaking stuff.
- The telematrix import script will now warn about and skip over duplicate portals.
- Relaybot will now be used for users who have logged in, but are not in the chat.
- Bug where stickers with an unidentified emoji failed to bridge.
- Invalid letter prefixes in clean-rooms output.
- Messages forwarded from channels showing up as "Unknown source".
- Matrix->Telegram room avatar bridging.
- No changes since rc2.
- Fixed kicking Telegram puppets from Matrix.
- Flag to indicate if user can unbridge portal in provisioning API (thanks to @turt2live in #225).
- Option to send captions as second message (replaces option to send caption
in
body
. - Room-specific settings.
- (internal) Added type hints everywhere (mostly thanks to @V02460 in #206).
- Telegram->Matrix formatter now uses
<pre>
tags for multiline code even if said code was in the telegram equivalent of inline code tags. - Better bullets and linebreak handling in Matrix->Telegram formatter.
- Logging in will now show your phone number instead of
@None
if you don't have a username. - Significantly improved performance on high-load instances (t2bot.io) by moving most used database tables to SQLAlchemy Core.
- Bugs that caused database migrations to fail in some cases.
- Editing the config (e.g. whitelisting chats) corrupting the config.
- Negative numbers (chat IDs) in
/connect
of the provisioning API (thanks to @turt2live in #223). - Relaybot creating portals automatically when receiving message.
- Not being able to use a bridge bot localpart that would also match the puppet localpart format.
- Matrix login sync failing completely if the homeserver stopped during a sync response.
- Errors when cleaning rooms.
- Bridging code blocks without a language.
- Error and lost messages when trying to bridge PM from new users in some cases.
- Logging in with an account that someone has already logged in failing silently and then breaking the bridge.
- Relaybot message when adding/removing Matrix displaynames.
- Added database URI format examples.
- Bumped maximum Telethon version to 1.2, possibly fixing the catch_up option.
- Improved Telegram message deduplication options.
- Added pre-send message database check for deduplication.
- Made dedup cache queue length configurable.
- Added option to change max body size for AS API.
- Fixed a minor error regarding power level changes (thanks to @turt2live in #203).
- Updated minimum mautrix-appservice version to include some recent bugfixes.
- Logging in with a bot
(see docs for usage).
- You can log in with a personal Telegram bot to appear almost like a real user without logging in with a real Telegram account.
- Replacing your Telegram account's Matrix puppet with your Matrix account (see docs for usage).
- Formatting options for relaybot messages.
- Real displaynames are now supported and enabled by default.
- State events (join/leave/name change) can be independently disabled by setting the format to a blank string.
- New config sections
- Proper log config, including logging to file (by default)
- Proxy support (requires installing PySocks)
- Separate field for appservice address for homeserver (useful if using a reverse proxy).
- New permission levels to allow initiating bridges without allowing puppeting and to allow Telegram puppeting without allowing Matrix puppeting.
- Telematrix import script (see docs for usage).
- Provisioning API (see docs for more info).
- DBMS migration script (see docs for usage).
- Tabs are now replaced with 4 spaces so that Telegram servers wouldn't change the message.
- Help page now detects your permissions and only shows commands you can use.
- Moved Matrix state cache to the main database. This means that the
mx-state.json
file is no longer needed and all non-config data is stored in the main database. - Better lxml-based HTML parser for Matrix->Telegram formatting bridging. lxml is still optional, so the old parser is used as fallback if lxml is not installed.
- Disabled Telegram->Matrix bridging of messages sent by the relaybot. Can be re-enabled in config if necessary.
- A
ValueError
in some cases when syncing power levels. - Telegram connections being created for unauthenticated users possibly triggering spam protection connection delays in the Telegram servers.
- Logging out if a portal had been deleted/unbridged.
- No changes since rc6.
- Added warning about
delete-portal
kicking all room members. - Fixed error when upgrading/creating SQLite database.
- Fixed relaybot automatically creating portal rooms when invited to Telegram chat (#145).
- Fixed kicking Telegram puppets and fix error message when bridging chats you've left.
- Fixed integrity error deleting portals from database.
FixedAdded Postgres compatibility.- Fixed manual bridging (
!tg bridge
) for unauthenticated users. - Fixed inviting unauthenticated Matrix users from Telegram (via
/invite <mxid>
). - Changed Alembic to read database path from the config, so editing
alembic.ini
is no longer necessary. Usealembic -x config=/path/to/config.yaml ...
to specify the config path.
- Reworked Dockerfile to remove virtualenv and use Alpine packages (thanks to @jcgruenhage in #142). This fixes webp->png conversion for stickers.
- Added Dockerfile (thanks to @jcgruenhage in #136).
- Added
- Option to exclude telegram chats from being bridged.
- Support for using a relay bot to relay messages for unauthenticated users
- Bridging for message pinning and room mentions/pills.
- Matrix->Telegram sticker bridging.
!command
to/command
conversion at the start of Matrix message text.- Conversion of t.me message links to matrix.to message links
- Timestamp massaging (bridge Telegram timestamps to Matrix)
- Support for out-of-Matrix login (useful if you don't want your 2FA password to be stored in the homeserver)
- Optional HQ gif/video thumbnails using moviepy.
- Option to send bot messages as
m.notice
- Improved deduplication
- Matrix file uploads are now reused if the same Telegram file (e.g. a sticker) is sent multiple times
- Room metadata changes and other non-message actions are now deduplicated
- Improved formatting bridging
- Improved Telegram user display name handling in cases where one or more users have set custom display names for other users.
- Fixed Alembic setup and removed automatic database generation.
- Fixed outgoing message deduplication in cases where message is sent to other clients before responding to the sender.
- Moved mautrix-appservice-python to separate repository.
- Switched to telethon-session-sqlalchemy to have the session databases in the main database.
- Switched license from GPLv3 to AGPLv3
- Probably a bunch of other stuff I forgot
Fixed bridging formatted messages from Matrix to Telegram
First release.
Things work.