Как создать 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(...)