不和谐机器人没有得到所有的成员 [英] Discord bot not getting all of the members

查看:22
本文介绍了不和谐机器人没有得到所有的成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要执行一个命令,告诉我机器人所在的服务器中的用户总数。我搜索了一下如何制作它,找到了这个:

const users = await client.users.cache.size

但当我使用它时,机器人告诉我它只为一个用户服务。

推荐答案

client.users是已在任何点缓存的所有用户对象,由其ID映射。

我认为没有一个方法或属性可以获取机器人所在的每台服务器的成员总数。您可能会迭代客户端当前正在处理的guilds并取回成员。

以下内容应可用:

async function getTotalNumberOfMembers(client) {
  const guilds = client.guilds.cache;
  let numberOfMembers = 0;

  // resolves once members from every guild is fetched
  await Promise.all(
    guilds.map(async (guild) => {
      const members = await guild.members.fetch();
      numberOfMembers += members.size;
    }),
  );

  return numberOfMembers;
}

// ...

const total = await getTotalNumberOfMembers(client);
console.log(total);

编辑:可以,您也可以使用.memberCount属性:

function getTotalNumberOfMembers(client) {
  const guilds = client.guilds.cache;
  let numberOfMembers = 0;

  guilds.each((guild) => {
    numberOfMembers += guild.memberCount;
  });

  return numberOfMembers;
}

const total = getTotalNumberOfMembers(client);

这篇关于不和谐机器人没有得到所有的成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆