diff --git a/mautrix_telegram/abstract_user.py b/mautrix_telegram/abstract_user.py index 12177893..28beae6e 100644 --- a/mautrix_telegram/abstract_user.py +++ b/mautrix_telegram/abstract_user.py @@ -50,6 +50,7 @@ if TYPE_CHECKING: from .context import Context from .config import Config from .bot import Bot + from .__main__ import TelegramBridge config: Optional['Config'] = None # Value updated from config in init() @@ -71,6 +72,7 @@ class AbstractUser(ABC): loop: asyncio.AbstractEventLoop = None log: TraceLogger az: AppService + bridge: 'TelegramBridge' relaybot: Optional['Bot'] ignore_incoming_bot_events: bool = True @@ -513,6 +515,7 @@ class AbstractUser(ABC): def init(context: 'Context') -> None: global config, MAX_DELETIONS AbstractUser.az, config, AbstractUser.loop, AbstractUser.relaybot = context.core + AbstractUser.bridge = context.bridge AbstractUser.ignore_incoming_bot_events = config["bridge.relaybot.ignore_own_incoming_events"] AbstractUser.session_container = context.session_container MAX_DELETIONS = config.get("bridge.max_telegram_delete", 10) diff --git a/mautrix_telegram/formatter/from_telegram.py b/mautrix_telegram/formatter/from_telegram.py index 393f5d2d..022ff882 100644 --- a/mautrix_telegram/formatter/from_telegram.py +++ b/mautrix_telegram/formatter/from_telegram.py @@ -32,7 +32,7 @@ from telethon.helpers import add_surrogate, del_surrogate from mautrix.errors import MatrixRequestError from mautrix.appservice import IntentAPI from mautrix.types import (TextMessageEventContent, RelatesTo, RelationType, Format, MessageType, - MessageEvent) + MessageEvent, EventType) from .. import user as u, puppet as pu, portal as po from ..types import TelegramID @@ -129,12 +129,14 @@ async def _add_reply_header(source: 'AbstractUser', content: TextMessageEventCon content.relates_to = RelatesTo(rel_type=RelationType.REPLY, event_id=msg.mxid) try: - event: MessageEvent = await main_intent.get_event(msg.mx_room, msg.mxid) + event = await main_intent.get_event(msg.mx_room, msg.mxid) + if event.type == EventType.ROOM_ENCRYPTED and source.bridge.matrix.e2ee: + event = await source.bridge.matrix.e2ee.decrypt(event) if isinstance(event.content, TextMessageEventContent): event.content.trim_reply_fallback() puppet = await pu.Puppet.get_by_mxid(event.sender, create=False) content.set_reply(event, displayname=puppet.displayname if puppet else event.sender) - except MatrixRequestError: + except Exception: log.exception("Failed to get event to add reply fallback")