@@ -12,7 +12,7 @@ use crate::http::{CacheHttp, Http};
1212use crate :: internal:: prelude:: * ;
1313use crate :: model:: prelude:: * ;
1414#[ cfg( feature = "model" ) ]
15- use crate :: model:: utils:: avatar_url;
15+ use crate :: model:: utils:: { avatar_url, user_banner_url } ;
1616
1717/// Information about a member of a guild.
1818///
@@ -28,8 +28,10 @@ pub struct Member {
2828 ///
2929 /// Can't be longer than 32 characters.
3030 pub nick : Option < String > ,
31- /// The guild avatar hash
31+ /// The member's guild avatar hash
3232 pub avatar : Option < ImageHash > ,
33+ /// The member's guild banner hash
34+ pub banner : Option < ImageHash > ,
3335 /// Vector of Ids of [`Role`]s given to the member.
3436 pub roles : Vec < RoleId > ,
3537 /// Timestamp representing the date when the member joined.
@@ -530,6 +532,14 @@ impl Member {
530532 avatar_url ( Some ( self . guild_id ) , self . user . id , self . avatar . as_ref ( ) )
531533 }
532534
535+ /// Returns the formatted URL of the member's per guild banner, if one exists.
536+ ///
537+ /// This will produce a WEBP image URL, or GIF if the member has a GIF avatar.
538+ #[ must_use]
539+ pub fn banner_url ( & self ) -> Option < String > {
540+ user_banner_url ( Some ( self . guild_id ) , self . user . id , self . banner . as_ref ( ) )
541+ }
542+
533543 /// Retrieves the URL to the current member's avatar, falling back to the user's avatar, then
534544 /// default avatar if needed.
535545 ///
@@ -609,8 +619,10 @@ pub struct PartialMember {
609619 ///
610620 /// Will be None or a time in the past if the user is not flagged.
611621 pub unusual_dm_activity_until : Option < Timestamp > ,
612- /// The guild avatar hash
622+ /// The member's guild avatar hash
613623 pub avatar : Option < ImageHash > ,
624+ /// The member's guild banner hash
625+ pub banner : Option < ImageHash > ,
614626}
615627
616628impl From < PartialMember > for Member {
@@ -619,6 +631,7 @@ impl From<PartialMember> for Member {
619631 user : partial. user . unwrap_or_default ( ) ,
620632 nick : partial. nick ,
621633 avatar : partial. avatar ,
634+ banner : partial. banner ,
622635 roles : partial. roles ,
623636 joined_at : partial. joined_at ,
624637 premium_since : partial. premium_since ,
@@ -649,6 +662,7 @@ impl From<Member> for PartialMember {
649662 permissions : member. permissions ,
650663 unusual_dm_activity_until : member. unusual_dm_activity_until ,
651664 avatar : member. avatar ,
665+ banner : member. banner ,
652666 }
653667 }
654668}
0 commit comments