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

Posted

技术标签:

【中文标题】检查 Discord 服务器中是不是存在用户 ID【英文标题】:Check if user ID exists in Discord server检查 Discord 服务器中是否存在用户 ID 【发布时间】:2019-04-16 03:44:02 【问题描述】:

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

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

有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

这与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】:

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

【讨论】:

【参考方案4】:

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));

【讨论】:

以上是关于检查 Discord 服务器中是不是存在用户 ID的主要内容,如果未能解决你的问题,请参考以下文章

Discord.py 知道用户是不是存在于服务器中

Discord.js - 检查用户是不是静音/静音更改

如何检查具有特定角色的成员是不是存在于 discord.js 的特定语音通道中

Discord.js 不检查参数是不是存在

discord.py 如何检查用户是不是在服务器上?

Discord.py, MongoDB 检查用户是不是已经在