Allow deleting messages via relay bot. Fixes #114

This commit is contained in:
Tulir Asokan
2018-04-28 21:52:24 +03:00
parent 8da06c969c
commit 445d997be8
2 changed files with 10 additions and 4 deletions
+9 -4
View File
@@ -198,10 +198,15 @@ class MatrixHandler:
is_portal=portal is not None) is_portal=portal is not None)
async def handle_redaction(self, room, sender, event_id): async def handle_redaction(self, room, sender, event_id):
portal = Portal.get_by_mxid(room)
sender = await User.get_by_mxid(sender).ensure_started() sender = await User.get_by_mxid(sender).ensure_started()
if sender.has_full_access and portal: if not sender.relaybot_whitelisted:
await portal.handle_matrix_deletion(sender, event_id) 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): async def handle_power_levels(self, room, sender, new, old):
portal = Portal.get_by_mxid(room) portal = Portal.get_by_mxid(room)
@@ -244,8 +249,8 @@ class MatrixHandler:
self.log.debug("Received event: %s", evt) self.log.debug("Received event: %s", evt)
type = evt["type"] type = evt["type"]
content = evt.get("content", {}) content = evt.get("content", {})
prev_content = evt.get("unsigned", {}).get("prev_content", {})
if type == "m.room.member": if type == "m.room.member":
prev_content = evt.get("unsigned", {}).get("prev_content", {})
membership = content.get("membership", "") membership = content.get("membership", "")
prev_membership = prev_content.get("membership", "leave") prev_membership = prev_content.get("membership", "leave")
if membership == prev_membership: if membership == prev_membership:
+1
View File
@@ -743,6 +743,7 @@ class Portal:
pass pass
async def handle_matrix_deletion(self, deleter, event_id): 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 space = self.tgid if self.peer_type == "channel" else deleter.tgid
message = DBMessage.query.filter(DBMessage.mxid == event_id, message = DBMessage.query.filter(DBMessage.mxid == event_id,
DBMessage.tg_space == space, DBMessage.tg_space == space,