为什么终端在运行命令时返回“无法发送空消息?”

问题描述 投票:0回答:1

我正在尝试执行神奇宝贝命令,但由于某些原因,它返回为UnhandledPromiseRejectionWarning: DiscordAPIError: Cannot send an empty message。这是代码,我希望这个平台可以帮助我解决问题。

const rand = Math.floor(Math.random() * 802);
const poke = rand > 0 ? rand : Math.floor(Math.random() * 802);
const pokem = pokemon[poke];

const embed = new Discord.MessageEmbed()
     .setTitle("🕰️ Time is ticking! You have 15 seconds to answer | WHO'S THAT POKEMON?!")
     .setColor(colored[~~(Math.random() * colored.length)])
     .setAuthor(message.member.displayName, message.author.displayAvatarURL())
     .setImage(pokem.imageURL);

const msg = await message.channel.send(embed);
const filter = m => m.author.id === message.author.id;
const attempts = await msg.channel.awaitMessages(filter, { time: 15000, max: 1 });

if (!attempts || !attempts.size) {
msg.delete();
const embed = new Discord.MessageEmbed()
     .setTitle("🕰️ Time is up!")
     .setColor(colored[~~(Math.random() * colored.length)])
     .setDescription(`Ba-Baka! Your 15 seconds is over. It was \`${pokem.name}\`.`);

 return message.channel.send(embed);
} 

const answer = attempts.first().content.toLowerCase();  

if (answer === pokem.name.toLowerCase()) {
await msg.edit({embed: null});
let embed = new Discord.MessageEmbed()
    .setTitle("<a:done:707045670661652481> Correct")
    .setColor(colored[~~(Math.random() * colored.length)])
    .setDescription(`Yatta! Well done, \`${pokem.name}\` was correct.`);

return message.channel.send(embed);
}
await msg.edit({embed: null});
embed = new Discord.MessageEmbed()
    .setTitle("<a:error:707045703003668521> Incorrect")
    .setColor(colored[~~(Math.random() * colored.length)])
    .setDescription(`Ba-Baka! You answered incorrectly, It was \`${pokem.name}\`.**`);

返回message.channel.send(嵌入);

javascript node.js discord discord.js
1个回答
0
投票

您正在用{embed: null}编辑消息。由于邮件只有一个嵌入,因此将删除该嵌入,因此没有要发送的内容。

如果我正确解释了代码,则要更新嵌入,请使用此:

// Using let here so that embed can be reassigned later
let embed = new Discord.MessageEmbed()
     .setTitle("🕰️ Time is ticking! You have 15 seconds to answer | WHO'S THAT POKEMON?!")
     .setColor(colored[~~(Math.random() * colored.length)])
     .setAuthor(message.member.displayName, message.author.displayAvatarURL())
     .setImage(pokem.imageURL)

// rest of code...

if (answer === pokem.name.toLowerCase()) {
 let embed = new Discord.MessageEmbed()
    .setTitle("<a:done:707045670661652481> Correct")
    .setColor(colored[~~(Math.random() * colored.length)])
    .setDescription(`Yatta! Well done, \`${pokem.name}\` was correct.`);
  // {embed} is shorthand for {embed: embed}
  await msg.edit({embed});
  return message.channel.send(embed);
}
// Instead of reassigning to embed, you could also create a new variable
embed = new Discord.MessageEmbed()
    .setTitle("<a:error:707045703003668521> Incorrect")
    .setColor(colored[~~(Math.random() * colored.length)])
    .setDescription(`Ba-Baka! You answered incorrectly, It was \`${pokem.name}\`.**`);
await msg.edit({embed});
© www.soinside.com 2019 - 2024. All rights reserved.