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

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写法创建失败,主要有两个原因:

  1. Node.js版本不兼容:Discord.js v14要求Node.js版本至少为v16.11.0,你的v16.10.0不满足要求,需要升级Node.js。
  2. 参数与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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:33:10