[英]How to get the roles of user who messaged in 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 它时,我得到undefined
。 如何获取刚刚发送消息的用户的角色。 我在网上查看了所有示例,感觉它们在使用.get
方法的旧 API 上。
您无需参考在线示例。 只需阅读文档- 开发人员花了很多精力编写它来有效地回答这些确切的问题。
您正在寻找“刚刚发送消息的用户的角色”。 您可以通过msg.author
或msg.member
属性获取刚刚发送消息的用户。 不知道更好,你可以简单地检查这两个属性的文档,看看你能从它们中得到什么。 在这种情况下,您需要用户的公会特定数据,因此您需要他们的GuildMember
对象用于该公会 - 即msg.member
。
查看GuildMember
的文档,您可以观察到您可以访问的所有属性。 那里有一个roles
属性,它是GuildMemberRoleManager
类型。 该类型具有.cache
属性,其中包含您的缓存角色集合。
把它们放在一起你会得到这个: msg.member.roles.cache
。 这是一个集合,因此您可以通过集合( for..of
、 .forEach()
等)支持的任何方式对其进行迭代。
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 => {
for(var role of msg.member.roles.cache) {
console.log("id:", role[0], "name:", role[1].name);
}
if (msg.content === 'ping') {
msg.reply('Pong!');
}
});
client.login(auth.token);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.