Беседа с ботом Discord

#javascript #node.js #discord.js

#javascript #node.js #discord.js

Вопрос:

Я создаю бота discord, который будет запускать функцию, основанную на заданных вопросах, из которых несколько являются вопросами «да» / «нет». Ответ «да» выполнит определенную функцию, в то время как «нет» должно заканчивать вопрос. Я не хочу, чтобы бот запускал случайную функцию каждый раз, когда он читает «да». Единственное решение, о котором я мог подумать, это то, что после того, как вопрос был задан (на основе триггера word), пользователь застревает в цикле, где бот не будет отвечать ни на какой триггер, кроме «да» / «нет». Если да, будет запущена соответствующая функция. Если нет, пользователь выходит из цикла и может задать другой вопрос. Кроме да / нет, бот скажет «пожалуйста, ответьте да или нет», Как я могу закодировать это в node.js/discord.js ?

Ответ №1:

Если это команда, которую пользователи должны выполнить, чтобы инициировать этот диалог…Я рекомендую ссылаться на это вdiscord.js официальный документ, в котором говорится о awaitMessages . В принципе, вы могли бы использовать это, за которым следует серия .then() и if statements , которая приведет пользователя по нескольким путям на основе их ответов, которые можно отфильтровать.

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

Пример:

 message.channel.send('Is this a great bot?').then(async (start) => {
            message.channel.awaitMessages(filter, { maxMatches: 1, time: 60000, errors: ['time']}).then(async (collected) => {
                if (collected.first().content === "yes") {} else if (collected.first().content === "no") {}
            })
  

Вы можете фильтровать сообщения с помощью filter или другого способа, чтобы yes/no были единственно приемлемые ответы.