Discord 机器人无法获取所有用户

Sex*_*its 5 javascript node.js discord.js

我使用 Discord.js 编写了一个 Discord 机器人,它曾经获取 Discord 服务器的所有用户(我只在一台 Discord 服务器中拥有该机器人),但现在它只获取 59 个成员。我的服务器中有 300 多个不和谐用户。

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}`);
  }
}
Run Code Online (Sandbox Code Playgroud)

Iva*_*son 5

这里有一个可能相关的不和谐方面的设置。

如果您的机器人跟踪服务器成员或下载整个成员列表,您可能需要服务器成员意图接收成员事件和成员列表。

转到https://discord.com/developers/并选择您的 Discord 应用程序,转到 Bot 设置,然后启用“特权网关意图”下的“服务器成员意图”。

特权网关意图 > 服务器成员意图

来源:https ://github.com/discordjs/discord.js/issues/3774#issuecomment-717824144


Gil*_*sch 4

您必须对.fetchMembers()机器人所在的每个不和谐服务器使用该方法。

尝试使用以下代码:

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}`);
      });
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我收到一个错误。(节点:4657)UnhandledPromiseRejectionWarning:TypeError:bot.guilds.get(...).fetchMembers(...).array 不是 getUsers 处的函数(/home/sexyexploits/Documents/discord bot/Versions/0.0.11 /le.js:98:69) 在 Client.bot.on (/home/sexyexploits/Documents/discord bot/Versions/0.0.11/le.js:21:3) (2认同)
  • 我更新了我的答案,您可以尝试一下新代码吗?:-) (2认同)