Как создать 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] });
}
}
```
Как можно исправить данную ошибку?
В Discord.js v13 и выше, `EmbedBuilder` был заменен на `MessageEmbed`. В вашем коде вы уже правильно импортировали `MessageEmbed` из `discord.js`, однако ошибка может возникать из-за неправильного использования. В вашем коде вы пытаетесь создать `new MessageEmbed()`, что должно работать правильно. Попробуйте установить Discord.js напрямую из npm и перезапустить ваш проект: ```bash npm install discord.js ``` Если проблема не устранится, попробуйте обновить Node.js до последней версии и проверьте, что все зависимости установлены правильно. Если проблема все еще остается, возможно есть другая причина ошибки. Проверьте весь ваш код, чтобы исключить другие возможные проблемы.
const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('help') .setDescription('Получи помощь'), async execute(interaction) { // <== (•) const helpEmb = new EmbedBuilder() .setColor(0xff8c40) .setTitle('титл мастир') .setDescription('дескриптиан'); await interaction.reply({ embeds: [helpEmb] }); } }
вы в качестве параметра функцииexecute(•) указываете переменную с названием, аналогичным названию переменной сверху вconst { SlashCommandBuilder, /* этой ==> */ EmbedBuilder /* <== этой */ } = require("discord.js");
...и в функции, соответственно, используется локальная переменнаяEmbedBuilder( почему? ), когда должна использоваться внешняя, для корректной работы кода.
достаточно будет заменить названиеEmbedBuilderна любое другое: я заменил выше наinteraction, т.к если у вас правильно настроена обработка команд в основном файле, аргументом этой функции будет CommandInteraction .
кроме того, когда выполнение кода дойдёт доchannel.send(...), вылетит ошибка, посколькуchannelне было нигде определено до этого — заменил наinteraction.reply(...)