From afb73b1d17b57727b4c9620dc0c78c46d0d4d7a2 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 29 Dec 2021 22:11:11 +0200 Subject: [PATCH] Add support for bridging spoilers --- mautrix_telegram/formatter/from_matrix/parser.py | 5 ++++- mautrix_telegram/formatter/from_matrix/telegram_message.py | 2 ++ mautrix_telegram/formatter/from_telegram.py | 3 +++ requirements.txt | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/mautrix_telegram/formatter/from_matrix/parser.py b/mautrix_telegram/formatter/from_matrix/parser.py index 0b99dbd4..57b10812 100644 --- a/mautrix_telegram/formatter/from_matrix/parser.py +++ b/mautrix_telegram/formatter/from_matrix/parser.py @@ -95,5 +95,8 @@ class MatrixParser(BaseMatrixParser[TelegramMessage]): async def color_to_fstring(self, msg: TelegramMessage, color: str) -> TelegramMessage: return msg - async def spoiler_to_fstring(self, msg: TelegramMessage, spoiler: str) -> TelegramMessage: + async def spoiler_to_fstring(self, msg: TelegramMessage, reason: str) -> TelegramMessage: + msg = msg.format(self.e.SPOILER) + if reason: + msg = msg.prepend(f"{reason}: ") return msg diff --git a/mautrix_telegram/formatter/from_matrix/telegram_message.py b/mautrix_telegram/formatter/from_matrix/telegram_message.py index 938e7cc0..7e4f2d3c 100644 --- a/mautrix_telegram/formatter/from_matrix/telegram_message.py +++ b/mautrix_telegram/formatter/from_matrix/telegram_message.py @@ -29,6 +29,7 @@ from telethon.tl.types import ( MessageEntityMention as Mention, MessageEntityMentionName as MentionName, MessageEntityPre as Pre, + MessageEntitySpoiler as Spoiler, MessageEntityStrike as Strike, MessageEntityTextUrl as TextURL, MessageEntityUnderline as Underline, @@ -55,6 +56,7 @@ class TelegramEntityType(Enum): MENTION = Mention MENTION_NAME = InputMentionName COMMAND = Command + SPOILER = Spoiler USER_MENTION = 1 ROOM_MENTION = 2 diff --git a/mautrix_telegram/formatter/from_telegram.py b/mautrix_telegram/formatter/from_telegram.py index e650f3c7..b2650986 100644 --- a/mautrix_telegram/formatter/from_telegram.py +++ b/mautrix_telegram/formatter/from_telegram.py @@ -35,6 +35,7 @@ from telethon.tl.types import ( MessageEntityMentionName, MessageEntityPhone, MessageEntityPre, + MessageEntitySpoiler, MessageEntityStrike, MessageEntityTextUrl, MessageEntityUnderline, @@ -293,6 +294,8 @@ async def _telegram_entities_to_matrix( html.append(f"{entity_text}") elif entity_type in (MessageEntityHashtag, MessageEntityCashtag, MessageEntityPhone): html.append(f"{entity_text}") + elif entity_type == MessageEntitySpoiler: + html.append(f"{entity_text}") else: skip_entity = True last_offset = relative_offset + (0 if skip_entity else entity.length) diff --git a/requirements.txt b/requirements.txt index 7937aa18..9ac5c726 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,8 +5,8 @@ aiohttp>=3,<4 yarl>=1,<2 mautrix>=0.14.0,<0.15 #telethon>=1.24,<1.25 -# Fork to make session storage async -tulir-telethon==1.25.0a1 +# Fork to make session storage async and update to layer 136 +tulir-telethon==1.25.0a2 asyncpg>=0.20,<0.26 mako>=1,<2 setuptools