Как решить проблему с созданием встраиваемого объекта в команде Discord.js v14?

Как создать embed в команде Discord с использованием discord.js? В моем коде возникает ошибка "TypeError: EmbedBuilder is not a constructor". Вот пример кода:

```javascript
const { SlashCommandBuilder } = require('discord.js');
const { MessageEmbed } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('help')
        .setDescription('Получи помощь'),
    async execute(interaction) {
        const helpEmbed = new MessageEmbed()
            .setColor(0xff8c40)
            .setTitle('титл мастир')
            .setDescription('дескриптиан');

        await interaction.reply({ embeds: [helpEmbed] });
    }
}
```

Как можно исправить данную ошибку?
  • 7 апреля 2024 г. 9:19
Ответы на вопрос 2
В Discord.js v13 и выше, `EmbedBuilder` был заменен на `MessageEmbed`. В вашем коде вы уже правильно импортировали `MessageEmbed` из `discord.js`, однако ошибка может возникать из-за неправильного использования. 

В вашем коде вы пытаетесь создать `new MessageEmbed()`, что должно работать правильно. Попробуйте установить Discord.js напрямую из npm и перезапустить ваш проект:

```bash
npm install discord.js
```

Если проблема не устранится, попробуйте обновить Node.js до последней версии и проверьте, что все зависимости установлены правильно.

Если проблема все еще остается, возможно есть другая причина ошибки. Проверьте весь ваш код, чтобы исключить другие возможные проблемы.
<pre><code class="javascript">const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('help')
        .setDescription('Получи помощь'),
    async execute(interaction) { // &lt;== (•)
        const helpEmb = new EmbedBuilder()
            .setColor(0xff8c40)
            .setTitle('титл мастир')
            .setDescription('дескриптиан');

        await interaction.reply({ embeds: [helpEmb] });
    }
}</code></pre> <br/> <br/> вы в качестве параметра функции <code class="javascript">execute</code> (•) указываете переменную с названием, аналогичным названию переменной сверху в <pre><code class="javascript">const { SlashCommandBuilder, /* этой ==&gt; */ EmbedBuilder /* &lt;== этой */ } = require("discord.js");</code></pre> <br/> ...и в функции, соответственно, используется локальная переменная <code>EmbedBuilder</code> ( <a href="https://learn.javascript.ru/function-basics#vneshnie-peremennye" rel="nofollow">почему?</a> ), когда должна использоваться внешняя, для корректной работы кода. <br/> <br/> достаточно будет заменить название <code>EmbedBuilder</code> на любое другое: я заменил выше на <code>interaction</code> , т.к если у вас правильно настроена обработка команд в основном файле, аргументом этой функции будет <a href="https://discord.js.org/#/docs/discord.js/main/class/CommandInteraction" rel="nofollow">CommandInteraction</a> . <br/> <br/> кроме того, когда выполнение кода дойдёт до <code class="javascript">channel.send(...)</code> , вылетит ошибка, поскольку <code>channel</code> не было нигде определено до этого — заменил на <code>interaction.reply(...)</code>
Похожие вопросы