@@ -133,6 +133,20 @@ class GuildMember extends Base {
133133 } else {
134134 this . flags ??= new GuildMemberFlagsBitField ( ) . freeze ( ) ;
135135 }
136+
137+ if ( data . avatar_decoration_data ) {
138+ /**
139+ * The member avatar decoration's data
140+ *
141+ * @type {?AvatarDecorationData }
142+ */
143+ this . avatarDecorationData = {
144+ asset : data . avatar_decoration_data . asset ,
145+ skuId : data . avatar_decoration_data . sku_id ,
146+ } ;
147+ } else {
148+ this . avatarDecorationData = null ;
149+ }
136150 }
137151
138152 _clone ( ) {
@@ -181,6 +195,15 @@ class GuildMember extends Base {
181195 return this . avatar && this . client . rest . cdn . guildMemberAvatar ( this . guild . id , this . id , this . avatar , options ) ;
182196 }
183197
198+ /**
199+ * A link to the member's avatar decoration.
200+ *
201+ * @returns {?string }
202+ */
203+ avatarDecorationURL ( ) {
204+ return this . avatarDecorationData ? this . client . rest . cdn . avatarDecoration ( this . avatarDecorationData . asset ) : null ;
205+ }
206+
184207 /**
185208 * A link to the member's banner.
186209 *
@@ -213,6 +236,16 @@ class GuildMember extends Base {
213236 return this . bannerURL ( options ) ?? this . user . bannerURL ( options ) ;
214237 }
215238
239+ /**
240+ * A link to the member's guild avatar decoration if they have one.
241+ * Otherwise, a link to their {@link User#avatarDecorationURL} will be returned.
242+ *
243+ * @returns {?string }
244+ */
245+ displayAvatarDecorationURL ( ) {
246+ return this . avatarDecorationURL ( ) ?? this . user . avatarDecorationURL ( ) ;
247+ }
248+
216249 /**
217250 * The time this member joined the guild
218251 *
@@ -560,7 +593,9 @@ class GuildMember extends Base {
560593 this . flags . bitfield === member . flags . bitfield &&
561594 ( this . _roles === member . _roles ||
562595 ( this . _roles . length === member . _roles . length &&
563- this . _roles . every ( ( role , index ) => role === member . _roles [ index ] ) ) )
596+ this . _roles . every ( ( role , index ) => role === member . _roles [ index ] ) ) ) &&
597+ this . avatarDecorationData ?. asset === member . avatarDecorationData ?. asset &&
598+ this . avatarDecorationData ?. skuId === member . avatarDecorationData ?. skuId
564599 ) ;
565600 }
566601
@@ -587,6 +622,7 @@ class GuildMember extends Base {
587622 json . bannerURL = this . bannerURL ( ) ;
588623 json . displayAvatarURL = this . displayAvatarURL ( ) ;
589624 json . displayBannerURL = this . displayBannerURL ( ) ;
625+ json . avatarDecorationURL = this . avatarDecorationURL ( ) ;
590626 return json ;
591627 }
592628}
0 commit comments