Allow deleting messages via relay bot. Fixes #114
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user