Node.js 单个用户在Discord.js上的输入

Node.js 单个用户在Discord.js上的输入,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(!messa

我希望能够从用户那里获得响应。问题是,我不知道如何确保我得到的是特定用户的响应,而不是其他人的响应。我怎样才能做到这一点? 例如,询问最小值和最大值,然后从它们之间获得一个随机数

以下是我尝试过的:

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); 
      }

    
}

});
我希望它等待,直到激活它的用户说出一个数字,它也可能有一个超时。

您可以使用Channel.createMessageCollector等待,直到您的目标用户做出响应,下面是一个简单的示例:

设min,max; const filter=msg=>msg.author.id==message.author.id;//仅匹配来自发送命令的人的消息 const collector=message.channel.createMessageCollectorfilter,{max:2}; collector.oncollect,m=>{ 如果!min{//如果尚未设置min,请设置它 min=parseIntm.content; }else{//否则设置最大值 max=parseIntm.content; } }; collector.onend,=>{ getRndIntegermin,最大值; };
还有其他方法可以做到这一点,但我认为这是最简单的方法,因为否则您将需要多个侦听器。

它说“ReferenceError:getRndInteger未定义”`Hi,这是由于在定义getRndInteger之前尝试使用它造成的。要解决这个问题,必须在调用函数getRndIntegermin,max{…}之前将其放在某个地方。最好在消息侦听器之外定义函数。