我的机器人无法从私人消息中获得角色!

有谁知道如何在特定行会中搜索消息传递成员的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/

10-11 05:30