Skip to content

Commit

Permalink
Allow filtering direct chats with filter config (#892)
Browse files Browse the repository at this point in the history
  • Loading branch information
Steffo99 authored May 7, 2023
1 parent 40e4c7e commit 759ccf3
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 3 deletions.
1 change: 1 addition & 0 deletions mautrix_telegram/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ def do_update(self, helper: ConfigUpdateHelper) -> None:

copy("bridge.filter.mode")
copy("bridge.filter.list")
copy("bridge.filter.users")

copy("bridge.command_prefix")

Expand Down
6 changes: 5 additions & 1 deletion mautrix_telegram/example-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,6 @@ bridge:
# Filter rooms that can/can't be bridged. Can also be managed using the `filter` and
# `filter-mode` management commands.
#
# Filters do not affect direct chats.
# An empty blacklist will essentially disable the filter.
filter:
# Filter mode to use. Either "blacklist" or "whitelist".
Expand All @@ -492,6 +491,11 @@ bridge:
mode: blacklist
# The list of group/channel IDs to filter.
list: []
# How to handle direct chats:
# If users is "null", direct chats will follow the previous settings.
# If users is "true", direct chats will always be bridged.
# If users is "false", direct chats will never be bridged.
users: true

# The prefix for commands. Only required in non-management rooms.
command_prefix: "!tg"
Expand Down
6 changes: 4 additions & 2 deletions mautrix_telegram/portal.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,7 @@ class Portal(DBPortal, BasePortal):
# Config cache
filter_mode: str
filter_list: list[int]
filter_users: bool | None

max_initial_member_sync: int
sync_channel_members: bool
Expand Down Expand Up @@ -455,8 +456,8 @@ def main_intent(self) -> IntentAPI:
def allow_bridging(self) -> bool:
if self._bridging_blocked_at_runtime:
return False
elif self.peer_type == "user":
return True
elif self.peer_type == "user" and self.filter_users is not None:
return self.filter_users
elif self.filter_mode == "whitelist":
return self.tgid in self.filter_list
elif self.filter_mode == "blacklist":
Expand Down Expand Up @@ -487,6 +488,7 @@ def init_cls(cls, bridge: "TelegramBridge") -> None:
cls.private_chat_portal_meta = cls.config["bridge.private_chat_portal_meta"]
cls.filter_mode = cls.config["bridge.filter.mode"]
cls.filter_list = cls.config["bridge.filter.list"]
cls.filter_users = cls.config["bridge.filter.filter_users"]
cls.hs_domain = cls.config["homeserver.domain"]
cls.backfill_msc2716 = cls.config["bridge.backfill.msc2716"]
cls.backfill_enable = cls.config["bridge.backfill.enable"]
Expand Down

0 comments on commit 759ccf3

Please sign in to comment.