Discord 机器人没有获得所有用户

新手上路,请多包涵

我使用 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}`);
  }
}

原文由 SexyExploits 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 515
2 个回答

您必须对机器人所在的每个不和谐服务器使用方法 .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}`);
      });
    });
  }
}

原文由 Gilles Heinesch 发布,翻译遵循 CC BY-SA 4.0 许可协议

这里可能有一个不和谐的设置。

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

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

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

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

原文由 Ivan Rubinson 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题