Discord js:从在频道中发布正确答案的用户中选择一个随机用户

时间:2018-10-06 02:02:23

标签: javascript discord

这是我的第一个Discord机器人,我被困住了。 我希望这个机器人为测验选出一个赢家。

因此,我正在尝试从随机用户那里获取所有具有正确答案的消息。 但是,以下代码无法选择正确答案的用户。

您能告诉我我应该怎么做吗?

       const chan = message.channel;
       const answer = 'test';
   
       //Select a random user
       const user = message.channel.members.random();
       const userid = user.id

      //fetch messages from the user and contains answer
      chan.fetchMessages().then(messages => {
           const usermsgs = messages.filter(
                  m => m.author.id === `${user.id}` &&  
                       m.content === answer);
              
        //check if the answer is in the messages
        if(usermsgs){
            message.reply('winner is' + `${user.user}`);
        }else{
            message.reply('No Winner');
        }
        
      }).catch(console.error);

2 个答案:

答案 0 :(得分:1)

我对discord.js并不熟悉,但是对他们的文档的阅读却很少。

您希望随机分配正确回答问题的用户,而不是随机分配整个渠道的用户。由于discord.js为过滤器函数返回了一个Collection对象,因此您可以在其中使用其随机函数。

chan.fetchMessages().then(messages => {
  const usermsgs = messages.filter(
    m => m.content === answer);

  if(usermsgs){
    const randomCorrectUser = usermsgs.random().author;
    message.reply('winner is' + `${randomCorrectUser.username}`);
  }else{
    message.reply('No Winner');
  }
}

答案 1 :(得分:0)

嗯,这很旧,但您可能可以做 const randomCorrectUser = usermsgs.random().author.tag; 名称为#0000或 const randomCorrectUser = usermsgs.random().author.username; 只是名字