检查 Discord 服务器中是否存在用户 ID

Check if user ID exists in Discord server

我的 Discord 机器人需要检查用户是否在服务器中。我正在使用 node.js 和 discord.js。

var USER_ID = randomNumbers
if (client.guild.member(USER_ID).exists){
   do something
}

有办法吗?

如果您有一组服务器成员 ID 和您要查找的成员的 ID,您可能会发现这很有用:How do I check if an array includes an object in JavaScript?

您可以使用 Array#includes 检查数组是否包含指定的对象,或者在本例中是您的会员 ID。

这与 Way to check if a channel exists 非常相似,解决方案应该相同。本质上,你需要获取公会集合,然后使用discord.js 'Collection.exists' 辅助函数来检查集合(频道用户列表)中是否存在元素(用户id)。

如有疑问,请务必查看文档。 :)

https://discord.js.org/#/docs/main/stable/class/Collection?scrollTo=exists

编辑:进一步阅读后,我注意到 'Collection.exists' 已被弃用。文档建议在原处使用 'Collection.has'。

如果您有 Guild 对象,您可以使用 Guild.member() 方法。

let guild = client.guilds.get('guild ID here'),
  USER_ID = '123123123';

if (guild.member(USER_ID)) {
  // there is a GuildMember with that ID
}

guild.member(USER_ID) - 是遗留语法

如果以上方法对您不起作用,可能是您使用的是 discord.js v12,所以您必须这样做:

let guild = client.guilds.get('guild ID here'),
  USER_ID = '123123123';

if (guild.member.fetch(USER_ID)) {
  // there is a GuildMember with that ID
}

请注意,fetch() 是一个异步函数,它 return 是 'promise'。上面的代码足以检查用户是否是公会的成员,但是如果你想读取 guild.member.fetch(USER_ID) 的 return 值,那么你必须执行以下操作

guild.members.fetch(usrID) 
 .then((data) => console.log(data));