Wiki / Core Features / Discord 审核 / 清除成员的消息

清除成员的消息

更新者 Maxime_48 · 5小时前 · 浏览量:0

删除某位成员在你的服务器上留下的全部消息,即使该成员已经离开或被封禁。

由一个命令完成:/purge-user(管理员使用,永久删除)。


🧹 删除成员的消息:/purge-user

/purge-user 会依次检查你的频道和子区,删除某一个账号发出的消息。垃圾信息泛滥之后、遇到突袭账号,或者某位成员发了你希望到处清除的内容时,可以用它。

  1. 输入 /purge-user。
  2. 在 user 中填入提及,或该成员的 Discord 用户 ID(17 到 20 位数字)。要复制 ID,请在 Discord 中开启 开发者模式(Developer Mode,位于用户设置的高级选项),右键点击该成员,选择 复制用户 ID(Copy User ID)。已离开或被封禁的成员无法再被提及,请使用他们的 ID。
  3. 如有需要,可用 channel、days 和 reason 缩小范围(见下文),然后按 Enter。
  4. 机器人会显示它即将执行的操作,并附上两个按钮:Confirm 和 Cancel。
  5. 点击 Confirm。删除开始,消息会随进度更新。

机器人在此过程中的所有回复都是私密的:只有你能看到。

选项

选项 必填 作用
user 是 提及,或单独的用户 ID(17 到 20 位数字)。
channel 否 仅限此频道及其下的子区。不填则检查服务器的所有频道。
days 否 仅限最近 N 天的消息,取值 1 到 5000。不填则检查全部历史。
reason 否 最多 512 个字符。会写入你的审核日志频道,不会发送给该成员。

🎯 能覆盖什么,不能覆盖什么

确认之前请先读这一节。

它会覆盖 该账号在文字、公告、语音和舞台频道,以及子区(活跃和已归档的,包括论坛和媒体帖子)中发出的消息,但仅限你和机器人都有权管理消息的地方。

机器人会 逐个频道 检查你的权限,而不只是看你在整个服务器的身份组。只有同时满足以下条件的频道才会被清除:

  • 你 能看到该频道,并在其中拥有 Manage Messages,并且
  • 机器人 能看到该频道、能读取其历史,并在其中拥有 Manage Messages。

如果你们两方中有一方在某个频道缺少权限,该频道会 保持原样。命令不会失败:它会继续处理其他频道,并在最终报告中列出这些频道。

有两类子区的要求更严格:

  • 私密子区:你还需要 Manage Threads。没有的话,该子区会被跳过,报告中也不会提到它的名字。
  • 已归档子区:机器人也需要 Manage Threads。它会重新打开子区、删除消息,然后再次归档。只有你和机器人都在父频道拥有 Manage Threads 时,才会去查找已归档的私密子区。

它不会做 以下这些事:

  • 封禁、踢出、禁言或警告该成员,也不会在其审核记录中添加任何内容。它只删除消息。如果该成员仍在服务器中,请另外使用 /ban 或 /mute。
  • 触及你自己无法管理的频道,即使机器人可以。这是有意为之:命令绝不会让你删除你手动无法删除的内容。
  • 删除机器人已经检查过某个频道之后,该成员才发出的消息。
  • 触及其他服务器或私信。
  • 说出你看不到的频道的名字。它不会出现在报告里,所以报告也不会让你得知它的存在。

机器人会拒绝它自己的 ID:清除它的消息会抹掉你日志频道的历史,并破坏它所管理的身份组、工单、验证和抽奖面板。


⏳ 需要多久,以及报告

Discord 不给机器人提供搜索功能,所以机器人会逐页读取每个频道的历史,挑出该成员的消息。

  • 不满 14 天 的消息会以最多 100 条为一组批量删除。
  • 超过 14 天 的消息只能 逐条 删除。在历史很长、很活跃的服务器上,这可能要花很长时间。可以的话,用 days 或 channel 缩小范围。
  • 进度消息最多每 5 秒更新一次:到目前为止已删除多少条消息、正在处理哪个频道,以及还剩多少个频道。
  • 每个服务器 同一时间只能运行一次清除。再启动第二次会收到 "A purge is already running on this server"。

结束后,机器人会回复已删除的消息数、已检查的频道数,以及 按频道 的列表。报告还可能包含:

  • Not purged (your permissions):你缺少权限的频道。
  • Skipped (bot permissions):机器人缺少权限的频道。
  • Failed, the other channels went on:因错误而中断的频道。其中已经删除的内容仍然是已删除。
  • 每个频道中 无法删除 的消息数。

过长的列表会以 "… and N more" 截断。如果什么都没找到,你会收到同样的报告,已删除消息为 0 条。

如果清除超过 14 分钟

Discord 只允许机器人在 15 分钟内编辑它的回复。在你输入命令约 14 分钟后,机器人会停止更新该消息,改为通过 私信 把最终报告发给你,末尾附有服务器名称。请确认你已允许接收服务器成员的私信,否则你可能收不到。日志频道中的记录(见下文)仍然会写入。


⚠️ 确认与取消

  • 确认消息会写明成员、涵盖哪些频道和多少天,并写有 This cannot be undone(无法撤销)。
  • 只有你 能点击这些按钮。
  • 你有 60 秒。超时后消息会显示 "Confirmation expired: nothing was deleted.",什么都不会发生。
  • Cancel 会停止一切:"Cancelled: nothing was deleted."
  • 点击 Confirm 之后就无法取消。 按钮会消失,也没有停止命令。如果机器人在中途重启,清除会停在当时的位置:已删除的保持已删除,其余保持原样。

已删除的消息无法恢复。 机器人不会保存它所删除消息的内容。


📋 会记录什么

如果你设置了审核日志频道,那里会出现两条记录:

  1. MESSAGE PURGE STARTED,写在 第一次删除之前:成员、范围、你的名字和原因。即使清除被中断,你仍然知道是谁对谁执行的。
  2. MESSAGES PURGED,写在最后:删除了多少条消息、涉及多少个频道,附带相同的详情。

这两条记录都不包含任何消息的文字,只有数量。


🔑 谁可以使用

以下条件必须全部满足:

  • 服务器上已 启用 审核功能
  • 此人拥有 Discord 的 Manage Messages 权限。正是这个权限让命令可见。
  • 如果你在审核设置中设定了 允许的审核员身份组(斜杠命令),他们还必须拥有其中一个身份组
  • 在他们想清除的每个频道中都拥有 Manage Messages,如上所述(私密子区还需要 Manage Threads)

机器人在每个要清除的频道中需要:View Channel、Read Message History 和 Manage Messages。对已归档子区,还需要 Manage Threads。


💡 示例

一个垃圾信息账号加入了服务器,在多个频道发了邀请链接,两天后被封禁。

  1. 复制该账号的 ID(被封禁的用户无法被提及)。
  2. 输入 /purge-user user:123456789012345678 days:3 reason:invite spam。
  3. 机器人要求你确认。点击 Confirm。
  4. 结束时,报告会给出已删除的消息数、涉及多少个频道,以及检查了多少个频道。
  5. 列在 Not purged (your permissions) 下的频道,是你没有 Manage Messages 的频道,例如仅限管理员的频道。如有需要,其他审核员可以把 channel 设为该频道再运行命令。

🔧 出问题时

🚨 “Give a user mention or a Discord user ID (17 to 20 digits)”

user 字段既不是提及,也不是 ID。请在开启开发者模式的情况下重新复制 ID。名字或标签无效。

🚨 “The Moderation feature is not enabled for this server”

在面板中开启该功能,然后再试一次。消息里包含链接。

🚨 “This server is not registered in the YAWBDB panel”

该服务器尚未连接到面板。请先完成连接。

🚨 “You do not have a role that is allowed to use moderation commands on this server”

你的服务器把审核命令限定给了某些身份组。请让管理员把你的身份组加入 允许的审核员身份组(斜杠命令),或者清空这份列表。

🚨 “A purge is already running on this server”

另一次清除正在进行。等它的报告出来,再运行你的。

🚨 “I could not read your permissions on this server, so nothing was deleted”

Discord 没有把你的权限交给机器人。没有删除任何内容。请稍后再试。

🚨 我在命令列表里看不到 /purge-user

Discord 会对没有 Manage Messages 权限的人隐藏它。服务器管理员也可以在 服务器设置 → 整合 → YAWBDB(Server Settings → Integrations → YAWBDB)中更改谁能看到它。

🚨 报告出来后仍有一些消息还在

看看报告:列在 Not purged (your permissions) 或 Skipped (bot permissions) 下的频道保持原样,没有 Manage Threads 的私密子区同样会被跳过。修复权限后,用 channel 再运行一次命令。重复运行是安全的:已经消失的消息只是不会被找到。

🚨 我清除了错误的成员

无法撤销。这些消息已永久消失。