# 垃圾邮件：追溯性地让 AI 审查最近的帖子，然后删除被标记为垃圾邮件的帖子

**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:** [2025年八月17日 22:09 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\
**Page:** 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:** [2025年八月17日 22:09 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>

我帮助了一个每小时收到约 30 条垃圾邮件帖子的网站。我们启用了 AI Spam，但这并没有解决现有帖子存在的问题。我所做的就是这个。这可能对您有用。它没有在您的网站上进行测试，因此如果您执行了任何这些操作，您应该进行备份，并确保它看起来不像是由试图摧毁您网站的 AI 编写的。

这假定您了解 rails 的工作原理以及如何运行它。如果您不了解，您可能不应该这样做。

首先，您应该将您的网站置于 [Discourse 中的只读模式](https://meta.discourse.org/t/read-only-modes-in-discourse/296976)，这样人们就不会在您犯下可怕错误时创建内容。然后 **进行备份** 。这意味着在您关闭只读模式之前，您可以安全地恢复到您的备份。

### 获取最近的帖子

攻击开始于一天多前，所以我回溯了两天。您也可以执行类似 `36.hours.ago` 的操作，如果您想更明确的话。如果我更聪明一些，我可能会做些什么来跳过私信中的帖子，但我决定不去担心它。

```plaintext
posts = Post.where("created_at >= ?", 2.days.ago)
          .where(deleted_at: nil)
          .where("user_id > ?", 1)

```

### 对这些帖子调用 SpamScanner

我不太确定是什么导致其中一些帖子失败，但如果您遇到一些“哎呀”的情况，这可能并不值得担心。

```plaintext
posts.each do |post|
  begin
    puts "https://talk.commonmark.org/p/#{post.id}"
    DiscourseAi::AiModeration::SpamScanner.perform_scan(post)
  rescue
    puts "oops";
  end;
  sleep 0.2;
end

```

### 获取现在需要审核的帖子

这会获取刚刚被标记为可审核的（可能是通过上述操作）待审核帖子。我们不想盲目地将此应用于不属于这次危险冒险的内容。

```plaintext
reviewables = Reviewable.where(status: "pending")
  .where(potential_spam: true)
  .where("created_at >= ?", 1.hour.ago)
  .where("updated_at >= ?", 1.hour.ago)

```

### 盲目信任 AI

当然，您仔细查看了被隐藏的主题，它们看起来都确实是垃圾邮件，所以您就准备动手了。标题是个玩笑。_您不是真的盲目信任 AI，对吧？！?!?_

这将删除帖子并删除和阻止用户。这非常非常危险。

```plaintext

reviewables.each do |reviewable|
  begin
    puts "deleting https://talk.commonmark.org/t/#{reviewable.topic_id}"
    if reviewable.topic.nil?
      puts "already gone"
      next
    end
    reviewable.perform(user, :delete_user_block)
  rescue
    puts "oops"
  end
end

```
