From 533054b8a0221e746e34682fdbd245da3db32f17 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 16 Apr 2023 23:11:44 +0300 Subject: [PATCH] Add option to disable backfilling in big guilds --- config/bridge.go | 1 + config/upgrade.go | 1 + example-config.yaml | 5 +++++ user.go | 4 +++- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/config/bridge.go b/config/bridge.go index 44ef74c..495dd3b 100644 --- a/config/bridge.go +++ b/config/bridge.go @@ -71,6 +71,7 @@ type BridgeConfig struct { Initial BackfillLimitPart `yaml:"initial"` Missed BackfillLimitPart `yaml:"missed"` } `yaml:"forward_limits"` + MaxGuildMembers int `yaml:"max_guild_members"` } `yaml:"backfill"` Encryption bridgeconfig.EncryptionConfig `yaml:"encryption"` diff --git a/config/upgrade.go b/config/upgrade.go index 8b10beb..b4034da 100644 --- a/config/upgrade.go +++ b/config/upgrade.go @@ -72,6 +72,7 @@ func DoUpgrade(helper *up.Helper) { helper.Copy(up.Int, "bridge", "backfill", "forward_limits", "initial", "channel") helper.Copy(up.Int, "bridge", "backfill", "forward_limits", "missed", "dm") helper.Copy(up.Int, "bridge", "backfill", "forward_limits", "missed", "channel") + helper.Copy(up.Int, "bridge", "backfill", "max_guild_members") helper.Copy(up.Bool, "bridge", "encryption", "allow") helper.Copy(up.Bool, "bridge", "encryption", "default") helper.Copy(up.Bool, "bridge", "encryption", "require") diff --git a/example-config.yaml b/example-config.yaml index 8ce1a8e..d6e0028 100644 --- a/example-config.yaml +++ b/example-config.yaml @@ -186,6 +186,7 @@ bridge: # Optional extra text sent when joining a management room. additional_help: "" + # Settings for backfilling messages. backfill: # Limits for forward backfilling. forward_limits: @@ -202,6 +203,10 @@ bridge: missed: dm: 0 channel: 0 + # Maximum members in a guild to enable backfilling. Set to -1 to disable limit. + # This can be used as a rough heuristic to disable backfilling in channels that are too active. + # Currently only applies to missed message backfill. + max_guild_members: -1 # End-to-bridge encryption support options. # diff --git a/user.go b/user.go index f5fa83e..e6ea825 100644 --- a/user.go +++ b/user.go @@ -843,7 +843,9 @@ func (user *User) handleGuild(meta *discordgo.Guild, timestamp time.Time, isInSp } } else { portal.UpdateInfo(user, ch) - portal.ForwardBackfillMissed(user, ch) + if user.bridge.Config.Bridge.Backfill.MaxGuildMembers < 0 || meta.MemberCount < user.bridge.Config.Bridge.Backfill.MaxGuildMembers { + portal.ForwardBackfillMissed(user, ch) + } } } }