【问题标题】:How do I make my Discord.js (Commando) bot leave servers (on join) if the GuildIDs aren't whitelisted in my code?如果 GuildID 未在我的代码中列入白名单,如何让我的 Discord.js (Commando) 机器人离开服务器(加入时)?
【发布时间】:2019-12-31 00:35:42
【问题描述】:

我有一个需要付费订阅的机器人。我希望能够在我的代码中将客户想要的特定公会 ID 列入白名单。我该怎么做呢?它会自发地离开它加入的每台服务器,除非它在我的代码中被列入白名单。我已经尝试过。

client.on('guildCreate', (guild) => {

  let premiumServers = ['ID1', 'ID2']; // Obviously I replaced ID1, ID2 etc with actual guild IDs
  let Premium = true;
  for (var i in premiumServers) {
    if (guild.id !== premiumServers[i]) Premium = false;
  }

  if(Premium = false) {
    guild.leave();
  }

});

没有任何错误消息。应该发生的情况是,除非服务器 ID 在白名单中,否则机器人会将其邀请的任何服务器留在其中。

【问题讨论】:

    标签: javascript bots discord discord.js


    【解决方案1】:

    这样的东西看起来很干净并且做得最好:

    let premiumServers = ['ID1', 'ID2'];
    client.on('guildCreate', (guild) => {
        if(!premiumServers.includes(guild.id)) return guild.leave();
    });
    

    您的机器人仍然能够在其崩溃/离线时加入服务器而不离开它们,因此请考虑使用:

    const premiumServers = ['ID1', 'ID2'];
    
    client.on('guildCreate', (guild) => {
        if(!premiumServers.includes(guild.id)) return guild.leave();
    });
    
    client.on('ready', () => {
        client.guilds.forEach(guild => {
            if(!premiumServers.incudes(guild.id)) guild.leave();
        });
        console.log(`${client.user.username} is now online...`);
    });
    

    【讨论】:

      【解决方案2】:

      如果公会的 ID 与 premiumServer 中的 ID 数组的所有不匹配,则您的循环将 Premium 设置为 false。

      如果公会的 ID 与 ID 数组中的 任何 匹配,您可能想要将 Premium 设置为 true。
      像这样:

      // Assume that the guild is not premium first.
      let Premium = false;
      for (var i in premiumServers) {
        // Check if the guild is premium
        if (guild.id == premiumServers[i]) {
          // Set to true and stop the loop.
          Premium = true;
          break;
        }
      }
      

      最后,您在if 语句中进行了赋值,而不是相等测试。

      if(Premium = false) // <-- the statement inside does an assignment
      {
        guild.leave();
      }
      

      请改用Premium == false!Premium

      【讨论】:

        猜你喜欢
        • 2021-02-07
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        • 1970-01-01
        • 2021-07-06
        • 2020-06-30
        • 2021-06-16
        • 1970-01-01
        相关资源
        最近更新 更多