通过用户名获取用户 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 Discord.js v13 获取 GuildMember 对象
是否有可能获得对特定表情符号做出反应的用户集合? (不和谐 JS)