This repository was archived by the owner on Jul 22, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +26
-1
lines changed
spec/lib/modules/automation Expand file tree Collapse file tree 4 files changed +26
-1
lines changed Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 )
Original file line number Diff line number Diff 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 \n Yo" ] ) do
115133 triage (
You can’t perform that action at this time.
0 commit comments