【问题标题】:discord.js - Random user ID from reactions under messagediscord.js - 来自消息下反应的随机用户 ID
【发布时间】:2022-01-16 10:28:59
【问题描述】:

我想从在某些消息下有反应的用户那里获取随机用户 ID,但几乎总是当我试图让所有用户都做出反应时,即使我做出反应,它也会返回 No Winner
代码:

    setTimeout(()=> {
        // msg.reactions.removeAll
        if(msg.reactions.cache.get("????").users.cache.filter(user => !user.bot).size > 0) {
            const winner = msg.reactions.cache.get("????").users.cache.filter(user => !user.client).random().id
            message.channel.send(`Winner: @<${winner}>`)
        } else {
            message.channel.send("No winner.")
        }
    }, time-Date.now())

【问题讨论】:

    标签: node.js discord discord.js bots


    【解决方案1】:

    我修改了您的代码,它正在工作。由于user.client,您每次都会得到No winner 结果。你应该使用user.bot

    这是我修改的代码:

    setTimeout(()=> {
    
      const reaction = message.reactions.cache.get("?")
      const reactionUsers = reaction.users.cache.filter(user => !user.bot)
    
      if(reactionUsers.size > 0){
        const winner = reactionUsers.random()
        const winnerId = winner.id
        message.channel.send(`Winner: <@${winnerId}>`)
    
      } else {
        message.channel.send(`No winner`)
      }
    }, 10000)
    

    变更1:我用user.bot代替user.client

    更改 2:我在使用之前分配了所有变量(这对我来说更具可读性)。

    更改 3@&lt;${winnerId}&gt; 不正确。请改用&lt;@${winnerId}&gt;。 (@ 应该在&lt;&gt; 标签内)

    【讨论】:

      【解决方案2】:

      我必须添加

      Intents.FLAGS.GUILD_MESSAGE_REACTIONS to my intents.
      

      【讨论】:

      • 太好了 :) 你也可以查看我的答案。它更具可读性和简洁性。
      • 是的,我做到了,非常感谢。
      • 如果此答案对您的问题有所帮助,请在可以时accept it 以便将其关闭。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2020-08-17
      • 2021-03-31
      • 2021-06-21
      • 1970-01-01
      • 2021-12-31
      • 2020-07-28
      • 2021-01-22
      • 2020-11-29
      相关资源
      最近更新 更多