【问题标题】:Discord.js Member Count reduces issueDiscord.js 成员数减少了问题
【发布时间】:2020-11-18 06:22:45
【问题描述】:

我正在开发一个机器人,用于在我的 Discord 服务器中计算服务器中的成员。现在我有 270 名成员。但是对于会员数,它达到 199 个会员,然后自动下降到 160 个会员。我不知道发生了什么,因为它只是随机地从 199 减少到 160 或 168 名成员。它没有达到 200。当我第一次添加机器人时,我没有任何问题。直到最近它才这样做。代码如下。

const {
  config
} = require("dotenv");
const Discord = require('discord.js');
const client = new Discord.Client();


// Variables
const ownerID = '426345341072179223';

const PREFIX = '.';

// Message to ping the bot
client.on('message', message => {

  let args =
    message.content.substring(PREFIX.length).split(" ");

  switch (args[0]) {
    case 'ping':
      message.reply('you have successfuly pinged me');
      break;

  }

})

client.once("ready", () => {
  //When bot is ready
  client.user.setActivity(`SpongeBoZZ ACAB on 
          YouTube`, {
    type: 'LISTENING'
  }); //It will set status 
  : )
});

// Server Stats Setup
const serverStats = {
  guildID: '669622560098353152',
  totalUsersID: '694688882977144854',
  memberCountID: '694689022588616814',
  botCountID: '694689099725930597'
};


client.on('ready', () => console.log('Bot is now 
      Connected '));

      client.on('guildMemberAdd', member => {

          if (member.guild.id !== serverStats.guildID)
            return;


          ` client.channels.cache.get(serverStats.totalUsersID).setName(`
          Total Users: $ {
            member.guild.memberCount
          }
          `);
    client.channels.cache.get(serverStats.memberCountID).setName(`
          Member Count: $ {
            member.guild.members.cache.filter(m => !m.user.bot).size
          }
          `);
    client.channels.cache.get(serverStats.botCountID).setName(`
          Bot Count: $ {
            member.guild.members.cache.filter(m => m.user.bot).size
          }
          `);

});

client.on('guildMemberRemove', member =>
{

    if (member.guild.id !== serverStats.guildID) return;

    client.channels.cache.get(serverStats.totalUsersID).setName(`
          Total Users: $ {
            member.guild.memberCount
          }
          `);
    client.channels.cache.get(serverStats.memberCountID).setName(`
          Member Count: $ {
            member.guild.members.cache.filter(m => !m.user.bot).size
          }
          `);
    client.channels.cache.get(serverStats.botCountID).setName(`
          Bot Count: $ {
            member.guild.members.cache.filter(m => m.user.bot).size
          }
          `);

});



// Login to Discord
client.login(process.env.token);

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    要计算您的机器人所在的所有不和谐服务器上存在的用户成员,您可以执行以下操作:

    let membersCount = 0;
    client.users.cache.map(users => users.id ? membersCount += 1 : false).pop()
    console.log(membersCount);
    

    然后你就会得到你的机器人可以看到的用户数量!

    要获得单个公会的成员数量,您必须通过公会集合更改客户端用户。

    client.on("message", (message) => {
    
    let membersCount = 0;
    message.guild.members.cache.map(users => users.id ? membersCount += 1 : false).pop()
    console.log(membersCount);
    });
    

    【讨论】:

    • 这会报错并说 users.id ?未定义
    • 好的,所以澄清一下代码中要输入的内容。我的机器人在一台服务器上。
    • 我不确定
    • 你能重写代码并添加你的部分,这样我就知道它需要在代码中的位置。我不知道该放在哪里。
    • 你只需要复制并粘贴到你的 index.js 中
    【解决方案2】:

    对于“总用户”,您使用的是直接来自 Discord API 的.memberCount。对于“成员计数”和“机器人计数”,您直接从缓存中提取数字。在这里,不能保证每个成员/用户都会被缓存,这会影响您计数的准确性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      相关资源
      最近更新 更多