Discordjs 检查用户是不是有角色
Posted
技术标签:
【中文标题】Discordjs 检查用户是不是有角色【英文标题】:Discordjs check if a user has a roleDiscordjs 检查用户是否有角色 【发布时间】:2018-06-10 06:41:19 【问题描述】:我的这段代码运行良好,我只需要检查用户是否有角色,它会记录所有用户,包括他们的 id、鉴别器和用户名 exc。我就是拿不到角色。各位大神能帮忙吗?
client.on('ready', () =>
console.log(`logged in as $client.user.username`);
var Count;
for(Count in client.users.array())
var User = client.users.array()[Count];
if(User.username == "someUsername")
//User.sendMessage("you");
//User.checkRole("Admin");
checkRole()
函数是我自己编造的。我只是需要一些帮助。
client.on('ready', () =>
console.log(`logged in as $client.user.username`);
var Count;
for(Count in client.users.array())
var User = client.users.array()[Count];
if(User.hasRole("Admin"))
console.log(User.username);
)
【问题讨论】:
什么?您不能通过他们的User
对象访问用户的角色。你可以从 guildMember
对象中得到它。如果用户在 3 个服务器中怎么办。你认为他们会在所有 3 中扮演相同的角色吗
这正是我要问的,感谢@Wright 的回答
【参考方案1】:
你可以这样做:
// assuming role.id is an actual ID of a valid role:
if(message.member.roles.has(role.id))
// user has that role
else
//user doesn't have that role
https://anidiotsguide.gitbooks.io/discord-js-bot-guide/information/understanding-roles.html
【讨论】:
问题是,那里的消息变量是什么?我不想在消息中获取用户角色,我想在客户端机器人准备好后立即获取它@DiegoFrancisco @turmuka 你能提供更多代码让我更好地理解吗? 请检查我的新更新,没有message
对象,所以它是未定义的。我知道我可以使用client.on('message', (message))
,但这不是我想做的。我想获得client.on('ready', ())
@DiegoFrancisco 下的用户角色
目前 discord.js 似乎无法在不访问消息的情况下获取用户角色。
@DiegoFrancisco 最后评论不正确。您可以访问公会对象。【参考方案2】:
要访问角色,您必须通过公会访问它,不是用户。 (正如@Wright 所说)
我会使用地图来保存所有公会成员,然后遍历每个成员(这样,当您遇到具有特定角色名称的成员时,您仍然可以访问公会对象(因为它是公会成员对象)
m = client.guilds.map(function (obj)
return obj.members;
);
for (var i = 0; i < m.length; i++)
console.log("\n\nNew Guild: ");
console.log(m[i].map(function (obj)
return obj.guild.name + " , " + obj.user.username + " : " + obj._roles;
).join('\n'));
我得到的输出是(我删掉了用户名):
【讨论】:
嗨,感谢您的回答。有没有办法获取用户的电子邮件?以上是关于Discordjs 检查用户是不是有角色的主要内容,如果未能解决你的问题,请参考以下文章