Discord 机器人离线通常只有几种可预测的原因:令牌被重置、特权 intent 被关闭、托管机器人的投票有效期已过,或机器人所依赖的服务器中的机器人被移除。Discord 网关会通过关闭代码告诉你具体是哪一种情况。代码 4004 和 4013/4014 是最常见的两种,而且每一种都有明确、可操作的修复方法,而不是“重启一下,然后祈祷”。
从这里开始:先排查最可能的原因
按照每种情况实际发生的频率排序:
- 令牌已被重置。有人在开发者门户中按下了“重置令牌”,无论是有意还是无意,机器人正在使用的旧令牌现在已经失效。
- 特权 intent 被关闭。在机器人已经设置完成之后,“服务器成员 Intent”或“消息内容 Intent”被关闭了。
- 投票或订阅有效期已过。对于 Noxyr 自定义机器人这类托管机器人,运行时长与 Top.gg 投票挂钩,而有效期加上宽限期已经用完。
- 机器人被移出服务器,或它所依赖的机器人被移出。自定义机器人特别依赖 Noxyr 本身的存在;将 Noxyr 踢出,会使该服务器中的自定义机器人停止运行。
- 真正的服务中断。Discord 本身出现了故障。这种情况很少见,但在假定是你的设置有问题之前,请先查看 discordstatus.com。
网关关闭代码的实际含义
| 代码 | 含义 | 常见原因 |
|---|---|---|
| 4004 | 身份验证失败 | 令牌错误,或在开发者门户中被重置 |
| 4013 | 无效的 intent | 机器人的代码请求了一个不存在的 intent,或 Discord 不接受的组合 |
| 4014 | 不允许的 intent | 机器人请求了某个特权 intent(服务器成员或消息内容),但该应用程序并未开启它 |
实际上,在大多数机器人上,4013 和 4014 通常出于同一个根本原因:代码所需的某个特权 intent 在开发者门户中被关闭了。Discord.js 等类库有时会在日志中将其报告为“不允许的 intent”错误,而不是原始的数字代码,但问题是相同的。我们的特权网关 intent 指南更深入地介绍了每个 intent 控制什么,以及缺少它会出现什么问题。
在 Noxyr 自定义机器人上修复每种情况
网关 4004,或“Discord 拒绝了此令牌”
机器人上次登录所用的令牌已不再有效。当令牌在开发者门户中被重置时就会发生这种情况,无论那是出于安全考虑而有意轮换,还是因为在“机器人”选项卡中随意浏览时误按了“重置令牌”。
- 打开 Discord 开发者门户,选择该应用程序,然后进入“机器人”选项卡。
- 再次按下重置令牌,这会生成一个新令牌;请立即复制,因为 Discord 只会显示一次。
- 打开 Noxyr 控制面板上的自定义机器人页面,并粘贴新令牌。
- 重新开启机器人。Noxyr 的节点会自动关闭令牌无效的机器人,以免它陷入无效的重连循环;粘贴一个有效的令牌并将其开启,才会重新启动机器人。
网关 4013/4014,或“Discord 拒绝了连接”
设置时开启的某个特权 intent,之后被关闭了,通常是有人在无关的事情上点击“机器人”选项卡时发生的。
- 在开发者门户中,进入 Bot → Privileged Gateway Intents(机器人 → 特权网关 Intent)。
- 重新开启服务器成员 Intent和消息内容 Intent。两者都是必需的;Noxyr 的功能集(欢迎消息、成员数量、AI 聊天、自动回复、工单聊天记录)都需要它们。
- 保存,然后在控制面板的自定义机器人页面中重新开启机器人。由于 Discord 只在下一次登录时应用 intent 更改,仅仅重新开启开关是不够的,机器人必须重新连接。
投票有效期和宽限期已过
自定义机器人依靠 Top.gg 投票运行。一次投票可解锁 12 小时;之后,74 小时的宽限期会在控制面板页面锁定时让机器人继续运行。如果两者都已用完,机器人就会离线,但你的任何设置都不会被删除。
- 在 Top.gg 上为 Noxyr 投票。
- 返回自定义机器人页面;投票记录成功后,页面会立即解锁。
- 机器人会自动重启,并使用之前相同的令牌和设置。
为了避免这种情况,我们会在你上次投票后 24 小时(即宽限期开始后 12 小时)发送一条提醒私信。如果机器人状态显示“已暂停”,页面本身会说明原因是投票、宽限期,还是下面提到的其他问题。
Noxyr 已被移出服务器
自定义机器人运行在 Noxyr 为该服务器提供的设置和数据库之上,因此它依赖于 Noxyr 仍是服务器成员。如果 Noxyr 被踢出,自定义机器人会在大约一分钟内停止为该服务器提供服务,并向移除 Noxyr 的人(如果机器人所有者是其他人,也会通知所有者)私信一个邀请链接。
- 使用私信中的链接,或从 Noxyr 首页重新邀请 Noxyr。
- Noxyr 重新回到服务器后,自定义机器人会自动恢复运行;无需改动令牌或 intent。
因为这一特定原因而停止运行期间,投票有效期会暂停消耗,而不是继续计时,因此及时重新邀请 Noxyr 不会让你白白损失时间。
如果以上方法都无法解决
首先请查看自定义机器人页面上的状态消息;Noxyr 的节点会写入一段通俗易懂的原因说明(令牌错误、intent 错误、已暂停,或其他情况下的通用重试提示),而不只是一个裸露的错误代码。如果状态消息与以上任何情况都不相符,或者在按照应有效的方法修复后机器人仍然离线,支持中心是让人快速查看该具体服务器的最快途径。完整的设置和故障排查步骤也都在自定义机器人文档中。
常见问题
为什么我什么都没做,机器人就离线了?“什么都没做”通常意味着有其他拥有门户或服务器访问权限的人改动了某些内容,例如重置了令牌、切换了 intent,或踢出了某人。请先查看自定义机器人页面的状态消息,它会说明原因。
机器人离线后,我的数据会丢失吗?不会。无论机器人因何停止,令牌、设置、工单、商品、发票和聊天记录都会被保留。修复原因之后,一切都会完全恢复到原来的状态。
我能完全避免与投票相关的离线情况吗?大约每三天半投票一次(要在 12 小时的有效期加上 74 小时的宽限期用完之前),机器人就不会因此而下线。
每次重启机器人时,都需要重新开启 intent 吗?不需要。Intent 是 Discord 应用程序本身的设置,不会自行重置。一旦两者都已开启并保存,就会一直保持开启,直到有人将其关闭。
想让机器人重新上线?请先修复上面提到的原因,然后从自定义机器人页面启动机器人;如果你是第一次设置,请先免费添加 Noxyr。