@no_code_human

Почему появляется ошибка при создании Embed внутри команды?

Здравствуйте. Смотрел видео, читал гайд но никак понимаю как создавать эмбед в команде. Те кто знают, отпишите пж :)
spoiler
Сорян если я неправильно выразился

Файл
const { SlashCommandBuilder } = require('discord.js');
const { EmbedBuilder } = require('discord.js');


// inside a command, event listener, etc.

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

}


Ошибка
TypeError: EmbedBuilder is not a constructor
    at Client.<anonymous> (C:\Intel\code\bot\index.js:42:23)
    at Client.emit (node:events:519:28)
    at InteractionCreateAction.handle (C:\Intel\code\bot\node_modules\discord.js\src\client\actions\InteractionCreate.js:97:12)
    at module.exports [as INTERACTION_CREATE] (C:\Intel\code\bot\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)                                                                                                                                      :4:36) 
    at WebSocketManager.handlePacket (C:\Intel\code\bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:355:31)
    at WebSocketManager.<anonymous> (C:\Intel\code\bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:239:12)
    at WebSocketManager.emit (C:\Intel\code\bot\node_modules\@vladfrangu\async_event_emitter\dist\index.cjs:282:31)
    at WebSocketShard.<anonymous> (C:\Intel\code\bot\node_modules\@discordjs\ws\dist\index.js:1173:51)
    at WebSocketShard.emit (C:\Intel\code\bot\node_modules\@vladfrangu\async_event_emitter\dist\index.cjs:282:31)
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
Alexandre888
@Alexandre888 Куратор тега discord.js
Javascript-разработчик
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(...)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы