You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js开发Slash Command返回Embed触发Unknown Webhook错误如何解决

问题原因

  • Discord斜杠命令的交互token默认有效期仅为3秒,你在代码中发起了对谷歌的网络请求,使用回调式写法,只要请求耗时超过3秒,交互对应的临时webhook就会被Discord回收,此时调用interaction.reply就会抛出Unknown Webhook错误,你拿到的错误码10015就是该问题的官方标识。
  • 你使用的superagent回调写法不符合当前异步逻辑管控要求,async execute函数没有等待请求完成就直接结束,discord.js会判定该交互未被处理,也会提前释放交互资源。
  • 额外注意:如果你的机器人部署在中国大陆地区,访问谷歌本身就会超时,必然会触发该错误。

修复方案

  1. 在发起网络请求前调用interaction.deferReply(),提前告知Discord你需要延迟回复,将交互有效期延长到15分钟
  2. 将superagent的回调写法改成async/await的Promise调用方式,统一管控异步流程
  3. 网络请求完成后用interaction.editReply()替换原有的interaction.reply(),更新之前的延迟回复内容

修复后完整代码:

const { SlashCommandBuilder } = require(`@discordjs/builders`);
const { MessageEmbed, CommandInteraction } = require(`discord.js`);

const moment = require("moment");
const request = require("superagent");

module.exports = {
    data: new SlashCommandBuilder()
        .setName(`ping`)
        .setDescription(`Calcul du temps d'envoit d'un message.`),
    /**
     * 
     * @param {CommandInteraction} interaction 
     */
    async execute(interaction) {
        // 触发延迟回复,延长交互有效期
        await interaction.deferReply();
        const FirstQuery = new Date();
        try {
            // 改用await方式发起请求,统一异步流程
            await request.get(`http://www.google.com`);
            const LastQuery = new Date();
            const Time = LastQuery.getTime() - FirstQuery.getTime();
            const Response = Time/(5*2);

            const embed = new MessageEmbed()
                .setColor(0x234259)
                .setDescription(`🏓 **Le temps de réponse est de ${Response}ms.**`)
            // 编辑延迟回复的内容
            await interaction.editReply({ embeds: [embed] });
        } catch (err) {
            // 捕获请求异常,给出友好提示
            await interaction.editReply(`网络请求失败,请稍后重试`);
        }
    }
}

内容的提问来源于stack exchange,提问作者Itoshuga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:54:08