mirror of
https://github.com/discourse/discourse.git
synced 2025-06-04 10:24:39 +08:00
FEATURE: Silence watched word (#13160)
This is a new type of watched word to replace auto_silence_first_post_ regex site setting.
This commit is contained in:
@ -54,6 +54,10 @@ class NewPostManager
|
||||
manager.user.trust_level <= SiteSetting.auto_silence_fast_typers_max_trust_level
|
||||
end
|
||||
|
||||
def self.auto_silence?(manager)
|
||||
is_first_post?(manager) && WordWatcher.new("#{manager.args[:title]} #{manager.args[:raw]}").should_silence?
|
||||
end
|
||||
|
||||
def self.matches_auto_silence_regex?(manager)
|
||||
args = manager.args
|
||||
|
||||
@ -102,7 +106,7 @@ class NewPostManager
|
||||
|
||||
return :fast_typer if is_fast_typer?(manager)
|
||||
|
||||
return :auto_silence_regex if matches_auto_silence_regex?(manager)
|
||||
return :auto_silence_regex if auto_silence?(manager) || matches_auto_silence_regex?(manager)
|
||||
|
||||
return :staged if SiteSetting.approve_unless_staged? && user.staged?
|
||||
|
||||
@ -168,7 +172,7 @@ class NewPostManager
|
||||
I18n.with_locale(SiteSetting.default_locale) do
|
||||
if is_fast_typer?(manager)
|
||||
UserSilencer.silence(manager.user, Discourse.system_user, keep_posts: true, reason: I18n.t("user.new_user_typed_too_fast"))
|
||||
elsif matches_auto_silence_regex?(manager)
|
||||
elsif auto_silence?(manager) || matches_auto_silence_regex?(manager)
|
||||
UserSilencer.silence(manager.user, Discourse.system_user, keep_posts: true, reason: I18n.t("user.content_matches_auto_silence_regex"))
|
||||
elsif reason == :email_spam && is_first_post?(manager)
|
||||
UserSilencer.silence(manager.user, Discourse.system_user, keep_posts: true, reason: I18n.t("user.email_in_spam_header"))
|
||||
|
Reference in New Issue
Block a user