javascript - this.options.embeds?.map 不是函数 discord.js
问题描述
嗨,我正在尝试让嵌入工作,但它不断返回
this.options.embeds?.map 不是函数
我在网上看过但找不到答案,因为大多数解决方案都是更新我拥有最新版本的 node.js
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')
.addSubcommand(subcommand =>
subcommand
.setName("user")
.setDescription("Gets information of a user mentioned")
.addUserOption(option => option.setName("target").setDescription("The user mentioned")))
.addSubcommand(subcommand =>
subcommand
.setName("server")
.setDescription("Info about the server")),
async execute(interaction, client) {
if (interaction.options.getSubcommand() === "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.getSubcommand() === "server") {
await interaction.reply(`Server Name: ${interaction.guild.name}\nTotal Members: ${interaction.guild.memberCount}`);
} else {
await interaction.reply("No subcommand was used");
};
},
};
这是我的代码,但由于某种原因,即使我没有使用内置函数并返回此错误,它也会返回映射错误:
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\commands\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 command!',
tts: false,
nonce: undefined,
embeds: undefined,
components: undefined,
username: undefined,
avatar_url: undefined,
allowed_mentions: undefined,
flags: 64,
message_reference: undefined,
attachments: undefined,
sticker_ids: undefined
}
},
files: []
}
}
解决方案
await interaction.reply({ embeds: userEmbed, files: [file] });
这行代码看起来有问题。“嵌入:”标签需要一个数组,就像文件一样。将其更改为:
await interaction.reply({ embeds: [userEmbed], files: [file] });
希望能解决它。
推荐阅读
- java - 压缩字符串方法不返回新字符串?
- python - TensorFlow Eager 模式支持文本摘要
- java - 如何将“null”值分配给 Java 中的 int[] 数组中的单个元素
- windows-services - Tomcat卸载使用控制面板-Tomcat服务未删除
- javascript - JS:使用键值对的构造函数的性能
- xcode - PDF Kit View 不在我的 Xcode 对象库中
- c - 在图中使用队列进行拓扑排序
- javascript - 脚本仅使用 $(document) 调用一次
- identityserver4 - 带有 identityserver4 的自定义应用程序登录屏幕
- php - Laravel API 资源响应分组