Mark chat as fully read on Telegram if read receipt target is unknown
This commit is contained in:
@@ -112,11 +112,19 @@ class PortalMatrix(BasePortal, ABC):
|
|||||||
space = self.tgid if self.peer_type == "channel" else user.tgid
|
space = self.tgid if self.peer_type == "channel" else user.tgid
|
||||||
message = DBMessage.get_by_mxid(event_id, self.mxid, space)
|
message = DBMessage.get_by_mxid(event_id, self.mxid, space)
|
||||||
if not message:
|
if not message:
|
||||||
self.log.debug(f"Dropping Matrix read receipt from {user.mxid}: "
|
message = DBMessage.find_last(self.mxid, space)
|
||||||
f"target message {event_id} not known")
|
if not message:
|
||||||
return
|
self.log.debug(f"Dropping Matrix read receipt from {user.mxid}: "
|
||||||
self.log.debug(f"Marking messages up to {message.mxid}/{message.tgid} "
|
f"target message {event_id} not known and last message"
|
||||||
f"as read by {user.mxid}/{user.tgid}")
|
" 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,
|
await user.client.send_read_acknowledge(self.peer, max_id=message.tgid,
|
||||||
clear_mentions=True)
|
clear_mentions=True)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user