Discord机器人Slash命令报错40060:交互已被确认问题求助
解决Discord机器人DiscordAPIError[40060]错误
错误原因
报错Interaction has already been acknowledged表示同一个交互请求被多次确认/回复。Discord要求每个Slash命令交互只能被处理一次:要么用interaction.reply()直接回复,要么用interaction.deferReply()延迟回复后再用interaction.editReply()更新内容,重复调用回复方法就会触发这个错误,进而导致机器人崩溃。
定位问题
你的报错指向planning.js:56,说明问题出在/planning命令的代码里,而非你贴出的videoskip命令(该命令的if/else分支各调用一次reply,逻辑正常)。
修复步骤
检查planning.js第56行及附近代码:
- 确认是否存在多次调用
interaction.reply()的情况,比如条件分支重复回复、循环里触发回复 - 检查是否在调用
deferReply()之后,又误用reply()而非editReply()来更新消息 - 确保所有异步操作都用
await处理,避免代码未等回复完成就执行后续逻辑导致重复回复
- 确认是否存在多次调用
添加重复回复防护:
在执行回复前,先判断交互是否已被确认,避免重复操作,示例代码:if (!interaction.replied && !interaction.deferred) { await interaction.reply({ embeds: [yourEmbed] }); } else if (interaction.deferred) { await interaction.editReply({ embeds: [yourEmbed] }); }全局错误捕获(防止机器人崩溃):
在你的机器人入口文件(比如index.js)添加全局异常捕获,避免单个命令的错误导致整个机器人进程退出:process.on('unhandledRejection', (err) => { console.error('未处理的Promise拒绝:', err); }); process.on('uncaughtException', (err) => { console.error('未捕获的异常:', err); });
额外注意
即使你没修改代码,也可能因为Discord API更新、依赖包版本变化(比如discord.js自动更新)或者异步逻辑的偶发触发导致这个问题,重点排查planning命令的回复逻辑即可。
内容的提问来源于stack exchange,提问作者Twizzyx
相关产品推荐
相关产品推荐

