From ba13c5cae138fbcfbb38edf5fe3b47838baab9f5 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 11 Jun 2020 19:09:01 +0300 Subject: [PATCH] Send "delivery" receipt for messages bridged from Telegram --- mautrix_telegram/portal/base.py | 4 ++++ mautrix_telegram/portal/matrix.py | 7 ------- mautrix_telegram/portal/metadata.py | 9 ++++++++- mautrix_telegram/portal/telegram.py | 1 + 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/mautrix_telegram/portal/base.py b/mautrix_telegram/portal/base.py index 0a294d5c..7476287b 100644 --- a/mautrix_telegram/portal/base.py +++ b/mautrix_telegram/portal/base.py @@ -519,6 +519,10 @@ class BasePortal(ABC): def backfill(self, source: 'AbstractUser') -> Awaitable[None]: pass + @abstractmethod + async def _send_delivery_receipt(self, event_id: EventID) -> None: + pass + # endregion diff --git a/mautrix_telegram/portal/matrix.py b/mautrix_telegram/portal/matrix.py index 8241b4a4..9ead60e7 100644 --- a/mautrix_telegram/portal/matrix.py +++ b/mautrix_telegram/portal/matrix.py @@ -229,13 +229,6 @@ class PortalMatrix(BasePortal, MautrixBasePortal, ABC): message, entities = None, None return message, entities - async def _send_delivery_receipt(self, event_id: EventID) -> None: - if event_id and config["bridge.delivery_receipts"]: - try: - await self.az.intent.mark_read(self.mxid, event_id) - except Exception: - self.log.exception("Failed to send delivery receipt for %s", event_id) - async def _handle_matrix_text(self, sender_id: TelegramID, event_id: EventID, space: TelegramID, client: 'MautrixTelegramClient', content: TextMessageEventContent, reply_to: TelegramID) -> None: diff --git a/mautrix_telegram/portal/metadata.py b/mautrix_telegram/portal/metadata.py index 0e60d9bb..d98891e7 100644 --- a/mautrix_telegram/portal/metadata.py +++ b/mautrix_telegram/portal/metadata.py @@ -32,7 +32,7 @@ from mautrix.errors import MForbidden from mautrix.types import (RoomID, UserID, RoomCreatePreset, EventType, Membership, Member, PowerLevelStateEventContent, RoomTopicStateEventContent, RoomNameStateEventContent, RoomAvatarStateEventContent, - StateEventContent) + StateEventContent, EventID) from ..types import TelegramID from ..context import Context @@ -762,6 +762,13 @@ class PortalMetadata(BasePortal, ABC): # endregion + async def _send_delivery_receipt(self, event_id: EventID) -> None: + if event_id and config["bridge.delivery_receipts"]: + try: + await self.az.intent.mark_read(self.mxid, event_id) + except Exception: + self.log.exception("Failed to send delivery receipt for %s", event_id) + def init(context: Context) -> None: global config diff --git a/mautrix_telegram/portal/telegram.py b/mautrix_telegram/portal/telegram.py index 39978228..cb26805f 100644 --- a/mautrix_telegram/portal/telegram.py +++ b/mautrix_telegram/portal/telegram.py @@ -531,6 +531,7 @@ class PortalTelegram(BasePortal, ABC): "dedup cache queue. You can try enabling bridge.deduplication." "pre_db_check in the config.") await intent.redact(self.mxid, event_id) + await self._send_delivery_receipt(event_id) async def _create_room_on_action(self, source: 'AbstractUser', action: TypeMessageAction) -> bool: