【问题标题】:How to list all members from a specific server?如何列出来自特定服务器的所有成员?
【发布时间】:2018-10-23 12:01:37
【问题描述】:

我的代码是

const list = client.guilds.find("id", "335507048017952771")
       for (user of list.users){
         console.log(user[1].username);
       }

这实际上没有任何作用。没有错误或任何东西。

我只想让机器人找到一个服务器,然后记录来自该服务器的所有成员。

Displaying all connected users Discord.js 这个问题的答案对我一点帮助都没有。我确实尝试过使用message.guild.users,但这也没有用。在the Discord.js site 上似乎也找不到任何可以帮助我的东西。

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    首先,不要使用.find("id", "335507048017952771"),您应该使用.get("335507048017952771"),正如discord.js 上所说的documentation

    Discord.js 中使用的所有集合都使用它们的 id 属性进行映射,如果你想通过 id 查找,你应该使用 get 方法。详情请见MDN

    Guild 没有users 属性,而它具有members 属性,它返回CollectionGuildMembers。现在要从每个成员那里获取 username,您可以从 GuildMember 的 user 属性中获取它。因此,您需要遍历 GuildMembers 的集合,并获得 <GuildMember>.user.username

    有几种方法可以做到这一点,我将使用forEach() 方法。结果如下:

    // Get the Guild and store it under the variable "list"
    const list = client.guilds.get("335507048017952771"); 
    
    // Iterate through the collection of GuildMembers from the Guild getting the username property of each member 
    list.members.forEach(member => console.log(member.user.username)); 
    

    【讨论】:

    • 这样你会得到一个缓存的版本,而不是最新的列表。
    • 如何获得最新列表?
    • 你可以使用members属性的fetch方法。 list.members.fetch().then(members => console.log(members))。请参考documentation of Partials
    • 就我而言,它说TypeError: list.members.forEach is not a function
    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多