【问题标题】:DiscordAPIError: Cannot send an empty message Discord Js bot V13.3.1 [duplicate]DiscordAPIError:无法发送空消息 Discord Js bot V13.3.1 [重复]
【发布时间】:2022-01-23 01:52:27
【问题描述】:

我正在为学校做一个项目,我刚刚意识到我是在 discord js v12 上构建的,但我需要它在 discord v13 上。我正在尝试解决我的代码中的问题,但在 v13 中似乎发生了很多变化。我面临最多的问题之一是DiscordAPIError: Cannot send an empty message。 v13 中的 messagedescription 发生了什么?我有很多命令要纠正,只是想了解这个问题是什么以及如何在现有代码中修复它。提前非常感谢您!

所以下面的代码是来自发送到特定频道的消息的反应角色。用户可以用表情符号做出反应,这个角色将出现在他们的个人资料中。此代码在 discord js v12 中运行良好..

const { MessageEmbed } = require('discord.js')

module.exports = {
    name: 'role',

    async run (client, message, args) {

        const channelID = '918785339055829012';

        const firstRole = message.guild.roles.cache.find(role => role.name === 'first')
        const secondRole = message.guild.roles.cache.find(role => role.name === 'second')
        const thirdRole = message.guild.roles.cache.find(role => role.name === 'third')
        const forthRole = message.guild.roles.cache.find(role => role.name === 'forth')

        const firstEmoji = '????';
        const secondEmoji = '????';
        const thirdEmoji = '????';
        const forthEmoji = '????';

       let rolesInfo = `
        React to **role** to make it yours:
        ${firstEmoji} - first
        ${secondEmoji} - second
        ${thirdEmoji} - third
        ${forthEmoji} - forth`

        let embed = new MessageEmbed()
        .setColor('RANDOM')
        .setTitle('Reaction roles')
        .setDescription(rolesInfo)

        let msgEmbed = await message.channel.send(embed)
        
        msgEmbed.react(firstEmoji)
        msgEmbed.react(secondEmoji)
        msgEmbed.react(thirdEmoji)
        msgEmbed.react(forthEmoji)

        client.on('messageReactionAdd', async (reaction, user) => {
            if (reaction.message.partial) await reaction.message.fetch();
            if (reaction.partial) await reaction.fetch();
            if (user.client) return;
            if (!reaction.message.guild) return;

            if (reaction.message.channel.id == channelID) {
                if (reaction.emoji.name === firstEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(firstRole)
                }
                if (reaction.emoji.name === secondEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(secondRole)
                }
                if (reaction.emoji.name === thirdEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(thirdRole)
                }
                if (reaction.emoji.name === forthEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(forthRole)
                }
            } else {
                return;
            }
        });

        client.on('messageReactionRemove', async (reaction, user) => {
            if (reaction.message.partial) await reaction.message.fetch();
            if (reaction.partial) await reaction.fetch();
            if (user.client) return;
            if (!reaction.message.guild) return;

            if (reaction.message.channel.id == channelID) {
                if (reaction.emoji.name === firstEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(firstRole)
                }
                if (reaction.emoji.name === secondEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(secondRole)
                }
                if (reaction.emoji.name === thirdEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(thirdRole)
                }
                if (reaction.emoji.name === forthEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(forthRole)
                }
            } else {
                return;
            }
        });
    }
}

【问题讨论】:

    标签: javascript node.js discord discord.js bots


    【解决方案1】:

    如果你想在消息中发送嵌入,你需要在一个数组中将其传递给<MessageOptions> 方法的<MessageOptions> 参数的embeds 属性,如下所示:

    <TextChannel>.send({
        embeds: [<MessageEmbed>],
    });
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2019-08-26
      • 2020-04-07
      • 2021-03-02
      • 2021-09-18
      • 2022-01-01
      • 2021-09-15
      • 2021-11-02
      相关资源
      最近更新 更多