Discord.js v13.6添加表情时审核日志不显示原因的问题求助
解决Discord.js添加表情时审核日志不显示原因及v14创建失败问题
Discord.js v13.6 版本修复
你当前v13代码的问题在于emojis.create的第三个参数传参错误。v13中该方法的第三个参数是配置选项对象,而非直接传入reason字符串。正确写法需要把reason放在对象里:
// 替换原有的create调用 await message.guild.emojis.create(emojiLink, emojiName, { reason: Reason }).then(async emoji => { // 后续embed代码不变 let embed = new Discord.MessageEmbed() .setColor("RANDOM") .setTitle("New emoji added!") .setDescription(`EmojiName: ${emoji.name} \nEmoji: ${emoji} \nEmoji Id: ${emoji.id} \nAdded by ${message.author.tag}`) message.channel.send({ embeds: [embed] }); });
这样修改后,reason就会正确显示在服务器的审核日志中。
Discord.js v14 版本修复
你尝试的v14写法创建失败,主要有两个原因:
- Node.js版本不兼容:Discord.js v14要求Node.js版本至少为v16.11.0,你的v16.10.0不满足要求,需要升级Node.js。
- 参数与API结构变化:v14中
emojis.create的参数结构更严格,同时MessageEmbed被替换为EmbedBuilder,导入方式也需要调整。
修正后的v14代码示例:
// 注意v14需要导入EmbedBuilder const { EmbedBuilder } = require('discord.js'); // 替换create调用 await message.guild.emojis.create({ attachment: emojiLink, name: emojiName, reason: Reason }).then(async emoji => { let embed = new EmbedBuilder() .setColor("Random") .setTitle("New emoji added!") .setDescription(`EmojiName: ${emoji.name} \nEmoji: ${emoji} \nEmoji Id: ${emoji.id} \nAdded by ${message.author.tag}`) message.channel.send({ embeds: [embed] }); });
另外,v14中所有的构建器类(如EmbedBuilder)都需要从discord.js单独导入,不能再用Discord.MessageEmbed这种写法。
内容的提问来源于stack exchange,提问作者noob12197
相关产品推荐
相关产品推荐

