From b07d80d87646ef08175cf4d333896656ee25e216 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 18 Feb 2022 17:21:08 +0200 Subject: [PATCH] Add support for converting t.me/c// links --- CHANGELOG.md | 12 ++++++++++++ mautrix_telegram/formatter/from_telegram.py | 11 +++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7639881e..db4df965 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# unreleased + +### Added + +### Improved +* 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 supported `t.me/username/messageid` links). + +### Fixed + + # v0.11.2 (2022-02-14) **N.B.** This will be the last release to support Python 3.7. Future versions diff --git a/mautrix_telegram/formatter/from_telegram.py b/mautrix_telegram/formatter/from_telegram.py index ccc97ade..e3a36e6e 100644 --- a/mautrix_telegram/formatter/from_telegram.py +++ b/mautrix_telegram/formatter/from_telegram.py @@ -345,7 +345,11 @@ async def _parse_name_mention(html: list[str], entity_text: str, user_id: Telegr message_link_regex = re.compile( - r"https?://t(?:elegram)?\.(?:me|dog)/([A-Za-z][A-Za-z0-9_]{3,}[A-Za-z0-9])/([0-9]{1,50})" + r"https?://t(?:elegram)?\.(?:me|dog)" + # /username or /c/id + r"/([A-Za-z][A-Za-z0-9_]{3,31}[A-Za-z0-9]|[Cc]/[0-9]{1,20})" + # /messageid + r"/([0-9]{1,20})" ) @@ -359,7 +363,10 @@ async def _parse_url(html: list[str], entity_text: str, url: str) -> bool: group, msgid_str = message_link_match.groups() msgid = int(msgid_str) - portal = await po.Portal.find_by_username(group) + if group.lower().startswith("c/"): + portal = await po.Portal.get_by_tgid(TelegramID(int(group[2:]))) + else: + portal = await po.Portal.find_by_username(group) if portal: message = await DBMessage.get_one_by_tgid(TelegramID(msgid), portal.tgid) if message: