- Matrix → Telegram
- Message content (text, formatting, files, etc..)
- Message redactions
- Message reactions
- Message edits
- ‡ Message history
- Presence
- Typing notifications
- Read receipts
- Pinning messages
- Power level
- Normal chats
- Non-hardcoded PL requirements
- Supergroups/channels
- Precise bridging (non-hardcoded PL requirements, bridge specific permissions, etc..)
- Normal chats
- Membership actions (invite/kick/join/leave)
- Room metadata changes (name, topic, avatar)
- Initial room metadata
- User metadata
- Initial displayname/username/avatar at register
- ‡ Changes to displayname/avatar
- Telegram → Matrix
- Message content (text, formatting, files, etc..)
- Advanced message content/media
- Polls
- Games
- Buttons
- Message deletions
- Message reactions
- Message edits
- Message history
- Manually (
!tg backfill
) - Automatically when creating portal
- Automatically for missed messages
- Manually (
- Avatars
- Presence
- Typing notifications
- Read receipts (private chat only)
- Pinning messages
- Admin/chat creator status
- Supergroup/channel permissions (precise per-user permissions not supported in Matrix)
- Membership actions (invite/kick/join/leave)
- Chat metadata changes
- Title
- Avatar
- † About text
- † Public channel username
- Initial chat metadata (about text missing)
- User metadata (displayname/avatar)
- Supergroup upgrade
- Misc
- Automatic portal creation
- At startup
- When receiving invite or message
- Private chat creation by inviting Matrix puppet of Telegram user to new room
- Option to use bot to relay messages for unauthenticated Matrix users (relaybot)
- Option to use own Matrix account for messages sent from other Telegram clients (double puppeting)
- ‡ Calls (hard, not yet supported by Telethon)
- ‡ Secret chats (i.e. End-to-bridge encryption on Telegram)
- End-to-bridge encryption in Matrix rooms (see docs)
- Automatic portal creation
† Information not automatically sent from source, i.e. implementation may not be possible
‡ Maybe, i.e. this feature may or may not be implemented at some point