# Spam: Obtenha retroativamente a IA para revisar posts recentes e, em seguida, exclua os marcados como spam

**URL:** https://meta.discourse.org/t/spam-retroactively-get-ai-to-review-recent-posts-and-then-delete-the-ones-marked-as-spam/378956
**Category:** Sysadmins
**Tags:** ai, spam
**Created:** [Agosto 17, 2025, 10:09pm UTC](https://meta.discourse.org/t/spam-retroactively-get-ai-to-review-recent-posts-and-then-delete-the-ones-marked-as-spam/378956 "2025-08-17T22:09:43Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Agosto 17, 2025, 10:09pm UTC](https://meta.discourse.org/t/spam-retroactively-get-ai-to-review-recent-posts-and-then-delete-the-ones-marked-as-spam/378956/1 "2025-08-17T22:09:43Z")

</div>

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](https://meta.discourse.org/t/read-only-modes-in-discourse/296976) 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.

```plaintext
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.

```plaintext
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.

```plaintext
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.

```plaintext

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

```

---

_[View the full topic](https://meta.discourse.org/t/spam-retroactively-get-ai-to-review-recent-posts-and-then-delete-the-ones-marked-as-spam/378956)._
