瀏覽代碼

feat: Add Guild Member Cover & Accent Color support (#1117)

* feat: add field to struct

* feat(user): Add Banner support

* Update user.go

Co-authored-by: Fedor Lapshin <fe.lap.prog@gmail.com>

* Update user.go

Co-authored-by: Fedor Lapshin <fe.lap.prog@gmail.com>

* docs(banner): Replace all cover word with banner

* docs(banner): Remove link on image formatting on banner

* Update util.go

Co-authored-by: Fedor Lapshin <fe.lap.prog@gmail.com>

* feat(structs#Member): removed BannerURL

* fix(user): wording in comment to BannerURL

Co-authored-by: Fedor Lapshin <fe.lap.prog@gmail.com>
42Atomys 2 年之前
父節點
當前提交
df7555c758
共有 3 個文件被更改,包括 35 次插入0 次删除
  1. 6 0
      endpoints.go
  2. 13 0
      user.go
  3. 16 0
      util.go

+ 6 - 0
endpoints.go

@@ -54,6 +54,12 @@ var (
 		uDiscriminatorInt, _ := strconv.Atoi(uDiscriminator)
 		return EndpointCDN + "embed/avatars/" + strconv.Itoa(uDiscriminatorInt%5) + ".png"
 	}
+	EndpointUserBanner = func(uID, cID string) string {
+		return EndpointCDNBanners + uID + "/" + cID + ".png"
+	}
+	EndpointUserBannerAnimated = func(uID, cID string) string {
+		return EndpointCDNBanners + uID + "/" + cID + ".gif"
+	}
 
 	EndpointUserGuilds      = func(uID string) string { return EndpointUsers + uID + "/guilds" }
 	EndpointUserGuild       = func(uID, gID string) string { return EndpointUsers + uID + "/guilds/" + gID }

+ 13 - 0
user.go

@@ -54,6 +54,12 @@ type User struct {
 	// Whether the user has multi-factor authentication enabled.
 	MFAEnabled bool `json:"mfa_enabled"`
 
+	// The hash of the user's banner image.
+	Banner string `json:"banner"`
+
+	// User's banner color, encoded as an integer representation of hexadecimal color code
+	AccentColor int `json:"accent_color"`
+
 	// Whether the user is a bot.
 	Bot bool `json:"bot"`
 
@@ -92,3 +98,10 @@ func (u *User) AvatarURL(size string) string {
 	return avatarURL(u.Avatar, EndpointDefaultUserAvatar(u.Discriminator),
 		EndpointUserAvatar(u.ID, u.Avatar), EndpointUserAvatarAnimated(u.ID, u.Avatar), size)
 }
+
+// BannerURL returns the URL of the users's banner image.
+//    size:    The size of the desired banner image as a power of two
+//             Image size can be any power of two between 16 and 4096.
+func (u *User) BannerURL(size string) string {
+	return bannerURL(u.Banner, EndpointUserBanner(u.ID, u.Banner), EndpointUserBannerAnimated(u.ID, u.Banner), size)
+}

+ 16 - 0
util.go

@@ -92,3 +92,19 @@ func avatarURL(avatarHash, defaultAvatarURL, staticAvatarURL, animatedAvatarURL,
 	}
 	return URL
 }
+
+func bannerURL(bannerHash, staticBannerURL, animatedBannerURL, size string) string {
+	var URL string
+	if bannerHash == "" {
+		return ""
+	} else if strings.HasPrefix(bannerHash, "a_") {
+		URL = animatedBannerURL
+	} else {
+		URL = staticBannerURL
+	}
+
+	if size != "" {
+		return URL + "?size=" + size
+	}
+	return URL
+}