DiscordAPIError: Cannot send an empty message (discord.js v13)

DiscordAPIError: Cannot send an empty message (discord.js v13)

我正在用下面的命令编写一个机器人,它抛出了一个错误,但我不知道错误在哪里 我尽力了

const Discord = require("discord.js");
const client = new Discord.Client({
  allowedMentions: {
      parse: ["roles", "users", "everyone"],
  },
  intents: [
    Discord.Intents.FLAGS.GUILDS,
    Discord.Intents.FLAGS.GUILD_MESSAGES,
    Discord.Intents.FLAGS.DIRECT_MESSAGES
  ]
});
const config = require("../config.json");

module.exports = {
    name: "quar",
    run: async (client, message, args) => {
      if (!message.member.permissions.has("ADMINISTRATOR")) return;
      let role = message.guild.roles.cache.find(role => role.name === "Quarantined" || role.name === "Quarantine")
      let member = message.mentions.members.first() || message.guild.members.cache.get(args[0])
      let reason = message.content.split(" ").slice(2).join(" ")
      if(!reason) reason = "No reason given."
      if(!role) return message.channel.send("❌ This server doesn't have a quarantine role!")
      if(!member) return message.channel.send("❌ You didn't mention a member!")
      if(member.roles.cache.has(role.id)) return message.channel.send(`❌ That user already quarantined!`)
      member.roles.add(role)
      .then (() => {
        const embed = new Discord.MessageEmbed()
          .setTitle(`✅ ${member.user.tag} was quarantined!`)
          .setColor("RANDOM")
          .setTimestamp()
          embed.setFooter(`Requested by ${message.author.username}`)
        message.channel.send(embed)

        member.send(`You were quarantined in \`${message.guild.name}\`. Reason: ${reason} `).catch(error => {
          message.channel.send(`❌ Can't send DM to ${member.user.tag}!`);
     });
      })
    }
}

如果我做错了,请帮助我 抱歉我英语不好

试试下面的代码,我在解释的过程中做了笔记,并改进了一小部分代码。我假设这是 2 个独立文件的集合,这就是它们被分开的原因。如果它们不是 2 个单独的文件,则不需要顶部,只需要底部。

const {
    Client,
    Intents,
    MessageEmbed
} = require("discord.js");
const client = new Client({
    allowedMentions: {
        parse: ["roles", "users", "everyone"],
    },
    intents: [
        Intents.FLAGS.GUILDS,
        Intents.FLAGS.GUILD_MESSAGES,
        Intents.FLAGS.DIRECT_MESSAGES
    ]
});
const config = require("../config.json");
const {
    MessageEmbed,
    Permissions
} = require("discord.js");

module.exports = {
    name: "quar",
    run: async (client, message, args) => {
        if (!message.member.permissions.has(Permissions.FLAGS.ADMINISTRATOR)) return;
        let role = message.guild.roles.cache.find(role => role.name === "Quarantined" || role.name === "Quarantine")
        let member = message.mentions.members.first() || message.guild.members.cache.get(args[0])
        let reason = message.content.split(" ").slice(2).join(" ")
        if (!reason) reason = "No reason given."
        if (!role) return message.channel.send("❌ This server doesn't have a quarantine role!")
        if (!member) return message.channel.send("❌ You didn't mention a member!")
        if (member.roles.cache.has(role.id)) return message.channel.send(`❌ That user already quarantined!`)
        member.roles.add(role)
            .then(() => {
                const embed = new MessageEmbed()
                    .setTitle(`✅ ${member.user.tag} was quarantined!`)
                    .setColor("RANDOM")
                    .setTimestamp()
                    .setFooter({
                        text: `Requested by ${message.author.username}`
                    })

                // author and footer are now structured like this
                // .setAuthor({
                //     name: 'Some name',
                //     icon_url: 'https://i.imgur.com/AfFp7pu.png',
                //     url: 'https://discord.js.org',
                // })
                // .setFooter({
                //     text: 'Some footer text here',
                //     icon_url: 'https://i.imgur.com/AfFp7pu.png',
                // })

                message.channel.send({
                    embeds: [embed]
                }) //embeds must be sent as an object and this was the actual line that was causing the error.

                member.send(`You were quarantined in \`${message.guild.name}\`. Reason: ${reason} `).catch(() => { // if error is not used, it is not required to be stated
                    message.channel.send(`❌ Can't send DM to ${member.user.tag}!`);
                });
            })
    }
}