discord.js v11实现*Staff指令时MessageEmbed调用报错无法修复求助
问题原因
- 你安装的discord.js为v11.3.2版本,该版本的嵌入消息构造器为
RichEmbed,MessageEmbed是v12及以上版本才支持的API *staff命令中直接使用new MessageEmbed(),未添加Discord模块前缀,也没有单独导入该类,触发未定义报错- v11版本的
RichEmbed不支持addFields批量添加字段方法,仅支持addField单字段添加
修复方案
方案1:保留v11版本,适配现有语法
直接替换*staff命令代码为以下内容即可:
client.on("message", message => { if (message.content.startsWith(prefix + "staff")) { const devs = new Discord.RichEmbed() .setColor('#0099ff') .setTitle('Staff') .setURL('https://dwacraft.tebex.io') .setAuthor('DwaCraft', 'https://imgur.com/a/nbIWI5n', 'https://dwacraft.tebex.io') .setDescription("\u200B") .setThumbnail('https://imgur.com/a/nbIWI5n') .addField('\u200B', '\u200B', true) .addField('\u200B', '*STAFF*', true) .addField('\u200B', '\u200B', true) .addField('\u200B', '\u200B') .addField('Owner', 'SirDevinci', true) .addField('Manager', 'GrowTaz', true) .addField('Developer', 'Hamoodiyt', true) .addField('Developer', 'Enkix', true) .setTimestamp() .setFooter('DwaCraft on top', 'https://imgur.com/a/nbIWI5n'); message.channel.send(devs); } });
方案2:升级到discord.js v12+版本,使用新API
- 执行升级命令:
npm install discord.js@12.5.3 - 替换所有代码中的
Discord.RichEmbed为Discord.MessageEmbed - 替换所有
sendEmbed调用为普通send方法:- 把
message.author.sendEmbed(embed)修改为message.author.send(embed) - 把
message.channel.sendEmbed(say)修改为message.channel.send(say)
- 把
- 原
*staff命令的addFields语法可以保留无需修改
内容的提问来源于stack exchange,提问作者Hamoodi youtube
相关产品推荐
相关产品推荐

