Check filter list before handling matrix events
This commit is contained in:
committed by
Tulir Asokan
parent
6245c4066f
commit
05cf150982
+14
-13
@@ -122,14 +122,15 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
return
|
||||
await user.ensure_started()
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
if user and await user.has_full_access(allow_bot=True) and portal:
|
||||
await portal.invite_telegram(inviter, user)
|
||||
if user and await user.has_full_access(allow_bot=True):
|
||||
if portal and portal.allow_bridging:
|
||||
await portal.invite_telegram(inviter, user)
|
||||
|
||||
async def handle_join(self, room_id: RoomID, user_id: UserID, event_id: EventID) -> None:
|
||||
user = await u.User.get_by_mxid(user_id).ensure_started()
|
||||
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
if not portal:
|
||||
if not portal or not portal.allow_bridging:
|
||||
return
|
||||
|
||||
if not user.relaybot_whitelisted:
|
||||
@@ -152,7 +153,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
async def handle_leave(self, room_id: RoomID, user_id: UserID, event_id: EventID) -> None:
|
||||
self.log.debug(f"{user_id} left {room_id}")
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
if not portal:
|
||||
if not portal or not portal.allow_bridging:
|
||||
return
|
||||
|
||||
user = u.User.get_by_mxid(user_id, create=False)
|
||||
@@ -166,7 +167,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
action = "banned" if ban else "kicked"
|
||||
self.log.debug(f"{user_id} was {action} from {room_id} by {sender} for {reason}")
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
if not portal:
|
||||
if not portal or not portal.allow_bridging:
|
||||
return
|
||||
|
||||
if user_id == self.az.bot_mxid:
|
||||
@@ -229,7 +230,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
return
|
||||
|
||||
portal = po.Portal.get_by_mxid(evt.room_id)
|
||||
if not portal:
|
||||
if not portal or not portal.allow_bridging:
|
||||
return
|
||||
|
||||
await portal.handle_matrix_deletion(sender, evt.redacts, evt.event_id)
|
||||
@@ -238,7 +239,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
async def handle_power_levels(evt: StateEvent) -> None:
|
||||
portal = po.Portal.get_by_mxid(evt.room_id)
|
||||
sender = await u.User.get_by_mxid(evt.sender).ensure_started()
|
||||
if await sender.has_full_access(allow_bot=True) and portal:
|
||||
if await sender.has_full_access(allow_bot=True) and portal and portal.allow_bridging:
|
||||
await portal.handle_matrix_power_levels(sender, evt.content.users,
|
||||
evt.unsigned.prev_content.users,
|
||||
evt.event_id)
|
||||
@@ -248,7 +249,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
content: RoomMetaStateEventContent, event_id: EventID) -> None:
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
sender = await u.User.get_by_mxid(sender_mxid).ensure_started()
|
||||
if await sender.has_full_access(allow_bot=True) and portal:
|
||||
if await sender.has_full_access(allow_bot=True) and portal and portal.allow_bridging:
|
||||
handler, content_type, content_key = {
|
||||
EventType.ROOM_NAME: (portal.handle_matrix_title, RoomNameStateEventContent, "name"),
|
||||
EventType.ROOM_TOPIC: (portal.handle_matrix_about, RoomTopicStateEventContent, "topic"),
|
||||
@@ -264,7 +265,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
event_id: EventID) -> None:
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
sender = await u.User.get_by_mxid(sender_mxid).ensure_started()
|
||||
if await sender.has_full_access(allow_bot=True) and portal:
|
||||
if await sender.has_full_access(allow_bot=True) and portal and portal.allow_bridging:
|
||||
if not new_events:
|
||||
await portal.handle_matrix_unpin_all(sender, event_id)
|
||||
else:
|
||||
@@ -276,7 +277,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
async def handle_room_upgrade(room_id: RoomID, sender: UserID, new_room_id: RoomID,
|
||||
event_id: EventID) -> None:
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
if portal:
|
||||
if portal and portal.allow_bridging:
|
||||
await portal.handle_matrix_upgrade(sender, new_room_id, event_id)
|
||||
|
||||
async def handle_member_info_change(self, room_id: RoomID, user_id: UserID,
|
||||
@@ -287,7 +288,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
return
|
||||
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
if not portal or not portal.has_bot:
|
||||
if not portal or not portal.has_bot or not portal.allow_bridging:
|
||||
return
|
||||
|
||||
user = await u.User.get_by_mxid(user_id).ensure_started()
|
||||
@@ -305,7 +306,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
async def handle_read_receipts(room_id: RoomID, receipts: Iterable[Tuple[UserID, EventID]]
|
||||
) -> None:
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
if not portal:
|
||||
if not portal or not portal.allow_bridging:
|
||||
return
|
||||
|
||||
for user_id, event_id in receipts:
|
||||
@@ -321,7 +322,7 @@ class MatrixHandler(BaseMatrixHandler):
|
||||
|
||||
async def handle_typing(self, room_id: RoomID, now_typing: Set[UserID]) -> None:
|
||||
portal = po.Portal.get_by_mxid(room_id)
|
||||
if not portal:
|
||||
if not portal or not portal.allow_bridging:
|
||||
return
|
||||
|
||||
previously_typing = self.previously_typing.get(room_id, set())
|
||||
|
||||
Reference in New Issue
Block a user