我正在执行一条命令,向用户提供嵌入状态的统计信息。我希望嵌入而不是每个人都使用相同的颜色,而是将其作为服务器上用户的当前颜色(如角色给定的颜色)。有什么办法吗?
我的代码:
let embed = new Discord.RichEmbed()
.setAuthor(message.author.username, message.author.displayAvatarURL)
.setColor('USER COLOR HERE')
.addField('XP:', userXp, true)
.addField('XP Reserve:', userXpReserve, true)
.addField('Rank:', "working on this part", false)
.setFooter(message.author.tag)
message.channel.send(embed);
我希望.setColor('USER COLOR HERE')
是使用该命令的用户的颜色。
答案 0 :(得分:1)
GuildMember具有.displayHexColor
属性,因此
Unnamed A B C D
Unnamed 1 0.05 0.05 0.05 0.05
A 0.05 1 0.99 0.99 0.99
B 0.05 0.99 1 0.99 0.99
C 0.05 0.99 0.99 1 0.99
D 0.05 0.99 0.99 0.99 1
会工作。如果您不希望角色没有颜色(例如@everyone或不可见的管理员角色),请检查颜色是否等于([unnamed, unnamed], 1)
([unnamed, A], 0.05)
([unnamed, B], 0.05)
([unnamed, C], 0.05)
([unnamed, D], 0.05
([A, unnamed], 0.05)
([A,A], 1)
([A,B], 0.99)
([A,C], 0.99)
([A,D], 0.99)
.
.
.
([D,Unnamed], 0.05)
([D,A], 0.99)
([D,B], 0.99)
([D,C], 0.99)
([D,D], 1)
。在这种情况下,通常.hoistRole
将具有颜色。 .setColor(message.member.displayHexColor)
是将成员放在成员列表中单独类别中的角色。
#000000
答案 1 :(得分:0)
message.member.colorRole.color
这定义了角色的颜色,该角色定义了用户的颜色
答案 2 :(得分:-1)
在 2021 年,我使用以下代码:
function check_color ( message ) {
if ( message.member ) {
var role = message.member.roles.color
if ( ! role ) return "#ffffff"
else return role.hexColor
} else return = "#ffffff"
}
首先通过查看成员是否定义来判断消息是否来自公会,如果是,则获取负责颜色的角色。 如文档所示:
GuildMemberRoleManager
.color [READ-ONLY]
| The role of the member used to set their color
| Type: (Role)
如果没有角色,则返回白色。如果消息是DM,也返回白色。
编辑:
为什么不使用 GuildMember#displayColor
?
如果用户没有角色,则返回黑色。 并检查,如果颜色是黑色,然后将其变成白色在我看来不是一个好主意,因为它会扼杀角色实际上是黑色的可能性