Ajudei um site que recebia cerca de 30 posts de spam por hora. Ativamos o AI Spam, mas isso não resolveu o problema dos posts existentes. Veja o que eu fiz. Isso pode funcionar para você. Não foi testado no seu site, então se você fizer alguma dessas coisas, deve fazer um backup e também garantir que não pareça que isso foi escrito por uma IA que está tentando derrubar seu site.
Isso pressupõe que você saiba o que é rails e como executá-lo. Se não souber, provavelmente não deveria estar fazendo isso.
Primeiro, você deve colocar seu site em Modos Somente Leitura no Discourse para que as pessoas não criem conteúdo enquanto você comete algum erro terrível. Em seguida, faça um backup. Isso significará que, até que você desative o modo somente leitura, poderá retornar com segurança ao seu backup.
Obter Posts Recentes
O ataque começou há pouco mais de um dia, então voltei dois dias. Você também poderia fazer coisas como 36.hours.ago se quisesse ser mais explícito. Se eu fosse mais esperto, teria feito algo para pular posts em MPs, mas decidi não me preocupar com isso.
posts = Post.where("created_at >= ?", 2.days.ago)
.where(deleted_at: nil)
.where("user_id > ?", 1)
Chamar o SpamScanner nesses Posts
Não tenho certeza do que aconteceu para fazer alguns falharem, mas se você tiver alguns “ops”, provavelmente não é motivo de preocupação.
posts.each do |post|
begin
puts "https://talk.commonmark.org/p/#{post.id}"
DiscourseAi::AiModeration::SpamScanner.perform_scan(post)
rescue
puts "ops";
end;
sleep 0.2;
end
Obter os Posts que Agora Precisam Ser Revisados
Isso obtém posts revisáveis que acabaram de ser marcados como revisáveis (presumivelmente pelas ações acima). Não queremos aplicar isso cegamente a coisas que não fazem parte desta aventura perigosa.
reviewables = Reviewable.where(status: "pending")
.where(potential_spam: true)
.where("created_at >= ?", 1.hour.ago)
.where("updated_at >= ?", 1.hour.ago)
Confiar Cegamente na IA
Claro, você analisou cuidadosamente os tópicos que foram ocultados e todos parecem ser realmente spam, então você vai em frente. O título é uma piada. Você não está realmente confiando cegamente na IA, está?!?!?
Isso excluirá os posts e excluirá e bloqueará os usuários. É realmente, realmente perigoso.
reviewables.each do |reviewable|
begin
puts "deletando https://talk.commonmark.org/t/#{reviewable.topic_id}"
if reviewable.topic.nil?
puts "já foi"
next
end
reviewable.perform(user, :delete_user_block)
rescue
puts "ops"
end
end