【问题标题】:Is there a way to gather roles from a Private Message?有没有办法从私人消息中收集角色?
【发布时间】:2018-03-10 21:16:25
【问题描述】:

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

有谁知道如何在特定的公会中搜索消息成员的 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!);
  }
});

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    为此,您需要公会 ID。您可以让用户提及公会 ID 或将其存储在某处。否则,您可以让用户提及公会的名称。

    然后,使用Client.Guilds 获取您的机器人连接到的公会列表,它返回一个Collection<Snowflake, Guilds>。您可以遍历它或使用find() 方法。
    请注意,如果您是根据公会的名称进行查找的,那么您还有一个额外的步骤来与集合中的每个公会的名称进行比较。
    (如果你在循环,如果你的机器人连接到很多公会,任务会更长。另外,你可以检查Client.Guilds属性here。)

    一旦你有了公会,只需获取你想要的人的 GuildMember 属性。只需执行Guild.member(message.author),它就会返回一个 GuildMember,该 GuildMember 具有与刚刚向您发送消息的人相似的属性,这次也具有与公会相关的属性。

    从那里,您可以使用GuildMember.roles 访问该人的所有公会角色,或者如果您只想检查他是否具有特定权限,则存在GuildMember.hasPermission() 方法。
    (关于GuildMember的文档是here。)

    【讨论】:

    • 感谢您的详细回复!我仍在学习自己,这个答案有助于我理解这个过程。该机器人仅在 1 个服务器中运行,但我不知道从哪里开始,而且我发现 discord.js.org 不是很有用.. 或者我只是不知道如何阅读它的信息?如果你有兴趣,你能帮我了解一下设置的过程吗?我想学习如何做到这一点
    • @TheBloodSeeker005 我很乐意提供帮助(您可以给我发电子邮件或其他什么,只需查看我的个人资料以获取我的电子邮件地址)。顺便说一下,discord.JS 文档中有示例,它带有代码注释。如果你不理解这些例子,我强烈建议你先了解更多关于 javascript 的知识。 (主要是异步)
    • 好的,我会发邮件给你。也许我只是找不到例子
    猜你喜欢
    • 2019-11-25
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多