无法通过 Discordjs v13 获取所有公会成员

Posted

技术标签:

【中文标题】无法通过 Discordjs v13 获取所有公会成员【英文标题】:Unable to fetch all guild members through Discordjs v13 【发布时间】:2021-10-20 00:39:40 【问题描述】:

我一直在尝试使用文档here 中提到的语法来获取我的公会中所有成员的列表。但我没有收到任何输出。下面是我正在使用的代码。

const  Client, Intents, Guild  = require("discord.js");
require("dotenv").config();
const commandHandler = require("./commands");
const fetch = require("node-fetch");

const client = new Client(
    intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_PRESENCES"],
);

client.once("ready", async (data) => 
    console.log("Ready!");
    console.log(`Logged in as $client.user.tag!`);
    const Guilds = client.guilds.cache.map((guild) => guild);
    console.log(Guilds[0]);
    await Guilds[0].members.fetch().then(console.log).catch(console.error);
);

client.on("interactionCreate", async (interaction) => 
    if (!interaction.isCommand()) return;

    if (interaction.commandName === "ping") 
        await interaction.reply(client.user + "????");
    
);

client.on("messageCreate", commandHandler);
client.login(process.env.BOT_TOKEN); // Kushagra's bot

我正在通过第 13 行的 console.log 获取有关 Guild 实例的信息。但是第 15 行没有得到任何输出。 但是,我注意到如果我在第 14 行向fetch() 命令添加选项,我会得到一些输出。当我添加query: 'random text' 时,我收到了一些输出。

只是想了解为什么我无法获得所有成员的列表。 谢谢!????

【问题讨论】:

【参考方案1】:

我发现我错过了 Intent。 似乎为了获取成员,您需要在创建客户端实例时添加意图 GUILD_MEMBERS

所以用下面的替换客户端创建就可以了。

const client = new Client( 
    intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_PRESENCES", "GUILD_MEMBERS"] 
);

【讨论】:

非常感谢。我花了几个小时寻找修复方法,直到我意识到我没有添加意图。

以上是关于无法通过 Discordjs v13 获取所有公会成员的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js v13,@discordjs/voice 播放音乐命令

如何在 DiscordJS v13 上向用户添加角色?

DiscordJs:邀请机器人时检查 serverId

Discord.js guildCreate/guildDelete 事件无法获取新公会的所有者标签

如何仅使用 discordjs v12 存储具有特定角色的成员的所有数据

无法通过 DiscordJS 中的不同范围传递变量