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 及以上版本,
- 确保你在 intents 中有
GatewayIntentBits.GuildMembers或类似的东西。 - 在使用
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
