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

时间:2018-11-13 10:21:37

标签: javascript node.js discord discord.js

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

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

有没有办法做到这一点?

4 个答案:

答案 0 :(得分:1)

如果有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
}

答案 1 :(得分:0)

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

您可以使用Array#includes检查数组是否包含指定的对象,或者在这种情况下为您的成员ID。

答案 2 :(得分:0)

这与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”。

答案 3 :(得分:0)

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() 是一个异步函数,它返回一个“承诺”。上面的代码足以检查用户是否是公会成员,但如果您想读取 guild.member.fetch(USER_ID) 的返回值,则必须执行以下操作

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