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

时间:2020-05-07 01:54:10

标签: javascript node.js discord discord.js

我正在尝试执行神奇宝贝命令,但是由于某种原因,它返回的是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}\`.**`);

return message.channel.send(embed);

1 个答案:

答案 0 :(得分:1)

您正在使用{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});