#node.js #discord #discord.js
#node.js #Discord #discord.js
Вопрос:
Я хочу иметь возможность получить ответ от пользователя. Проблема в том, что я не знаю, как убедиться, что я получаю ответ конкретного пользователя, а не кого-то другого. Как я смогу это сделать? Например, запрашивайте минимальное и максимальное числа, а затем получайте случайное число между ними.
Вот что я пробовал:
const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = '-';
client.on('message', message => {
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ /);
const command = args.shift().toLowerCase();
if(command === random) {
message.channel.send('Please enter your starting number')
channel.fetchMessages({ limit: 1 }).then(messages => {
let min = messages.first();
})
message.channel.send('Please enter your limit')
channel.fetchMessages({ limit: 1 }).then(messages => {
let max = messages.first();
})
getRndInteger(min,max)
function getRndInteger(min, max) {
console.log(Math.floor(Math.random() * (max - min 1) ) min);
}
}
});
Я хочу, чтобы он подождал, пока пользователь, который его активировал, не назовет число (у него также может быть тайм-аут).
Ответ №1:
Вы можете использовать Channel.createMessageCollector()
, чтобы подождать, пока ваш целевой пользователь не ответит, вот краткий пример:
let min, max;
const filter = (msg) => msg.author.id === message.author.id; // only match messages from whoever sent the command
const collector = message.channel.createMessageCollector(filter, { max: 2 });
collector.on("collect", (m) => {
if(!min) { // if min hasn't already been set, set it
min = parseInt(m.content);
} else { // otherwise set max
max = parseInt(m.content);
}
});
collector.on("end", () => {
getRndInteger(min, max);
});
Есть и другие способы сделать это, но я считаю, что это самый простой, потому что в противном случае вам понадобилось бы несколько слушателей.
Комментарии:
1. В нем говорится: «ReferenceError: getRndInteger не определен`
2. Привет, это вызвано попыткой использования
getRndInteger()
до того, как вы его определите. Чтобы решить эту проблему, вы должны поместитьfunction getRndInteger(min, max) { ... }
куда-нибудь, прежде чем вызывать его. Было бы лучше определить функцию вне вашего прослушивателя сообщений.