diff --git a/mautrix_telegram/portal/matrix.py b/mautrix_telegram/portal/matrix.py index 64fb5411..d568196f 100644 --- a/mautrix_telegram/portal/matrix.py +++ b/mautrix_telegram/portal/matrix.py @@ -112,11 +112,19 @@ class PortalMatrix(BasePortal, ABC): space = self.tgid if self.peer_type == "channel" else user.tgid message = DBMessage.get_by_mxid(event_id, self.mxid, space) if not message: - self.log.debug(f"Dropping Matrix read receipt from {user.mxid}: " - f"target message {event_id} not known") - return - self.log.debug(f"Marking messages up to {message.mxid}/{message.tgid} " - f"as read by {user.mxid}/{user.tgid}") + message = DBMessage.find_last(self.mxid, space) + if not message: + self.log.debug(f"Dropping Matrix read receipt from {user.mxid}: " + f"target message {event_id} not known and last message" + " in chat not found") + return + else: + self.log.debug(f"Matrix read receipt target {event_id} not known, marking " + f"messages up to most recent ({message.mxid}/{message.tgid}) " + f"as read by {user.mxid}/{user.tgid}") + else: + self.log.debug("Handling Matrix read receipt: marking messages up to " + f"{message.mxid}/{message.tgid} as read by {user.mxid}/{user.tgid}") await user.client.send_read_acknowledge(self.peer, max_id=message.tgid, clear_mentions=True)