Discord 反垃圾信息机器人会监视成员发言的速度、是否重复发送相同的消息,以及一次提及多少人。一旦成员超过你设置的限制,它会立即自动将其禁言。设置得当时,它能在几秒钟内拦截突袭机器人和刷屏者,而不会影响只是打字较快的正常聊天成员。本指南将详细说明什么才算垃圾信息,Noxyr 的阈值和禁言在底层如何运作,以及如何调整这些设置,使真正的成员永远不会被误伤。

A burst of repeated messages fills a rate meter until it trips and the sender is timed out. rate limit TRIP Timed out

什么算垃圾信息?

大多数 Discord 反垃圾信息设置会监视三种不同的模式,其中任何一种都可以单独触发处理:

  • 消息频率:同一个人在短时间内发送过多消息。这可以捕捉复制粘贴式刷屏和脚本化的突袭账号。
  • 重复内容:同一条消息(或几乎相同的消息)被反复发送。这可以捕捉“加入后在五个频道粘贴同一个诈骗链接”的模式。
  • 批量提及:单条消息提及的用户或身份组远多于正常消息,包括 @everyone 和 @here。

成员只需触发其中一项即可。连续发送六条正常消息、从不重复内容也从不提及任何人的成员,则完全不会受到影响。

Noxyr 的反垃圾信息阈值和禁言如何运作

Noxyr 按服务器、按成员跟踪一个滚动时间窗口。该成员在窗口内发送的每条消息都会计入这个窗口;超过窗口长度的旧消息会自动移出。每条新消息都会对该窗口运行三项检查:

  • 最大消息数 / 时间窗口:如果成员在窗口内发送的消息超过设定数量(默认:8 秒内超过 6 条),则判定为频率超限。
  • 重复上限:在比较之前,内容会先去除首尾空白、转为小写,并压缩多余的空白字符,因此“Hello!!”和“hello!!”会被视为同一条消息。当窗口内出现的重复消息达到该数量(默认:4 条)时,判定为超限。
  • 提及上限:Noxyr 会统计消息中提及的用户和身份组。如果消息中包含 @everyone 或 @here,则会在计数中加上 100,无论你设置的上限是多少都必定触发,因为没有人会把提及上限设得这么高。

最先触发的检查会执行处理;机器人不会等待第二项检查是否也会触发。触发后,根据你的设置可能发生两种情况:

  • 禁言:成员会被禁言设定的分钟数(默认 10 分钟,通过命令最长可设为 7 天,但不超过 Discord 的 28 天上限)。这只会在机器人的身份组高于该成员时发生,与其他任何管理操作相同。
  • 删除消息:如果启用(默认开启),机器人会在触发的频道中删除该成员最近的最多 10 条被跟踪消息。它不会去追查该成员在同一波刷屏期间于其他频道发送的消息。

触发之后,该成员的时间窗口会重置为空,因此一波刷屏只会触发一次处理,而不是对每条超限的消息各触发一次。

配置方法

以上所有内容都可以通过 /security antispam 或控制面板的安全页面进行设置:

  • enabled:即使安全模块本身已开启,反垃圾信息默认仍处于关闭状态,因此开启模块不会在你毫无准备时开始处理任何人。
  • max_messages 和 window_seconds:频率限制以及时间窗口的长度。
  • duplicate_limit:重复多少次才算垃圾信息。
  • mention_limit:一条消息中提及多少次才算批量提及。
  • timeout_minutes:禁言持续的时长。
  • delete_messages:是否同时清理垃圾信息。

/security status 会在一个嵌入消息中同时显示反垃圾信息和反大规模破坏的当前数值。在修改任何设置之前,这是查看实际生效配置最快的方式。

避免误判

如果垃圾信息过滤器误禁言正常成员,人们就会因此离开。以下几点可以避免这种情况:

  • 管理员会自动豁免。拥有“管理员”权限的人,或你在控制面板中添加为管理员身份组的身份组成员,都会被完全跳过。员工发布的公告和抽奖提及永远不会触发提及上限。
  • 机器人和 Webhook 的消息从不检查。只有人类发送的消息才会进入反垃圾信息检查,因此公告 Webhook 或其他机器人在日志频道中快速发送消息不会造成问题。
  • 先提高时间窗口,再提高数量。如果繁忙的综合频道中打字快的成员接近频率限制,适当放宽 window_seconds(比如从 8 调到 12)通常比提高 max_messages 更温和。它能为正常的来回对话留出更多空间,同时不会为真正的刷屏敞开太大的口子。
  • 注意模板内容的 duplicate_limit。使用复制粘贴模板的社区(如组队招募帖、工单宏、申请回答)可能会触碰重复检测。请适当提高上限,而不是完全关闭重复检测。
  • 调整期间关闭 delete_messages。关闭删除后,垃圾信息仍会被禁言,但消息会保留可见,这样更容易看清究竟是什么触发了过滤器,并依据真实证据调整数值。
  • 目前反垃圾信息触发时不会像反大规模破坏那样发出警报嵌入消息。Discord 自身的审计日志仍会记录机器人执行的每一次禁言,因此如果你想回顾事件经过,请在那里查看(或用 /security status 查看当前设置)。

Discord 反垃圾信息机器人与 Discord 内置 AutoMod 的对比

Discord 原生的 AutoMod 可以拦截包含类似垃圾信息链接或被标记关键词的消息,并且有自己的提及刷屏规则,全部在服务器设置中配置。它确实很有用,而且开启不需要任何费用。它不及专门的 Discord 反垃圾信息机器人之处在于:每项防护都是你在规则编辑器中逐条建立的独立规则,而且它们都不会像按成员滚动的时间窗口那样,跨消息跟踪成员的整体行为。AutoMod 只会孤立地对单条消息作出反应;它没有“此人在八秒内发了六条消息”或“这是这一分钟内同一条消息的第四次复制”这样的原生概念。

像 Noxyr 这样基于机器人的过滤器,将频率限制、重复检测和提及上限整合在一个开关之后,在所有地方应用相同的管理员豁免,并让你在一个地方(控制面板或 /security status)一次性查看和修改所有数值,而不必面对一堆彼此独立的规则。同时使用两者并不冲突。AutoMod 的关键词和链接过滤器能捕捉到基于频率的过滤器永远不会发现的内容,而按成员的反垃圾信息过滤器则能捕捉到 AutoMod 并非为之设计的刷屏模式。

常见问题

反垃圾信息默认开启吗?不开启。安全模块默认开启,但反垃圾信息本身需要单独启用,可使用 /security antispam enabled:True,或在控制面板中开启。

如果版主刷表情或快速回复,机器人会禁言他吗?如果他拥有管理员权限或已配置的管理员身份组,则不会。如果受信任的员工还没有管理员权限,可以在控制面板的身份组页面将其添加为管理员身份组。

它会删除成员在每个频道发送的消息吗?不会,只删除触发所在频道的消息,并且只删除该频道中最近的最多 10 条被跟踪消息。

这与反大规模破坏有什么区别?反垃圾信息监视的是普通成员发送消息的行为。反大规模破坏监视的则是管理员级别的破坏性操作,例如大规模删除频道或身份组。二者分别配置,可以独立运行;Noxyr 安全模块的另一半内容请参阅完整的反大规模破坏指南。

我能为不同的频道设置不同的限制吗?目前不能;限制适用于整个服务器,不过删除操作只会针对刷屏发生的那个频道。

反垃圾信息是 Noxyr 免费安全模块中的一个开关,与反大规模破坏、验证和审核日志并列。免费添加 Noxyr,并通过安全文档将其开启;如需了解该模块涵盖的全部功能,请阅读完整的安全机器人功能页面。