JavaScriptとdiscord.jsを使用してDiscordボットを作成しています。そこで、RichEmbed/MessageEmbed(それがどのように呼び出されたかがわかりません)をチャネルに送信します。ただし、Embedを送信する代わりに、discord.js内でエラーをスローしました。
TypeError: fields.flat is not a function
at Function.normalizeFields (D:\discord-bot\node_modules\discord.js\src\structures\MessageEmbed.js:436:8)
at MessageEmbed.addFields (D:\discord-bot\node_modules\discord.js\src\structures\MessageEmbed.js:252:42)
at commands.forEach.command (D:\discord-bot\src\js\core\commands\commandManager.js:55:19)
at Array.forEach (<anonymous>)
at helloWorldEmbed (D:\discord-bot\src\js\core\commands\commandManager.js:54:18)
at Object.call (D:\discord-bot\src\js\core\commands\commandManager.js:29:13)
at Client.client.on (D:\discord-bot\src\js\core\bot.js:16:49)
at Client.emit (events.js:182:13)
at MessageCreateAction.handle (D:\discord-bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (D:\discord-bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
すでに回答を探していましたが、困っているのは私だけです。
これが私が使ったコードです:
const embed = new MessageEmbed()
.setTitle('Hello World')
.setDescription('This is a test.')
.setColor('#3498db')
quotes.forEach(quote => {
embed.addField(quote.name, quote.description, true)
})
message.channel.send('Hello world.', embed)
コメントで説明したように、Node.jsを更新すると問題が解決します。 Discord.js v12は、古いバージョンには存在しない効率のために使用するメソッド(エラーのArray#flat()
など)のため、12.0.0以降が必要です。