Skip to content

Commit 05cf150

Browse files
bradtgmurraytulir
authored andcommittedNov 29, 2021
Check filter list before handling matrix events
1 parent 6245c40 commit 05cf150

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed
 

‎mautrix_telegram/matrix.py

+14-13
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,15 @@ async def handle_invite(self, room_id: RoomID, user_id: UserID, inviter: 'u.User
122122
return
123123
await user.ensure_started()
124124
portal = po.Portal.get_by_mxid(room_id)
125-
if user and await user.has_full_access(allow_bot=True) and portal:
126-
await portal.invite_telegram(inviter, user)
125+
if user and await user.has_full_access(allow_bot=True):
126+
if portal and portal.allow_bridging:
127+
await portal.invite_telegram(inviter, user)
127128

128129
async def handle_join(self, room_id: RoomID, user_id: UserID, event_id: EventID) -> None:
129130
user = await u.User.get_by_mxid(user_id).ensure_started()
130131

131132
portal = po.Portal.get_by_mxid(room_id)
132-
if not portal:
133+
if not portal or not portal.allow_bridging:
133134
return
134135

135136
if not user.relaybot_whitelisted:
@@ -152,7 +153,7 @@ async def get_leave_handle_info(self) -> Tuple[po.Portal, u.User]:
152153
async def handle_leave(self, room_id: RoomID, user_id: UserID, event_id: EventID) -> None:
153154
self.log.debug(f"{user_id} left {room_id}")
154155
portal = po.Portal.get_by_mxid(room_id)
155-
if not portal:
156+
if not portal or not portal.allow_bridging:
156157
return
157158

158159
user = u.User.get_by_mxid(user_id, create=False)
@@ -166,7 +167,7 @@ async def handle_kick_ban(self, ban: bool, room_id: RoomID, user_id: UserID, sen
166167
action = "banned" if ban else "kicked"
167168
self.log.debug(f"{user_id} was {action} from {room_id} by {sender} for {reason}")
168169
portal = po.Portal.get_by_mxid(room_id)
169-
if not portal:
170+
if not portal or not portal.allow_bridging:
170171
return
171172

172173
if user_id == self.az.bot_mxid:
@@ -229,7 +230,7 @@ async def handle_redaction(evt: RedactionEvent) -> None:
229230
return
230231

231232
portal = po.Portal.get_by_mxid(evt.room_id)
232-
if not portal:
233+
if not portal or not portal.allow_bridging:
233234
return
234235

235236
await portal.handle_matrix_deletion(sender, evt.redacts, evt.event_id)
@@ -238,7 +239,7 @@ async def handle_redaction(evt: RedactionEvent) -> None:
238239
async def handle_power_levels(evt: StateEvent) -> None:
239240
portal = po.Portal.get_by_mxid(evt.room_id)
240241
sender = await u.User.get_by_mxid(evt.sender).ensure_started()
241-
if await sender.has_full_access(allow_bot=True) and portal:
242+
if await sender.has_full_access(allow_bot=True) and portal and portal.allow_bridging:
242243
await portal.handle_matrix_power_levels(sender, evt.content.users,
243244
evt.unsigned.prev_content.users,
244245
evt.event_id)
@@ -248,7 +249,7 @@ async def handle_room_meta(evt_type: EventType, room_id: RoomID, sender_mxid: Us
248249
content: RoomMetaStateEventContent, event_id: EventID) -> None:
249250
portal = po.Portal.get_by_mxid(room_id)
250251
sender = await u.User.get_by_mxid(sender_mxid).ensure_started()
251-
if await sender.has_full_access(allow_bot=True) and portal:
252+
if await sender.has_full_access(allow_bot=True) and portal and portal.allow_bridging:
252253
handler, content_type, content_key = {
253254
EventType.ROOM_NAME: (portal.handle_matrix_title, RoomNameStateEventContent, "name"),
254255
EventType.ROOM_TOPIC: (portal.handle_matrix_about, RoomTopicStateEventContent, "topic"),
@@ -264,7 +265,7 @@ async def handle_room_pin(room_id: RoomID, sender_mxid: UserID,
264265
event_id: EventID) -> None:
265266
portal = po.Portal.get_by_mxid(room_id)
266267
sender = await u.User.get_by_mxid(sender_mxid).ensure_started()
267-
if await sender.has_full_access(allow_bot=True) and portal:
268+
if await sender.has_full_access(allow_bot=True) and portal and portal.allow_bridging:
268269
if not new_events:
269270
await portal.handle_matrix_unpin_all(sender, event_id)
270271
else:
@@ -276,7 +277,7 @@ async def handle_room_pin(room_id: RoomID, sender_mxid: UserID,
276277
async def handle_room_upgrade(room_id: RoomID, sender: UserID, new_room_id: RoomID,
277278
event_id: EventID) -> None:
278279
portal = po.Portal.get_by_mxid(room_id)
279-
if portal:
280+
if portal and portal.allow_bridging:
280281
await portal.handle_matrix_upgrade(sender, new_room_id, event_id)
281282

282283
async def handle_member_info_change(self, room_id: RoomID, user_id: UserID,
@@ -287,7 +288,7 @@ async def handle_member_info_change(self, room_id: RoomID, user_id: UserID,
287288
return
288289

289290
portal = po.Portal.get_by_mxid(room_id)
290-
if not portal or not portal.has_bot:
291+
if not portal or not portal.has_bot or not portal.allow_bridging:
291292
return
292293

293294
user = await u.User.get_by_mxid(user_id).ensure_started()
@@ -305,7 +306,7 @@ def parse_read_receipts(content: ReceiptEventContent) -> Iterable[Tuple[UserID,
305306
async def handle_read_receipts(room_id: RoomID, receipts: Iterable[Tuple[UserID, EventID]]
306307
) -> None:
307308
portal = po.Portal.get_by_mxid(room_id)
308-
if not portal:
309+
if not portal or not portal.allow_bridging:
309310
return
310311

311312
for user_id, event_id in receipts:
@@ -321,7 +322,7 @@ async def handle_presence(user_id: UserID, presence: PresenceState) -> None:
321322

322323
async def handle_typing(self, room_id: RoomID, now_typing: Set[UserID]) -> None:
323324
portal = po.Portal.get_by_mxid(room_id)
324-
if not portal:
325+
if not portal or not portal.allow_bridging:
325326
return
326327

327328
previously_typing = self.previously_typing.get(room_id, set())

0 commit comments

Comments
 (0)
Please sign in to comment.