“LoginFailure: Improper token has been passed” / TOKEN_INVALID
含义: 库拒绝了你用于登录的令牌(discord.js 抛出LoginFailure/“An invalid token was provided”;其他技术栈会返回 401 TOKEN_INVALID)。
发生原因:
- 令牌在 Discord 开发者门户中被重新生成或撤销。生成新令牌会立即使旧令牌在所有使用它的地方失效。
- 令牌字符串中不小心复制进了多余的空格或引号。
- 代码读取了错误的环境变量。
- 前往开发者门户 → 你的应用 → Bot → Reset Token。
- 在 Square Cloud 控制面板中,更新该应用的环境变量里的令牌。切勿将令牌提交到会被上传到
.zip中的文件里。 - 仔细检查该值周围是否有多余的空格或引号。
- 更新库版本(
discord.js@latest或pip install -U discord.py)。 - 重启应用。
“Used disallowed intents” / Message Content Intent
含义: 机器人登录成功并显示在线,但会忽略所有消息,或者网关以 “used disallowed intents” 拒绝连接。 发生原因: 自 2022 年起,Message Content 成为特权 intent。如果没有在两处都明确启用它,消息内容将为空(或者如果你的代码声明了一个该应用未启用的 intent,网关连接会被拒绝)。 如何在两处都修复:- Discord 开发者门户 → 你的应用 → Bot → Privileged Gateway Intents → 启用 Message Content Intent。
- 同时在代码中声明它:
- 重启应用。
一旦机器人加入的服务器超过 100 个,特权 intents(包括 Message Content)还需要在同一个开发者门户页面申请 Discord 的审批。
Lavalink connection closed with code 1006
含义: 机器人的 Lavalink 客户端异常关闭了 WebSocket 连接,代码为 1006,通常之前还会出现 “Unexpected server response: 400”。 发生原因: 这是版本不匹配导致的。Lavalink v4 基于 REST,与为 v3 构建的客户端封装库不兼容,因此握手失败,连接以 1006 关闭。 如何修复:- 使机器人的 Lavalink 客户端封装库版本与 Lavalink 服务器的主版本保持一致(v3 客户端配 v3 服务器,v4 客户端配 v4 服务器)。
- 在 Square Cloud 上,Lavalink 服务器本身绑定端口
80,但你的机器人必须通过边缘节点的端口443并设置secure: true来连接它。 - 修复版本不匹配问题后,重启 Lavalink 应用和机器人应用两者。
机器人在本地正常运行,但部署后离线
含义: 机器人在你本机运行时登录正常,但部署后离线(或反复重启)。 最常见的发生原因:- 网关层的连接不稳定,且没有重连处理。
- 你本地测试的依赖版本与依赖文件中的版本冲突或不兼容。
- 由于过于频繁地触及速率限制,触发了 Discord API 滥用检测(此时账户会收到通知邮件)。
- 首先查看控制面板中的应用日志,它们会显示实际的崩溃原因。
- 添加错误处理程序,避免瞬时错误使进程崩溃:discord.js 中的
process.on("unhandledRejection", ...)和client.on("error", ...),discord.py 中的等效处理方式。 - 当上一次运行时长超过 60 秒、退出状态为 1,且过去 60 分钟内尚未自动重启过时,Square Cloud 会自动重启崩溃的应用(清单中的
AUTORESTART)。这能让机器人在瞬时错误中保持存活,但永远无法修复底层的代码错误、语法错误或缺失的依赖,这些仍需要在代码中修复。 - 留意 Discord API 速率限制(429):全局限制约为每个机器人令牌每秒 50 个请求,各路由还有更严格的限制(例如频道创建/编辑大约每个频道每 10 分钟允许 2 次更改)。请积极使用缓存,使用能遵循
X-RateLimit-Remaining/X-RateLimit-Reset-After响应头的异步队列,并对批量发送使用 webhook。

