首页 > 解决方案 > 列出公会中的所有成员 (djs v12)

问题描述

列出公会中的每个用户,无论他们是否存在 Discord。

client.on("message", (message) => {
 //   if (message.content == "hi") {
   // if (message.author.id !== "ID") return;
    const guild = client.guilds.cache.get('ID')
    const users = client.users.cache.map((u) => u.id);
      message.guild.members.cache.forEach(members => console.log(users && `Amount of users:`, users.length))
  
      console.log(`Listing user ids from ${guild.name}:`);
      console.log(users);
      console.log(users.length)
  //  }
  });

我当前的代码没有在我提供的公会 ID 中列出用户,机器人在服务器中。有什么我做错了吗?

标签: dictionarydiscorddiscord.js

解决方案


地图不使用length,而是size。因此,为了列出公会中的每个人,您可以执行以下操作:

client.on("message", async message => {
    if(message.author.bot === true) return;
    if(message.channel.type === "dm") return;

    // Trigger with 'list all members'
    if(message.content.toLowerCase() === "list all members") {
        // Get the guild from Cache using the GuildID from the message
        // Or manually put in the ID from the server your bot is in.
        const guild = client.guilds.cache.get(message.guild.id);

        // Force member cache to be cleared and renewed.
        await guild.members.fetch({ force: true });

        // Map all users.
        console.log(`Listing ${guild.members.cache.size} members from ${guild.name}.`);
        guild.members.cache.forEach(member => {
            console.log(`${member.user.tag} (ID: ${member.id})`);
        });
    }
});

推荐阅读