Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit 79be83d

Browse files
committed
FEATURE: allow auto silencing of spam accounts
New rule can also allow for silencing an account automatically This can prevent spammers from creating additional posts.
1 parent db43f12 commit 79be83d

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

config/locales/server.en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ en:
44
flag_types:
55
review: "Add post to review queue"
66
spam: "Flag as spam and hide post"
7+
spam_silence: "Flag as spam, hide post and silence user"
78
scriptables:
89
llm_triage:
910
title: Triage posts using AI

lib/automation.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ def self.flag_types
66
[
77
{ id: "review", translated_name: I18n.t("discourse_automation.ai.flag_types.review") },
88
{ id: "spam", translated_name: I18n.t("discourse_automation.ai.flag_types.spam") },
9+
{
10+
id: "spam_silence",
11+
translated_name: I18n.t("discourse_automation.ai.flag_types.spam_silence"),
12+
},
913
]
1014
end
1115
def self.available_models

lib/automation/llm_triage.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,16 @@ def self.handle(
8383
.sub("%%AUTOMATION_ID%%", automation&.id.to_s)
8484
.sub("%%AUTOMATION_NAME%%", automation&.name.to_s)
8585

86-
if flag_type == :spam
86+
if flag_type == :spam || flag_type == :spam_silence
8787
PostActionCreator.new(
8888
Discourse.system_user,
8989
post,
9090
PostActionType.types[:spam],
9191
message: score_reason,
9292
queue_for_review: true,
9393
).perform
94+
95+
SpamRule::AutoSilence.new(post.user, post).silence_user if flag_type == :spam_silence
9496
else
9597
reviewable =
9698
ReviewablePost.needs_review!(target: post, created_by: Discourse.system_user)

spec/lib/modules/automation/llm_triage_spec.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,24 @@ def triage(**args)
110110
expect(post.topic.reload.visible).to eq(false)
111111
end
112112

113+
it "can handle spam+silence flags" do
114+
DiscourseAi::Completions::Llm.with_prepared_responses(["bad"]) do
115+
triage(
116+
post: post,
117+
model: "custom:#{llm_model.id}",
118+
system_prompt: "test %%POST%%",
119+
search_for_text: "bad",
120+
flag_post: true,
121+
flag_type: :spam_silence,
122+
automation: nil,
123+
)
124+
end
125+
126+
expect(post.reload).to be_hidden
127+
expect(post.topic.reload.visible).to eq(false)
128+
expect(post.user.silenced?).to eq(true)
129+
end
130+
113131
it "can handle garbled output from LLM" do
114132
DiscourseAi::Completions::Llm.with_prepared_responses(["Bad.\n\nYo"]) do
115133
triage(

0 commit comments

Comments
 (0)