【问题标题】:Discord Giveaway bot always gives the bot as winnerDiscord Giveaway 机器人始终将机器人作为赢家
【发布时间】:2021-05-09 06:09:33
【问题描述】:

当没有人进入赠品时,机器人应该返回“没有人进入”,但即使是这样,它仍然会显示“@Dbot 获胜者”。我在代码中遗漏了什么吗?

    let msg = await message.channel.send(
      "**????GIVEAWAY????**",
      {
        embed: {
          title: `${(args.slice(2, args.length)).join(" ")}`,
          color: 3447003,
          description: `React with ???? to enter!\nTime to enter: ${args[0]}\nWinners: ${args[1]}`,
          footer: {
            text: `dbot 2021 © giveaway ends ${endTime.toLocaleTimeString()}`
          }
        }
      });
      await msg.react('????')
      setTimeout(() => {
          msg.reactions.cache.get('????').users.remove(msg.author.id)
          setTimeout(() => {
              let winner = msg.reactions.cache.get('????').users.cache.random();
              if (msg.reactions.cache.get('????').users.cache.size < 1) {
                msg.channel.send(`No one entered giveaway :sadge:`);
              }
              if (!msg.reactions.cache.get('????').users.cache.size < 1) {
                console.log(winner);
                msg.channel.send(`${winner} is our winner!???????????? check 1`);
              }
          }, 3000);
      }, timerMilliseconds);

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    这是因为你先检查users.cache.size是否小于1,然后检查if (!msg.reactions.cache.get('?').users.cache.size &lt; 1)

    users.cache.size 将返回一个数字,而在 JavaScript 中 !number 将返回一个布尔值。检查下面的sn-p:

    const num0 = 0;
    const num1 = 1;
    const num2 = 2;
    
    console.log(num0, !num0);
    console.log(num1, !num1);
    console.log(num2, !num2);

    这意味着在第二个 if 语句中,您正在检查 false 是否小于 1,这在 JavaScript 中是正确的。

    要解决这个问题,您只需将第二个 if 转换为 else 语句:

    if (msg.reactions.cache.get('?').users.cache.size < 1) {
      msg.channel.send(`No one entered giveaway :sadge:`);
    } else {
      console.log(winner);
      msg.channel.send(`${winner} is our winner!??? check 1`);
    }
    

    【讨论】:

    • 那个解决方案给了我同样的输出.. "@dbot 是我们的赢家!:tada::tada::tada:"
    【解决方案2】:

    您需要在 Discord 开发者控制台上启用 MEMBERS 意图并将该意图添加到您的 ClientOptions

    【讨论】:

    • 这与这个问题有什么关系?
    • 我误读了这个问题,并将其视为“机器人总是选择自己”,这将解决这个问题。
    猜你喜欢
    • 2021-04-01
    • 2021-02-02
    • 2021-07-01
    • 2021-01-01
    • 2021-03-12
    • 2021-05-14
    • 2021-01-10
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多