Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Discord bot无法获取所有用户_Javascript_Node.js_Discord.js - Fatal编程技术网

Javascript Discord bot无法获取所有用户

Javascript Discord bot无法获取所有用户,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我已经使用discord.js编写了一个discord bot,它曾经获得discord服务器的所有用户(我只在一个discord服务器中拥有该bot),但现在它只获得59个成员。我在服务器中有300多个discord用户 var Discord = require('discord.js'); var bot = new Discord.Client(); function getUsers() { let users = bot.users.array(); for (let i

我已经使用discord.js编写了一个discord bot,它曾经获得discord服务器的所有用户(我只在一个discord服务器中拥有该bot),但现在它只获得59个成员。我在服务器中有300多个discord用户

var Discord = require('discord.js');
var bot = new Discord.Client();

function getUsers() {
  let users = bot.users.array();

  for (let i = 0; i < users.length; i++) {
    let username = `${users[i].username}#${users[i].discriminator}`;
    console.log(`[${i}] ${username}`);
  }
}
var Discord=require('Discord.js');
var bot=new Discord.Client();
函数getUsers(){
让users=bot.users.array();
for(设i=0;i
您必须对bot所在的每个不协调服务器使用该方法

请尝试使用以下代码:

function getUsers() {
  let guilds = bot.guilds.array();

  for (let i = 0; i < guilds.length; i++) {
    bot.guilds.get(guilds[i].id).fetchMembers().then(r => {
      r.members.array().forEach(r => {
        let username = `${r.user.username}#${r.user.discriminator}`;
        console.log(`${username}`);
      });
    });
  }
}
函数getUsers(){ 让guilds=bot.guilds.array(); for(设i=0;i{ r、 members.array().forEach(r=>{ 让username=`${r.user.username}#${r.user.discriminator}`; log(`${username}`); }); }); } }
这里的聚会迟到了一点,但是
.users
只返回当时缓存的用户。Discord.js在成员发送消息或您获取该特定成员时缓存该成员。您必须使用
.fetchMembers()
检查帮会的每个成员,该命令返回每个成员的
成员对象。

如果您使用的是discord.js v12,则应该是
guild.members.fetch()
,它将缓存所有成员

var usersCount = client.guilds.cache.reduce((a, g) => a + g.memberCount, 0)

这对我很有用…

这里可能有一个不和谐的方面

如果bot跟踪服务器成员或下载整个成员列表,则可能需要服务器成员来接收成员事件和成员列表

转到并选择您的Discord应用程序,转到Bot设置,并在“专用网关意图”下启用“服务器成员意图”


来源:

Ar返回的59个成员与另一个成员之间有什么区别吗?不仅没有总数,我认为在服务器中达到250多个成员后,它停止获取总数,只有59-64个。我使用的是版本12,我有类似的问题。缓存未容纳服务器中的所有用户。我不知道如何将用户加载到缓存。我出错了。(节点:4657)未处理PromiserEjectionWarning:TypeError:bot.guilds.get(…).fetchMembers(…).array不是getUsers(/home/sexyexploits/Documents/discord bot/Versions/0.0.11/le.js:98:69)上的函数(/home/sexyexploits/Documents/discord bot/Versions/0.0.11/le.js:21:3)我更新了答案,你能试试新代码吗?:-)我也有同样的问题。但不幸的是,这对我不起作用。我收到一条错误消息,说
成员没有及时到达。
于是机器人崩溃了。