您如何在discord.js中定义用户的颜色?

时间:2018-10-23 03:56:11

标签: javascript node.js discord.js

我正在执行一条命令,向用户提供嵌入状态的统计信息。我希望嵌入而不是每个人都使用相同的颜色,而是将其作为服务器上用户的当前颜色(如角色给定的颜色)。有什么办法吗?

我的代码:

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')是使用该命令的用户的颜色。

3 个答案:

答案 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

如果用户没有角色,则返回黑色。 并检查,如果颜色是黑色,然后将其变成白色在我看来不是一个好主意,因为它会扼杀角色实际上是黑色的可能性