【问题标题】:How would you define a user's color in discord.js?您将如何在 discord.js 中定义用户的颜色?
【发布时间】:2019-03-27 05:05:56
【问题描述】:

我正在制作一个命令,该命令向用户提供嵌入内的统计信息。我希望嵌入而不是每个人都使用相同的颜色,而是成为服务器上用户的当前颜色(如角色给出的颜色)。有没有办法做到这一点?

我的代码:

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

【问题讨论】:

  • 从服务器的用户变量中创建一个js变量用户,并在你的主数据库中设置颜色然后在javascript中做user.color,如果你的服务器端没有用户变量,请研究身份验证系统在 node.js 中
  • @user1735921 问题是,我尝试过使用许多不同的 discord.js 变量组合,最后带有.color。它不起作用。

标签: javascript node.js discord.js


【解决方案1】:

GuildMember 有一个 .displayHexColor 属性,因此

.setColor(message.member.displayHexColor)

会起作用的。如果您不想要没有颜色的角色(即@everyone,或不可见的管理员角色),请检查颜色是否等于#000000。如果是这种情况,通常.hoistRole 会有颜色。 .hoistRole 是在成员列表中将成员置于单独类别中的角色。

let color = message.member.displayHexColor;
if (color == '#000000') color = message.member.hoistRole.hexColor;
// Embed
.setColor(color)

【讨论】:

    【解决方案2】:
    message.member.colorRole.color
    

    这定义了角色的颜色,定义了用户的颜色

    【讨论】:

    • 当我在文档中找不到它时证明很有用。
    【解决方案3】:

    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

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

    【讨论】:

    • 或者直接使用GuildMember#displayColor ?
    • @Bqre 不,如果用户没有角色,则返回黑色,但如果角色实际上是黑色,则将黑色变为白色将是错误的
    猜你喜欢
    • 2019-09-23
    • 2010-10-10
    • 2019-01-19
    • 2021-06-28
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    相关资源
    最近更新 更多