Allow filtering direct chats with filter config (#892)
This commit is contained in:
@@ -205,6 +205,7 @@ class Config(BaseBridgeConfig):
|
||||
|
||||
copy("bridge.filter.mode")
|
||||
copy("bridge.filter.list")
|
||||
copy("bridge.filter.users")
|
||||
|
||||
copy("bridge.command_prefix")
|
||||
|
||||
|
||||
@@ -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".
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
@@ -455,8 +456,8 @@ class Portal(DBPortal, BasePortal):
|
||||
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":
|
||||
@@ -487,6 +488,7 @@ class Portal(DBPortal, BasePortal):
|
||||
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"]
|
||||
|
||||
Reference in New Issue
Block a user