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

Fra*_*ari 6 javascript node.js discord discord.js

我正在尝试使用discord.js 通过机器人从我的服务器获取所有用户,我编写了这段代码,但它不起作用,它告诉我:TypeError: client.guilds.get is not a function。这是我的代码:

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

谢谢

Syn*_*tle 5

更新(2023 年 2 月 25 日):

对于不和谐 v14+,

  1. 确保你有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);
    });
})

Run Code Online (Sandbox Code Playgroud)

从discord.js v12开始,

您现在需要使用访问该guilds集合.cache,我还可以看到您正在尝试访问该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');
Run Code Online (Sandbox Code Playgroud)