【问题标题】:Unable to send Embed in Discord.js master branch (v13)无法在 Discord.js 主分支中发送嵌入 (v13)
【发布时间】:2021-07-15 19:46:29
【问题描述】:

目前只是在 discord.js 的 master 分支中使用按钮,但我似乎遇到了问题。我不能再像以前那样使用message.channel.send 发送嵌入,而且我总是收到此错误:

      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Cannot send an empty message
    at RequestHandler.execute (C:\Users\%USERNAME%\Desktop\Arduino Projects\Discord Turret\node_modules\discord.js\src\rest\RequestHandler.js:298:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\%USERNAME%\Desktop\Arduino Projects\Discord Turret\node_modules\discord.js\src\rest\RequestHandler.js:50:14) {
  method: 'post',
  path: '/channels/750542030836334692/messages',
  code: 50006,
  httpStatus: 400,
  requestData: {
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      embeds: undefined,
      components: undefined,
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: undefined,
      message_reference: undefined,
      attachments: undefined
    },
    files: []
  }
}

其余代码运行良好,发送常规字符串也可以,但我无法发送嵌入。如果有人对此有任何建议,请告诉我。谢谢!

require('dotenv').config();

const config = require('../config.json');
const { Client, MessageButton, Intents, MessageEmbed } = require('discord.js');

// Create new Client
const client = new Client({
    intents: [
        Intents.FLAGS.GUILDS,
        Intents.FLAGS.GUILD_MESSAGES,
        Intents.FLAGS.GUILD_INTEGRATIONS,
    ],
});

// Set Status
client.once('ready', () => {
    console.log('Discord Ready');
    client.user.setActivity('Arduino Uno', { type: 'LISTENING' });
});

// Create Buttons
const buttons = {
    up: new MessageButton()
        .setCustomId('up')
        .setLabel('⏫')
        .setStyle('PRIMARY'),
    down: new MessageButton()
        .setCustomId('down')
        .setLabel('⏬')
        .setStyle('PRIMARY'),
    left: new MessageButton()
        .setCustomId('left')
        .setLabel('⏪')
        .setStyle('PRIMARY'),
    right: new MessageButton()
        .setCustomId('right')
        .setLabel('⏩')
        .setStyle('PRIMARY'),
};

// Check Message Content
client.on('messageCreate', (message) => {
    if (!message.content.startsWith(process.env.PREFIX) || message.author.bot) return;

    const args = message.content.slice(process.env.PREFIX.length).trim().split(/ +/);
    const command = args.shift().toLowerCase();

    switch (command) {
        case 'up':
            const upEmbed = new MessageEmbed().setDescription('This is the up button');
            message.channel.send(controllerEmbed, buttons.up);
            break;
    }
});

// Login to Bot
client.login(process.env.TOKEN);

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    想通了。嵌入必须在数组中指定。对于任何想知道的人,这就是嵌入现在发送的方式:

    const upEmbed = new MessageEmbed().setDescription('This is the up button');
    message.channel.send({ embeds: [upEmbed] }, buttons.up);
    break;
    

    【讨论】:

    • 事实上,Discord API 似乎已经弃用了以前的 embed 属性,转而支持 embeds 属性,并且 discord.js v13 必须更新 message.channel.send() 以反映这一变化。跨度>
    猜你喜欢
    • 2021-12-12
    • 2022-01-20
    • 2022-01-16
    • 2021-12-25
    • 2021-11-14
    • 2021-02-20
    • 1970-01-01
    • 2021-10-17
    • 2023-03-12
    相关资源
    最近更新 更多