NodeJS Discord bot fetch/embeds出错

kuuvgm7e  于 2023-04-29  发布在  Node.js
关注(0)|答案(1)|浏览(127)

data.embeds[0][LIST_ITEM_VALUE_REQUIRED]:ModelType的列表项值是必需的
调用返回要显示的嵌入的斜杠命令时出现此错误:

import { EmbedBuilder } from "discord.js"
import fetch from "node-fetch"


export const traitDescription = async (trait) => {
    console.log('here')
    let result
    let json = await fetch('https://temtem-api.mael.tech/api/traits').then()
    try { result = await json.json(); } catch (err) { result = null }
        
    console.log(result)
    var traitDes = false
    if (trait.toLowerCase() === 'traits') {
        return 0
    }

    result.forEach((item) => {
        if (trait.toLowerCase() === item.name.toLowerCase()) {
            traitDes = item
            console.log(traitDes)
        }
    })

    if (traitDes != false) {
        traitDes = new EmbedBuilder()
                .setTitle(`${traitDes.name}`)
                .setDescription(`${traitDes.effect}`)
                .setURL(`${traitDes.wikiUrl}`)
    } else {
        return 0
    }
    console.log(traitDes)
    return traitDes
}

这个函数在API中搜索通过slash命令输入的trait名称,如果没有trait名称,则返回一个包含数据的embed,或者返回整数0。
在我的索引中。js文件我在'interactionCreate'函数中调用了如下的slash命令(我还有其他可以工作的命令):

else if (commandName === 'trait') {
        let traitName = options.getString('traitname')
        const traitEmbed = traitDescription(traitName)
        if (traitEmbed === 0) {
            interaction.reply({
                content: 'This is not a trait <:bruhvel:1100574618110132255>',
                ephemeral: true,
            })
        } else {
            const messageId = interaction.reply({ embeds: [ traitEmbed ] })

        }
    }

我对这个bug做得越多,我就越困惑。我已经确保我在最新版本的节点,不和谐。js和node-fetch我有一个API的print语句,有时它只是随机打印出api并工作,但仍然给出错误。

f0brbegy

f0brbegy1#

我想明白了我的InteractionCreate函数需要是异步的,才能在我用斜杠命令调用的异步函数上使用“await”

相关问题