最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - this.options.embeds?.map is not a function discord.js - Stack Overflow

programmeradmin3浏览0评论

Hi I'm trying to get an embed working but it keeps returning with

this.options.embeds?.map is not a function

I've looked online but can't find an answer as most of the solutions are to update node.js of which I have the latest version

const {
    SlashCommandBuilder
} = require('@discordjs/builders');
const {
    MessageEmbed,
    MessageAttachment,
    Message
} = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('info')
        .setDescription('Returns info based on input')
        .addSubmand(submand =>
            submand
            .setName("user")
            .setDescription("Gets information of a user mentioned")
            .addUserOption(option => option.setName("target").setDescription("The user mentioned")))
        .addSubmand(submand =>
            submand
            .setName("server")
            .setDescription("Info about the server")),
    async execute(interaction, client) {
        if (interaction.options.getSubmand() === "user") {
            const user = interaction.options.getUser("target");
            if (user) {
                const file = new MessageAttachment("./src/images/Bobbys.png");
                const userEmbed = new MessageEmbed()
                    .setTitle(`${user.username}`)
                    .setDescription(`A member of the ${user.guildname} server!`)
                    .setAuthor("Bobby Bot", client.user.displayAvatarURL())
                    .setThumbnail(client.user.displayAvatarURL())
                    .addFields(
                        { name: "Tag", value: `<@${user.id}>`, inline: true},
                        { name: "\u200B", value: "\u200B", inline: true},
                        { name: "Member Since", value: `${user.joinedAt}`, inline: true}
                    )
                    .setImage(user.displayAvatarURL)
                    .setTimestamp()
                    .setFooter(client.user.tag, client.user.displayAvatarURL());
                await interaction.reply({ embeds: userEmbed, files: [file] });
            } else {
                await interaction.reply(`<@${interaction.user.id}>\nUsername: ${interaction.user.username}\nYour ID: ${interaction.user.id}`);
            }
        } else if (interaction.options.getSubmand() === "server") {
            await interaction.reply(`Server Name: ${interaction.guild.name}\nTotal Members: ${interaction.guild.memberCount}`);
        } else {
            await interaction.reply("No submand was used");
        };
    },
};

This is my code, but for some reason, it's returning a mapping error even though I'm not using the inbuilt function and is returning this error:

    TypeError: this.options.embeds?.map is not a function
    at MessagePayload.resolveData (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\structures\MessagePayload.js:184:36)
    at CommandInteraction.reply (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:97:50)
    at Object.execute (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\src\mands\Information\info.js:41:35)
    at Object.execute (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\src\events\interactionCreate.js:11:27)
    at Client.<anonymous> (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\src\functions\handleEvents.js:8:58)
    at Client.emit (node:events:394:28)
    at InteractionCreateAction.handle (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\client\actions\InteractionCreate.js:66:12)
    at Object.module.exports [as INTERACTION_CREATE] (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
    at WebSocketManager.handlePacket (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:345:31)
    at WebSocketShard.onPacket (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)
C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\rest\RequestHandler.js:298
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Unknown interaction
    at RequestHandler.execute (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\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\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async CommandInteraction.reply (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:99:5)
    at async Object.execute (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\src\events\interactionCreate.js:14:13) {
  method: 'post',
  path: '/interactions/887347065653452800/aW50ZXJhY3Rpb246ODg3MzQ3MDY1NjUzNDUyODAwOklyMlZNcFFmNndBTnR1c0FYYnp1ZDEyQU1lRVlFMjRWWmxxM3JmZkREY3dlNHcwRUtJcHFoRmFlQW1kRjRPMUtuVFB3Q0JpN0NncU5KaHVnZjRiV0dqQ1BsTlNBdmlXS1ZzOUYwQjN4R3RSUUhGU0RqSnVPNElYdzY2Umx1OWJ3/callback',
  code: 10062,
  httpStatus: 404,
  requestData: {
    json: {
      type: 4,
      data: {
        content: 'There was an error while executing this mand!',
        tts: false,
        nonce: undefined,
        embeds: undefined,
        ponents: undefined,
        username: undefined,
        avatar_url: undefined,
        allowed_mentions: undefined,
        flags: 64,
        message_reference: undefined,
        attachments: undefined,
        sticker_ids: undefined
      }
    },
    files: []
  }
}

Hi I'm trying to get an embed working but it keeps returning with

this.options.embeds?.map is not a function

I've looked online but can't find an answer as most of the solutions are to update node.js of which I have the latest version

const {
    SlashCommandBuilder
} = require('@discordjs/builders');
const {
    MessageEmbed,
    MessageAttachment,
    Message
} = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('info')
        .setDescription('Returns info based on input')
        .addSubmand(submand =>
            submand
            .setName("user")
            .setDescription("Gets information of a user mentioned")
            .addUserOption(option => option.setName("target").setDescription("The user mentioned")))
        .addSubmand(submand =>
            submand
            .setName("server")
            .setDescription("Info about the server")),
    async execute(interaction, client) {
        if (interaction.options.getSubmand() === "user") {
            const user = interaction.options.getUser("target");
            if (user) {
                const file = new MessageAttachment("./src/images/Bobbys.png");
                const userEmbed = new MessageEmbed()
                    .setTitle(`${user.username}`)
                    .setDescription(`A member of the ${user.guildname} server!`)
                    .setAuthor("Bobby Bot", client.user.displayAvatarURL())
                    .setThumbnail(client.user.displayAvatarURL())
                    .addFields(
                        { name: "Tag", value: `<@${user.id}>`, inline: true},
                        { name: "\u200B", value: "\u200B", inline: true},
                        { name: "Member Since", value: `${user.joinedAt}`, inline: true}
                    )
                    .setImage(user.displayAvatarURL)
                    .setTimestamp()
                    .setFooter(client.user.tag, client.user.displayAvatarURL());
                await interaction.reply({ embeds: userEmbed, files: [file] });
            } else {
                await interaction.reply(`<@${interaction.user.id}>\nUsername: ${interaction.user.username}\nYour ID: ${interaction.user.id}`);
            }
        } else if (interaction.options.getSubmand() === "server") {
            await interaction.reply(`Server Name: ${interaction.guild.name}\nTotal Members: ${interaction.guild.memberCount}`);
        } else {
            await interaction.reply("No submand was used");
        };
    },
};

This is my code, but for some reason, it's returning a mapping error even though I'm not using the inbuilt function and is returning this error:

    TypeError: this.options.embeds?.map is not a function
    at MessagePayload.resolveData (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\structures\MessagePayload.js:184:36)
    at CommandInteraction.reply (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:97:50)
    at Object.execute (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\src\mands\Information\info.js:41:35)
    at Object.execute (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\src\events\interactionCreate.js:11:27)
    at Client.<anonymous> (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\src\functions\handleEvents.js:8:58)
    at Client.emit (node:events:394:28)
    at InteractionCreateAction.handle (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\client\actions\InteractionCreate.js:66:12)
    at Object.module.exports [as INTERACTION_CREATE] (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
    at WebSocketManager.handlePacket (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:345:31)
    at WebSocketShard.onPacket (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)
C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\rest\RequestHandler.js:298
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Unknown interaction
    at RequestHandler.execute (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\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\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async CommandInteraction.reply (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:99:5)
    at async Object.execute (C:\Users\jacob\OneDrive\Desktop\Bobby Bot\src\events\interactionCreate.js:14:13) {
  method: 'post',
  path: '/interactions/887347065653452800/aW50ZXJhY3Rpb246ODg3MzQ3MDY1NjUzNDUyODAwOklyMlZNcFFmNndBTnR1c0FYYnp1ZDEyQU1lRVlFMjRWWmxxM3JmZkREY3dlNHcwRUtJcHFoRmFlQW1kRjRPMUtuVFB3Q0JpN0NncU5KaHVnZjRiV0dqQ1BsTlNBdmlXS1ZzOUYwQjN4R3RSUUhGU0RqSnVPNElYdzY2Umx1OWJ3/callback',
  code: 10062,
  httpStatus: 404,
  requestData: {
    json: {
      type: 4,
      data: {
        content: 'There was an error while executing this mand!',
        tts: false,
        nonce: undefined,
        embeds: undefined,
        ponents: undefined,
        username: undefined,
        avatar_url: undefined,
        allowed_mentions: undefined,
        flags: 64,
        message_reference: undefined,
        attachments: undefined,
        sticker_ids: undefined
      }
    },
    files: []
  }
}
Share Improve this question edited Sep 14, 2021 at 16:23 MrMythical 9,0393 gold badges21 silver badges48 bronze badges asked Sep 14, 2021 at 14:46 Jacob SandersonJacob Sanderson 191 silver badge6 bronze badges 1
  • Use await interaction.reply({ embeds: [userEmbed], files: [file] });, embeds is expecting an array – iunfixit Commented Sep 14, 2021 at 14:56
Add a ment  | 

1 Answer 1

Reset to default 5
await interaction.reply({ embeds: userEmbed, files: [file] });

this line of code looks like a problem. the "embeds:" label is expecting an array, just like you have for the files. change it to:

await interaction.reply({ embeds: [userEmbed], files: [file] });

hopefully that fixes it.

发布评论

评论列表(0)

  1. 暂无评论