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

Discord.js 14嵌入页脚添加message.author.tag报错:message未定义

Discord.js嵌入消息页脚添加用户标签时出现"message is not defined"错误解决方法

错误原因

你当前的代码里,EmbedBuilder是在模块全局作用域创建的,但message变量只有在execute函数内部才存在——模块加载时全局代码先执行,此时根本拿不到message参数,所以会抛出ReferenceError: message is not defined。

另外注意:Discord.js v14版本中,setFooter方法不再直接接收字符串,需要传入包含text属性的对象,这也是你后续可能遇到的坑。

修正后的代码

把Embed的创建逻辑移到execute函数内部,这样就能直接访问到message参数:

const Discord = require("discord.js");

module.exports = {
    name: 'embed',
    description: 'wysyła embeda',
    usage: '!embed',
    execute: async(message, args) => {
        const embed = new Discord.EmbedBuilder()
            .setTitle('Tytuł embeda')
            .setDescription('Embed is great')
            .addFields(
                {
                    name: 'Person1', 
                    value: 'Said something', 
                    inline: true
                },
                {
                    name: 'Person2', 
                    value: 'Said something', 
                    inline: true
                },
                {
                    name: 'Person3', 
                    value: 'Said something'
                }
            )
            .setTimestamp()
            .setColor("DarkRed")
            .setFooter({ text: message.author.tag });

        message.channel.send({ embeds: [embed] });
    }
}

进阶复用方案

如果需要在多个地方复用这个Embed模板,可以把它封装成函数:

const Discord = require("discord.js");

function createUserEmbed(message) {
    return new Discord.EmbedBuilder()
        .setTitle('Tytuł embeda')
        .setDescription('Embed is great')
        .addFields(
            { name: 'Person1', value: 'Said something', inline: true },
            { name: 'Person2', value: 'Said something', inline: true },
            { name: 'Person3', value: 'Said something' }
        )
        .setTimestamp()
        .setColor("DarkRed")
        .setFooter({ text: message.author.tag });
}

module.exports = {
    name: 'embed',
    description: 'wysyła embeda',
    usage: '!embed',
    execute: async(message, args) => {
        const embed = createUserEmbed(message);
        message.channel.send({ embeds: [embed] });
    }
}

内容的提问来源于stackstack exchange,提问作者hanori

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:20:28