JavaScript编写Discord机器人的coinflip抛硬币命令运行报错如何修复?
需修正的代码问题
doRandHT函数内定义了rand结果数组但未调用,当前返回的小写字符串和你定义的大写格式不匹配,可直接通过随机数下标取数组内容返回。- 错误的
execute调用语法:execute(message, args, Discord); { ... }中的分号会直接终止execute调用,后半部分花括号会被识别为无意义的独立代码块,如果你不需要额外封装execute逻辑,直接删除这行即可。 - MessageEmbed实例构造语法错误:不能直接用
"title"; 值的写法赋值属性,需要调用Embed实例对应的setXXX方法,或者传入符合格式的配置对象。 - 变量名不匹配:你声明的Embed实例变量叫
newEmbed,发送时调用的embed变量未定义,会触发变量未定义报错。 - 发送Embed的参数格式错误:如果使用discord.js v13及以上版本,旧版
{ embed: 实例 }的传参方式已经废弃,需改为{ embeds: [实例] }的数组格式。
修正后可运行的代码
if (command === 'ht'){ // 抛硬币随机函数 function doRandHT() { const rand = ['HEADS!','TAILS!']; return rand[Math.floor(Math.random() * 2)]; } // 构造Embed消息 const newEmbed = new Discord.MessageEmbed() .setTitle('Here is the winner!') .setDescription(doRandHT()) .setColor(7584788); // 发送消息 message.channel.send({ embeds: [newEmbed] }); }
内容的提问来源于stack exchange,提问作者redsherlock
相关产品推荐
相关产品推荐

