Discord API报错Unknown interaction:/ping命令无法正常响应
问题解决:Discord机器人
/ping命令显示“正在思考…”无响应,报Unknown interaction错误 问题现象
运行Discord机器人的/ping命令时,命令一直卡在“正在思考…”状态无响应,捕获到未处理错误:
Nov 8 06:22:06 PM [🚨Anti-Crash] :: Unhandled Rejection/Catch Nov 8 06:22:06 PM DiscordAPIError: Unknown interaction Nov 8 06:22:06 PM at RequestHandler.execute (/opt/render/project/src/node_modules/discord.js/src/rest/RequestHandler.js:350:13) Nov 8 06:22:06 PM at processTicksAndRejections (node:internal/process/task_queues:96:5) Nov 8 06:22:06 PM at async RequestHandler.push (/opt/render/project/src/node_modules/discord.js/src/rest/RequestHandler.js:51:14) Nov 8 06:22:06 PM at async CommandInteraction.deferReply (/opt/render/project/src/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:61:5) Nov 8 06:22:06 PM at async Object.execute (/opt/render/project/src/Commands/ping.js:11:5) { Nov 8 06:22:06 PM method: 'post', Nov 8 06:22:06 PM path: '/interactions/1171862223220654120/aW50ZXJhY3Rpb246MTE3MTg2MjIyMzIyMDY1NDEyMDp0U1g1c0UwcWo4ZUhndVdoUTlXRlYzTmp2UjBtRjRFOFZtOUFwNndaRHlEWTBXNjJYQ1RvUWlJdjVpRkp3TDA1NmJtcVRHeVNZZ2s3UVoxMWF0ZWU1cVk2Rkk4a3BKY0E0VWtWd21uREMxQkJwOTdLeWRtZlhoNzlXakRyMDk0Yg/callback', Nov 8 06:22:06 PM code: 10062, Nov 8 06:22:06 PM httpStatus: 404, Nov 8 06:22:06 PM requestData: { json: { type: 5, data: [Object] }, files: [] } Nov 8 06:22:06 PM }
对应的/ping命令代码:
const { SlashCommandBuilder } = require('@discordjs/builders'); module.exports = { data: new SlashCommandBuilder() .setName('ping') .setDescription('Replies with pong!'), async execute(interaction) { await interaction.deferReply({ephemeral: true}); await interaction.editReply({ content: `🏓Pong! ${interaction.client.ws.ping} ms`, ephemeral: true ,}); }, };
错误原因
Unknown interaction(错误码10062)的核心是Discord服务器无法识别你的交互请求,常见触发场景:
- 响应超时:Discord要求用户触发命令后,必须在3秒内发起首次响应(包括
deferReply),超时后Discord会丢弃该交互会话,后续请求直接返回404 - 重复响应:同一交互被多次调用回复/延迟回复接口
- 机器人与Discord网关的连接异常,导致交互令牌失效
解决方案
1. 简化响应逻辑(最直接解决当前问题)
你的ping命令逻辑简单,不需要延迟回复,直接用reply替代deferReply + editReply,避免不必要的异步等待:
const { SlashCommandBuilder } = require('@discordjs/builders'); module.exports = { data: new SlashCommandBuilder() .setName('ping') .setDescription('Replies with pong!'), async execute(interaction) { await interaction.reply({ content: `🏓Pong! ${interaction.client.ws.ping} ms`, ephemeral: true }); }, };
2. 确保首次响应不超时
如果后续有耗时操作必须用延迟回复,要保证deferReply在3秒内执行:
- 检查机器人所在服务器的网络延迟,避免网络卡顿拖慢请求
- 排查命令执行前是否有阻塞性代码占用线程,导致
deferReply被延迟调用
3. 增加错误捕获
在代码中添加错误处理,避免未处理的Promise rejection:
async execute(interaction) { try { await interaction.deferReply({ephemeral: true}); await interaction.editReply({ content: `🏓Pong! ${interaction.client.ws.ping} ms`, ephemeral: true }); } catch (error) { if (error.code === 10062) { console.log(`交互超时:${interaction.id}`); } else { console.error('命令执行出错:', error); } } }
4. 检查机器人连接状态
重启机器人,确保其与Discord网关的连接正常。如果部署在第三方平台(如你这里的Render),检查平台是否有网络限制或进程休眠机制导致连接中断。
内容的提问来源于stack exchange,提问作者MrBossy
相关产品推荐
相关产品推荐

