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

discord.js v13斜杠命令中Embed嵌入功能无法正常工作

Discord.js v13斜杠命令发送Embed报错修复

你的代码里有两个核心问题,导致Embed发送失败:

  1. 错误使用未定义的message对象:斜杠命令的上下文是interaction对象,而非传统消息事件里的message,代码里的message.author、message.guild都未定义,这就是报错根源。
  2. 斜杠命令回复方式不规范:Discord要求斜杠命令必须在3秒内完成回复,使用interaction.reply()才是符合规范的回复方式,而非直接调用channel.send()。

修正后的完整代码如下:

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

module.exports = {
    data: new SlashCommandBuilder().setName("ahelp").setDescription("获取提问命令的使用说明"),
    run: async (client, interaction) => {
        const embed = new MessageEmbed()
            .setTitle(`如何让BrainCord <:logo:1079747150113681458> 理解你的需求!`)
            .setTimestamp()
            .setAuthor(interaction.user.tag, interaction.user.avatarURL({ dynamic: true }))
            .setDescription(
                `> **第一:你的提示语要__清晰易懂且稍长__,这样机器人才能准确理解你的需求。**

> **第二:不要像这样写命令:B! <prompt>,机器人会把空格当成需要处理的内容,正确写法是B!<prompt>。**

> **第三:注意提示语里的__标点符号__,让机器人知道这是问题还是其他类型的请求。**

> **第四:最终的提问命令格式是__B!<prompt>__,不要用其他格式。**

> __**重要提示**__
> 1 : **会自动拒绝不当请求**
> 2 : **偶尔可能生成错误信息**
> 3 : **对2021年之后的世界事件了解有限**
`
            )
            .setColor("#2F3136")
            .setFooter(interaction.guild.name, interaction.guild.iconURL({ dynamic: true }));

        await interaction.reply({ embeds: [embed] });
    },
};

修改细节说明

  • 把所有message.author替换为interaction.user:斜杠命令中,发起命令的用户信息存于interaction.user对象
  • 把所有message.guild替换为interaction.guild:服务器信息同样从interaction对象获取
  • 将interaction.channel.send()改为interaction.reply():遵循Discord斜杠命令的标准回复逻辑,避免超时或合规问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:52:45