Discord JS, Await Message, разные входы - PullRequest
1 голос
/ 18 июня 2020

Я делаю раздор-бота, выберите свой собственный стиль приключенческой игры. Я использую одну команду для запуска, затем ожидаю сообщений, чтобы разрешить еще 3 разных ответа. Я использую операторы If с ответом, чтобы определить, что делать дальше, однако, если сообщение не совпадает с одним из ответов, ничего не происходит.

const embed = new discord.RichEmbed()
            .setTitle("__**The Jungle!**__")
            .setColor("#49499c")
            .setDescription("a Pond\nExplore a Tree\nFollow a trail")
            //.attachFiles(["./pictures/Jungle.jpg"])
        const filter = response => {
            return response.author.id === message.author.id;
            }       
        message.channel.send(embed).then(() => {
            message.channel.awaitMessages(filter, { max: 1, time: 30000, errors: ['time'] })
                .then(collected => {
                    if (collected.first()=="Explore a Pond")
                    {
                        Pond.execute(message, args, client);
                    }
                    else if (collected.first()=="Explore a Tree")
                    {
                        Tree.execute(message, args, client);
                    }
                    else if (collected.first()=="Follow a Trail")
                    {
                        Trail.execute(message, args, client);
                    }
                })
                .catch(collected => {
                    message.channel.send('Time up');
                });
        });

Так что мне нужен какой-то улов, и пусть попробуют еще раз. Предпочтительно, когда они вводят неправильные данные, это позволяет им вводить другой ввод, пока он не станет правильным. Так что я полагаю, что это будет go до того, как снова появится сообщение об ожидании.

Любые идеи или помощь были бы замечательными. Спасибо.

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете сделать свой код l oop сам, вызвав функцию:

const question = function (message) {
    message.channel.send(embed).then(() => { 
    message.channel.awaitMessages(filter, { max: 1, time: 30000, errors: ['time'] }) 
    .then(collected => {
        if (collected.first()=="Explore a Pond") { Pond.execute(message, args, client); } 
        else if (collected.first()=="Explore a Tree") { Tree.execute(message, args, client); } 
        else if (collected.first()=="Follow a Trail") { Trail.execute(message, args, client); } 
        else { message.channel.send("Could not find this answer"); return question(message); }
    })
     .catch(collected => { message.channel.send('Time up'); }); });
}

Скажите, пожалуйста, если у вас возникнут какие-либо проблемы с этим:)

...