通过用户名获取用户 ID。不和谐.JS

Posted

技术标签:

【中文标题】通过用户名获取用户 ID。不和谐.JS【英文标题】:Getting userID's through their username. Discord.JS 【发布时间】:2020-10-09 05:54:17 【问题描述】:
     client.on("message", async message =>
      message.guild.members.fetch(query: "username here", limit: 1)
       .then( members => console.log(members.user.id)) //results in undefined
       .catch(console.error);
      

我希望能够通过用户名获取用户 ID。在这种情况下,我使用“fetch()”方法和其中的一个查询。但是,当我尝试登录(members.user.id)时,我得到“未定义”。问题是每当我通过用户 ID 获取时(请参见下面的代码),我都能够访问用户 ID、用户名等。我如何能够通过他们的用户名获取然后能够获取用户 ID。我用这个作为参考点https://discord.js.org/#/docs/main/master/class/GuildMemberManager?scrollTo=fetch

如果他们是通过用户名获取用户 ID 的更简单方法,请告知。

     client.on("message", async message =>
       message.guild.members.fetch("userID here")
       .then( members => console.log(members.user.username))// a username is logged
       .catch(console.error);
             

【问题讨论】:

记录什么是成员并显示结果。我猜它不是未定义的,因为访问.user.id 会出错 当我在通过用户名获取时记录“成员”时,它会记录预期用户 ID 的 2 个对象(“公会”和“用户”对象)。记录的示例:Collection [Map] '258444571640463360' => GuildMember guild: Guild "这里有一堆信息" user: User 这里有一堆信息 这是预期的,但我不明白为什么我无法访问这些对象,当我尝试(例如:members.user.id)时,它说“无法读取未定义的属性'id'” 【参考方案1】:

看起来即使限制为 1,它仍然会返回一个集合,因此您需要获取该集合的第一个成员

message.guild.members.fetch(query: "username here", limit: 1)
   .then(members => 
      const member = members.first();
      //no need to convert it into a user 
      console.log(member.id);
   );

【讨论】:

谢谢你解决了这个问题。我没有考虑到它是一个集合。

以上是关于通过用户名获取用户 ID。不和谐.JS的主要内容,如果未能解决你的问题,请参考以下文章

从用户 id 获取用户名 |不和谐.py

使用用户 ID Discord.js v13 获取 GuildMember 对象

如何使用 discord.py 获取不和谐用户的用户 ID

是否有可能获得对特定表情符号做出反应的用户集合? (不和谐 JS)

如何在 discord.js 中标记播放器并接收他们的不和谐 ID

如果我将他们的 ID 作为字符串,如何在 java 中使用不和谐机器人向用户添加角色?