Discord.js开发遇DiscordAPIError[50035]及401未授权问题求助
针对你遇到的DiscordAPIError[50035]伴随{"message": "401: Unauthorized", "code": 0}错误,结合你推测的方向,给出以下具体排查和解决步骤:
1. 检查机器人权限范围(Scopes)
- 登录Discord开发者门户,进入你的机器人应用页面,切换到OAuth2 > URL Generator
- 确认已勾选必要的Scopes:如果使用了Slash命令,必须勾选
bot和applications.commands;仅基础机器人功能至少勾选bot - 重新生成授权链接,重新邀请机器人到目标服务器,确保授权时勾选了机器人所需的具体权限(比如发送消息、语音连接等)
2. 验证授权凭证有效性
- 检查配置文件(如
.env)中的机器人Token是否正确:Token需从Bot页面复制,而非OAuth2的客户端密钥,确保无拼写错误、多余空格 - 若Token已过期或被重置,前往开发者门户Bot页面重新生成新Token,替换到配置中
- 确认机器人在目标服务器未被封禁,可临时赋予管理员权限测试是否是权限不足导致
3. 修复@discordjs/rest模块问题
- 先卸载并重装模块,执行命令:
npm uninstall @discordjs/rest npm install @discordjs/rest - 检查代码中模块的初始化逻辑,确保传入了有效Token和正确的API版本,示例:
const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v10'); // 对应Discord.js v14版本 const rest = new REST({ version: '10' }).setToken(process.env.DISCORD_BOT_TOKEN); - 确认依赖版本兼容:Discord.js v14需要搭配@discordjs/rest v2.x及以上版本,查看
package.json中的版本号,必要时升级到匹配版本:npm install discord.js@latest @discordjs/rest@latest
额外排查点
如果错误栈指向@discordjs/rest的请求逻辑,检查你调用REST模块的代码(比如注册命令、API请求),确保路由参数正确(如使用Routes.applicationGuildCommands(CLIENT_ID, GUILD_ID)而非全局命令路由进行测试)
内容的提问来源于stack exchange,提问作者Jommy Test
相关产品推荐
相关产品推荐

