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
相关产品推荐
相关产品推荐

