我对此很陌生,但是我有这个
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.log上时,我得到undefined
。如何获得刚刚发消息的用户的角色。我在网上查看了所有示例,感觉它们都在.get
方法可以使用的旧API上。
答案 0 :(得分:2)
您无需在线参考示例。只需阅读documentation-开发人员就花费了大量精力编写它来有效地回答这些确切的问题。
您正在寻找“刚刚发送消息的用户的角色”。您可以通过msg.author
或msg.member
属性获取刚刚发送消息的用户。不知道有什么更好的选择,您可以简单地在这两个属性上check the docs来查看可以从中获得的收益。在这种情况下,您需要用户的行会专用数据,因此您需要该行会的GuildMember
对象-即msg.member
。
看着docs for GuildMember
,您可以观察到所有可以访问的属性。那里有一个GuildMemberRoleManager
类型的roles
属性。该类型具有一个.cache
属性,其中包含您的缓存角色集合。
将所有内容放在一起,您将得到:msg.member.roles.cache
。这是一个集合,因此您可以通过集合支持的任何方式(for..of
,.forEach()
等)对其进行迭代。
答案 1 :(得分:0)
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);