尝试向我的 mongodb 添加一个警告系统,它有效但说应用程序没有响应

Trying to add a warning system to my mongodb, it works but says application didn't respond

const {Client, CommandInteraction, MessageEmbed} = require("discord.js");
const db = require("../../Structures/Schemas/InfractionDB");

module.exports = {
    name: "warnings",
    description: "Give a warning",
    permission: "ADMINISTRATOR",
    options: [
                {
                    name: "target",
                    description: "Select a target.",
                    type: "USER",
                    required: true
                },
                {
                    name: "reason",
                    description: "Provide a reason.",
                    type: "STRING",
                    required: true
                },
                {
                    name: "evidence",
                    description: "Provide evidence.",
                    type: "STRING",
                    required: false
                },
            ],
        
    /**
     * 
     * @param {CommandInteraction} interaction 
     * @param {Client} client 
     */
    execute(interaction, client) {
        const{guild, member, options} = interaction
        const Target = options.getMember("target");
        const Reason = options.getString("reason");
        const Evidence = options.getString("evidence") || "None provided";

        const Response = new MessageEmbed()
        .setColor("RED")
        .setAuthor({name: "MOD BOT", iconURL: guild.iconURL()});

            db.findOne({GuildID: guild.id, UserID: Target.id}, async (err,data)=> {
                if(err) throw err;
                if(!data || !data.WarnData) {
                    data = new db({
                        GuildID: guild.id,
                        UserID: Target.id,
                        WarnData: [
                            {
                                ExecuterID: member.id,
                                ExecuterTag: member.user.tag,
                                TargetID: Target.id,
                                TargetTag: Target.user.tag,
                                Reason: Reason,
                                Evidence: Evidence,
                                Date: parseInt(interaction.createdTimestamp / 1000)
                            }
                        ],
                    })
                } else {
                    const WarnDataObject ={
                        ExecuterID: member.id,
                        ExecuterTag: member.user.tag,
                        TargetID: Target.id,
                        TargetTag: Target.user.tag,
                        Reason: Reason,
                        Evidence: Evidence,
                        Date: parseInt(interaction.createdTimestamp / 1000)
                    }
                    data.WarnData.push(WarnDataObject)
                }
                data.save()
            });
            Response.setDescription(`Warning Added: ${Target.user.tag} | ||${Target.id}||\n**Reason**: ${Reason}\n**Evidence**:${Evidence}`);
            guild.channels.cache.get("946217387336818699").send({embeds:[Response]});   
            
}}

最初这是路由到我的数据库中的另一个集合。我试着转换它,这样我就可以在一个地方看到所有的东西。但这花了我几个小时而且似乎没有任何进展。就像我说的,数据存储在数据库中,但响应失败。任何想法如何解决这一问题?终端没有错误

我认为错误是您的应用程序响应时间过长。 你只有 3 秒的时间来做出反应。 为此,我建议您将交互作为异步函数执行 在尝试在数据库中找到它之前,您应该使用 await 。因为在数据库中查找数据可能需要一些时间。 数据存储在数据库中,因为它与响应时间无关,但 discord api 想要在 3 秒内回复,否则它将失败。

我已经阅读了你的代码。好像还可以 我建议您使用更简单的方法而不是使用对象或 json 表单来创建命令。

来自 @discordjs/builders

的 SlashCommandBuilder

它简单易用。

这里有一个示例,说明如果您使用 SlashCommandBuilder 是多么容易

    const { SlashCommandBuilder } = require('@discordjs/builders');

const data = new SlashCommandBuilder()
    .setName('gif')
    .setDescription('Sends a random gif!')
    .addStringOption(option =>
        option.setName('category')
            .setDescription('The gif category')
            .setRequired(true)
            .addChoice('Funny', 'gif_funny')
            .addChoice('Meme', 'gif_meme')
            .addChoice('Movie', 'gif_movie'));

您可以使用

安装所有依赖项
npm install discord.js @discordjs/rest discord-api-types