javascript - 如何获取在 Discord.js 中发消息的用户的角色?

标签 javascript node.js discord discord.js

我对此有点陌生,但我有这个

const Discord = require('discord.js');
const auth = require("./auth.json");
const client = new Discord.Client();

client.on('ready', () => {
    console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', msg => {
    console.log(msg.guild.roles.get);
    if (msg.content === 'ping') {
        msg.reply('Pong!');
    }
});

client.login(auth.token);

但是当它console.logs它时,我得到未定义。如何获取刚刚发消息的用户的 Angular 色。我在线查看了所有示例,感觉它们使用的是旧版 API,其中 .get 方法可以正常工作。

最佳答案

您无需引用在线示例。只需阅读documentation - 开发人员花费了大量精力编写它来有效地回答这些确切的问题。

您正在查找“刚刚发送消息的用户的 Angular 色”。您可以通过 msg.authormsg.member 属性获取刚刚发送消息的用户。不知道更好,你可以简单地 check the docs了解这两个属性,看看您能从中得到什么。在本例中,您需要用户的公会特定数据,因此您需要该公会的 GuildMember 对象 - 即 msg.member

查看docs for GuildMember您可以观察您可以访问的所有属性。那里有一个 roles 属性,其类型为 GuildMemberRoleManager 。该类型有一个 .cache 属性,其中包含缓存 Angular 色的集合。

将它们放在一起,您将得到:msg.member.roles.cache。这是一个集合,因此您可以通过集合支持的任何方式对其进行迭代(for..of.forEach() 等)。

关于javascript - 如何获取在 Discord.js 中发消息的用户的角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60745551/

相关文章:

python - Discord.py 狙击命令

javascript - 使用 jQuery 动态更改表中的行跨度

javascript - 使用 Mocha 在 NodeJS 和 MongoDB 中测试用户模型时没有结果

Node.js promise 请求返回

python - Discord 音乐机器人

javascript - Discordjs 我的 react 收集器在我不希望它触发时触发

javascript - Bind() 到动态嵌入的 soundcloud 小部件

javascript - 使用 css transitions 动画 flexbox 的问题

javascript - 给定参与者列表的最大并发 session

node.js - 记录 Mocha 测试错误的响应正文?