簡體   English   中英

當機器人問一個問題時,如何讓他等待答案並問另一個問題

[英]How to make when bot ask a question, he waiting for an answer and ask another question

我想為經濟學創建我的機器人,但我遇到了一個問題。 我想做什么:寫完一個問題后,機器人等待答案,然后再問另一個問題,依此類推。 有人可以幫我解決我的問題嗎? 目前我有這樣的事情:

const config = require('../../config.json');
const { MessageEmbed } = require('discord.js');
const shopEconomy = require('../../database/shopEconomy');

module.exports = {
    name: 'create-item',
    aliases: [],
    description: '',
    run: async(client, message, args) => {
        const items = require('../../items.json');
        const item = items[Math.floor(Math.random() * items.length)];
        const filter = response => {
            return response.content.toLowerCase();
        };
        const embed = new MessageEmbed()
        .setColor(`${config.correct}`)
        .setAuthor({ name: `Item` })
        .addFields(
            { name: `Name`, value: `---`}
        )

        return message.channel.send(item.question, { fetchReply: true, embeds: [embed] })
        .then(() => {
            message.channel.awaitMessages({ filter, max: 1, time: 10000, errors: ['time'] })
            .then(async collected => {
                const embed = new MessageEmbed()
                .setColor(`${config.correct}`)
                .setAuthor({ name: `Item` })
                .addFields(
                    { name: `Name`, value: `${collected.first()}`}
                )
        
                    await shopEconomy.findOneAndUpdate(
                        {
                            guildID: message.guild.id,
                        },
                        {
                            name: `${collected.first()}`,
                        },
                        {
                            upsert: true,
                        }
                    );

                return message.channel.send({ embeds: [embed] });
            })
            .catch(collected => {
                const embed = new MessageEmbed()
                .setColor(`${config.false}`)
                .setDescription(`Timeout.`)

                message.channel.send({ embeds: [embed] });
            });
            
        });
    }
}

您幾乎收到了,因為您收集消息,發送回復並再次等待消息

//An Example of await messages
    let questions = {
         first_question: "Hello what is your name?",
         second_question: "how old are you",
         
     }
     const filter = m => m.author.id === message.author.id
     message.channel.send({content: `${questions.first_question}`}).then(async msg=>{
         
         await msg.channel.awaitMessages({filter: filter, time: 60000, max:1 }).then(collected=>{
             const msg1 = collected.first().content
             message.channel.send({content: `${questions.second_question}`}).then(async msg=>{
                 await msg.channel.awaitMessages({filter: filter, time: 60000, max:1}).then(collected=>{
                     const msg2 = collected.first().content
                     return message.channel.send({content: `${questions.first_question}\nAns: ${msg1}\n${questions.second_question}\nAns: ${msg2}`})
                 })
                 
             })
         })
     })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM