我的机器人无法从私人消息中获得角色!
有谁知道如何在特定行会中搜索消息传递成员的ID并查看他们是否具有该角色?
这是在PM中不起作用的代码示例:
const Discord = require("Discord.js");
const client = new Discord.Client();
botKey = "---";
adminRole = "---";
bot.login(botKey);
bot.on("ready", () => {
console.log("Bot: Ready!");
});
client.on('message', message => {
if(message.member.roles.has(adminRole)){
console.log(your role is Admin!);
}
});
最佳答案
为此,您需要公会ID。您可以让用户提及行会ID或将其存储在某处。否则,您可以让用户提及行会的名称。
然后,获取您的机器人通过Client.Guilds
连接的行会列表,它返回一个Collection<Snowflake, Guilds>
。您可以遍历它,也可以使用find()
方法。
请注意,如果要根据行会名称进行查找,则需要执行额外的步骤来与集合中的每个行会名称进行比较。
(如果您正在遍历它,则如果您的漫游器连接到许多公会,任务将更长。此外,您还可以检查Client.Guilds
属性here。)
一旦有了公会,只需获取所需人员的GuildMember属性即可。只需执行Guild.member(message.author)
,它将返回一个GuildMember,其属性与刚向您发送消息的人的属性相似,这次也具有与Guild相关的属性。
从那里,您可以使用GuildMember.roles
访问该人的所有公会角色,或者如果您只想检查他是否具有特定的权限,则使用GuildMember.hasPermission()
方法。
(有关GuildMember
的文档为here。)
关于javascript - 有没有办法从私有(private)消息中收集 Angular 色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46480819/