From 445d997be86b1087537f2175c560e78884346ef2 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 28 Apr 2018 21:52:24 +0300 Subject: [PATCH] Allow deleting messages via relay bot. Fixes #114 --- mautrix_telegram/matrix.py | 13 +++++++++---- mautrix_telegram/portal.py | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/mautrix_telegram/matrix.py b/mautrix_telegram/matrix.py index 9b8cb4bb..1a055354 100644 --- a/mautrix_telegram/matrix.py +++ b/mautrix_telegram/matrix.py @@ -198,10 +198,15 @@ class MatrixHandler: is_portal=portal is not None) async def handle_redaction(self, room, sender, event_id): - portal = Portal.get_by_mxid(room) sender = await User.get_by_mxid(sender).ensure_started() - if sender.has_full_access and portal: - await portal.handle_matrix_deletion(sender, event_id) + if not sender.relaybot_whitelisted: + return + + portal = Portal.get_by_mxid(room) + if not portal: + return + + await portal.handle_matrix_deletion(sender, event_id) async def handle_power_levels(self, room, sender, new, old): portal = Portal.get_by_mxid(room) @@ -244,8 +249,8 @@ class MatrixHandler: self.log.debug("Received event: %s", evt) type = evt["type"] content = evt.get("content", {}) - prev_content = evt.get("unsigned", {}).get("prev_content", {}) if type == "m.room.member": + prev_content = evt.get("unsigned", {}).get("prev_content", {}) membership = content.get("membership", "") prev_membership = prev_content.get("membership", "leave") if membership == prev_membership: diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py index dc83f7f4..a22101b0 100644 --- a/mautrix_telegram/portal.py +++ b/mautrix_telegram/portal.py @@ -743,6 +743,7 @@ class Portal: pass async def handle_matrix_deletion(self, deleter, event_id): + deleter = deleter if deleter.logged_in else self.bot space = self.tgid if self.peer_type == "channel" else deleter.tgid message = DBMessage.query.filter(DBMessage.mxid == event_id, DBMessage.tg_space == space,