网站搜索

javascript - 获取服务器上所有用户的列表 discord.js


我正在尝试使用 discord.js 通过一个机器人获取我服务器中的所有用户,我写了这段代码但是它无法工作,它告诉我:TypeError: client.guilds.get 不是一个函数。这是我的代码:

'use strict';
const Discord = require('discord.js');
const client = new Discord.Client();
const list = client.guilds.get("myServerID"); 
list.members.forEach(member => console.log(member.user.username)); 
client.login('myTokenID');

谢谢

答案#1

更新(2023年2月25日):

对于 Discord v14 及以上版本,

  1. 确保你在 intents 中有 GatewayIntentBits.GuildMembers 或类似的东西。
  2. 在使用 guild.members.cache 之前,至少调用一次 guild.members.fetch()。我认为之后可以使用缓存进行调用。
const client = new Client({
    intents: [
        GatewayIntentBits.GuildMembers,  // MAKE SURE TO ADD THIS
    ],
});


client.on(Events.ClientReady, async (client) => {
    console.log("client ready");
    const guild = client.guilds.cache.get("<guild_id>");

    console.log("fetching users");
    let res = await guild.members.fetch();
    res.forEach((member) => {
        console.log(member.user.username);
    });
})


自从 discord.js v12 以来,

你现在需要使用 .cache 来访问 guilds 集合,我也可以看到你正在尝试访问 members 集合,所以你的解决方案应该是:

'use strict';
const Discord = require('discord.js');
const client = new Discord.Client();
const list = client.guilds.cache.get("myServerID"); 
list.members.cache.forEach(member => console.log(member.user.username)); 
client.login('myTokenID');

答案#2

只需使用 .fetch()

const guild = await client.guilds.fetch('your_id')
const members = await guild.members.fetch() // returns Collection