#[non_exhaustive]pub struct Member {Show 14 fields
    pub user: User,
    pub nick: Option<String>,
    pub avatar: Option<ImageHash>,
    pub roles: Vec<RoleId>,
    pub joined_at: Option<Timestamp>,
    pub premium_since: Option<Timestamp>,
    pub deaf: bool,
    pub mute: bool,
    pub flags: GuildMemberFlags,
    pub pending: bool,
    pub permissions: Option<Permissions>,
    pub communication_disabled_until: Option<Timestamp>,
    pub guild_id: GuildId,
    pub unusual_dm_activity_until: Option<Timestamp>,
}Expand description
Information about a member of a guild.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.user: UserAttached User struct.
nick: Option<String>The member’s nickname, if present.
Can’t be longer than 32 characters.
avatar: Option<ImageHash>The guild avatar hash
roles: Vec<RoleId>Vector of Ids of Roles given to the member.
joined_at: Option<Timestamp>Timestamp representing the date when the member joined.
Timestamp representing the date since the member is boosting the guild.
deaf: boolIndicator of whether the member can hear in voice channels.
mute: boolIndicator of whether the member can speak in voice channels.
flags: GuildMemberFlagsGuild member flags.
pending: boolIndicator that the member hasn’t accepted the rules of the guild yet.
permissions: Option<Permissions>The total permissions of the member in a channel, including overrides.
This is only Some when returned in an Interaction object.
communication_disabled_until: Option<Timestamp>When the user’s timeout will expire and the user will be able to communicate in the guild again.
Will be None or a time in the past if the user is not timed out.
guild_id: GuildIdThe unique Id of the guild that the member is a part of.
unusual_dm_activity_until: Option<Timestamp>If the member is currently flagged for sending excessive DMs to non-friend server members in the last 24 hours.
Will be None or a time in the past if the user is not flagged.
Implementations§
Source§impl Member
 
impl Member
Sourcepub async fn add_role(
    &self,
    http: impl AsRef<Http>,
    role_id: impl Into<RoleId>,
) -> Result<()>
 
pub async fn add_role( &self, http: impl AsRef<Http>, role_id: impl Into<RoleId>, ) -> Result<()>
Adds a Role to the member.
Note: Requires the Manage Roles permission.
§Errors
Returns Error::Http if the current user lacks permission, or if a role with the given
Id does not exist.
Sourcepub async fn add_roles(
    &self,
    http: impl AsRef<Http>,
    role_ids: &[RoleId],
) -> Result<()>
 
pub async fn add_roles( &self, http: impl AsRef<Http>, role_ids: &[RoleId], ) -> Result<()>
Adds one or multiple Roles to the member.
Note: Requires the Manage Roles permission.
§Errors
Returns Error::Http if the current user lacks permission, or if a role with a given Id
does not exist.
Sourcepub async fn ban(&self, http: impl AsRef<Http>, dmd: u8) -> Result<()>
 
pub async fn ban(&self, http: impl AsRef<Http>, dmd: u8) -> Result<()>
Ban a User from the guild, deleting a number of days’ worth of messages (dmd) between
the range 0 and 7.
Note: Requires the Ban Members permission.
§Errors
Returns a ModelError::DeleteMessageDaysAmount if the dmd is greater than 7. Can also
return Error::Http if the current user lacks permission to ban this member.
Sourcepub async fn ban_with_reason(
    &self,
    http: impl AsRef<Http>,
    dmd: u8,
    reason: impl AsRef<str>,
) -> Result<()>
 
pub async fn ban_with_reason( &self, http: impl AsRef<Http>, dmd: u8, reason: impl AsRef<str>, ) -> Result<()>
Ban the member from the guild with a reason. Refer to Self::ban to further
documentation.
§Errors
In addition to the errors Self::ban may return, can also return
Error::ExceededLimit if the length of the reason is greater than 512.
Sourcepub fn colour(&self, cache: impl AsRef<Cache>) -> Option<Colour>
 
pub fn colour(&self, cache: impl AsRef<Cache>) -> Option<Colour>
Determines the member’s colour.
Sourcepub fn default_channel(&self, cache: impl AsRef<Cache>) -> Option<GuildChannel>
 
pub fn default_channel(&self, cache: impl AsRef<Cache>) -> Option<GuildChannel>
Returns the “default channel” of the guild for the member. (This returns the first channel
that can be read by the member, if there isn’t one returns None)
Sourcepub async fn disable_communication_until_datetime(
    &mut self,
    cache_http: impl CacheHttp,
    time: Timestamp,
) -> Result<()>
 
pub async fn disable_communication_until_datetime( &mut self, cache_http: impl CacheHttp, time: Timestamp, ) -> Result<()>
Times the user out until time.
Requires the Moderate Members permission.
Note: Moderate Members: crate::model::permission::Permissions::MODERATE_MEMBERS
§Errors
Returns Error::Http if the current user lacks permission or if time is greater than
28 days from the current time.
Sourcepub fn display_name(&self) -> &str
 
pub fn display_name(&self) -> &str
Calculates the member’s display name.
The nickname takes priority over the member’s username if it exists.
Sourcepub fn distinct(&self) -> String
 
pub fn distinct(&self) -> String
Returns the DiscordTag of a Member, taking possible nickname into account.
Sourcepub async fn edit(
    &mut self,
    cache_http: impl CacheHttp,
    builder: EditMember<'_>,
) -> Result<()>
 
pub async fn edit( &mut self, cache_http: impl CacheHttp, builder: EditMember<'_>, ) -> Result<()>
Edits the member in place with the given data.
See EditMember for the permission(s) required for separate builder methods, as well as
usage of this.
§Examples
See GuildId::edit_member for details.
§Errors
Returns Error::Http if the current user lacks necessary permissions.
Sourcepub async fn enable_communication(
    &mut self,
    cache_http: impl CacheHttp,
) -> Result<()>
 
pub async fn enable_communication( &mut self, cache_http: impl CacheHttp, ) -> Result<()>
Allow a user to communicate, removing their timeout, if there is one.
Note: Requires the Moderate Members permission.
§Errors
Returns Error::Http if the current user lacks permission.
Sourcepub fn highest_role_info(
    &self,
    cache: impl AsRef<Cache>,
) -> Option<(RoleId, u16)>
 👎Deprecated: Use Guild::member_highest_role
pub fn highest_role_info( &self, cache: impl AsRef<Cache>, ) -> Option<(RoleId, u16)>
Retrieves the ID and position of the member’s highest role in the hierarchy, if they have one.
This may return None if the user has roles, but they are not present in the cache for
cache inconsistency reasons.
The “highest role in hierarchy” is defined as the role with the highest position. If two or more roles have the same highest position, then the role with the lowest ID is the highest.
Sourcepub async fn kick(&self, cache_http: impl CacheHttp) -> Result<()>
 
pub async fn kick(&self, cache_http: impl CacheHttp) -> Result<()>
Kick the member from the guild.
Note: Requires the Kick Members permission.
§Examples
Kick a member from its guild:
// assuming a `member` has already been bound
match member.kick().await {
    Ok(()) => println!("Successfully kicked member"),
    Err(Error::Model(ModelError::GuildNotFound)) => {
        println!("Couldn't determine guild of member");
    },
    Err(Error::Model(ModelError::InvalidPermissions(missing_perms))) => {
        println!("Didn't have permissions; missing: {:?}", missing_perms);
    },
    _ => {},
}§Errors
Returns a ModelError::GuildNotFound if the Id of the member’s guild could not be
determined.
If the cache is enabled, returns a ModelError::InvalidPermissions if the current user
does not have permission to perform the kick.
Otherwise will return Error::Http if the current user lacks permission.
Sourcepub async fn kick_with_reason(
    &self,
    cache_http: impl CacheHttp,
    reason: &str,
) -> Result<()>
 
pub async fn kick_with_reason( &self, cache_http: impl CacheHttp, reason: &str, ) -> Result<()>
Kicks the member from the guild, with a reason.
Note: Requires the Kick Members permission.
§Examples
Kicks a member from it’s guild, with an optional reason:
match member.kick(&ctx.http, "A Reason").await {
    Ok(()) => println!("Successfully kicked member"),
    Err(Error::Model(ModelError::GuildNotFound)) => {
        println!("Couldn't determine guild of member");
    },
    Err(Error::Model(ModelError::InvalidPermissions(missing_perms))) => {
        println!("Didn't have permissions; missing: {:?}", missing_perms);
    },
    _ => {},
}§Errors
In addition to the reasons Self::kick may return an error, can also return an error if
the given reason is too long.
Sourcepub async fn move_to_voice_channel(
    &self,
    cache_http: impl CacheHttp,
    channel: impl Into<ChannelId>,
) -> Result<Member>
 
pub async fn move_to_voice_channel( &self, cache_http: impl CacheHttp, channel: impl Into<ChannelId>, ) -> Result<Member>
Moves the member to a voice channel.
Requires the Move Members permission.
§Errors
Returns Error::Http if the member is not currently in a voice channel, or if the
current user lacks permission.
Sourcepub async fn disconnect_from_voice(
    &self,
    cache_http: impl CacheHttp,
) -> Result<Member>
 
pub async fn disconnect_from_voice( &self, cache_http: impl CacheHttp, ) -> Result<Member>
Disconnects the member from their voice channel if any.
Requires the Move Members permission.
§Errors
Returns Error::Http if the member is not currently in a voice channel, or if the
current user lacks permission.
Sourcepub fn permissions(&self, cache: impl AsRef<Cache>) -> Result<Permissions>
 👎Deprecated: Use Guild::member_permissions_in, as this doesn’t consider permission overwrites
pub fn permissions(&self, cache: impl AsRef<Cache>) -> Result<Permissions>
Returns the guild-level permissions for the member.
§Examples
// assuming there's a `member` variable gotten from anything.
println!("The permission bits for the member are: {}",
member.permissions(&cache).expect("permissions").bits());§Errors
Returns a ModelError::GuildNotFound if the guild the member’s in could not be
found in the cache.
And/or returns ModelError::ItemMissing if the “default channel” of the guild is not
found.
Sourcepub async fn remove_role(
    &self,
    http: impl AsRef<Http>,
    role_id: impl Into<RoleId>,
) -> Result<()>
 
pub async fn remove_role( &self, http: impl AsRef<Http>, role_id: impl Into<RoleId>, ) -> Result<()>
Removes a Role from the member.
Note: Requires the Manage Roles permission.
§Errors
Returns Error::Http if a role with the given Id does not exist, or if the current user
lacks permission.
Sourcepub async fn remove_roles(
    &self,
    http: impl AsRef<Http>,
    role_ids: &[RoleId],
) -> Result<()>
 
pub async fn remove_roles( &self, http: impl AsRef<Http>, role_ids: &[RoleId], ) -> Result<()>
Removes one or multiple Roles from the member.
Note: Requires the Manage Roles permission.
§Errors
Returns Error::Http if a role with a given Id does not exist, or if the current user
lacks permission.
Sourcepub fn roles(&self, cache: impl AsRef<Cache>) -> Option<Vec<Role>>
 
pub fn roles(&self, cache: impl AsRef<Cache>) -> Option<Vec<Role>>
Retrieves the full role data for the user’s roles.
This is shorthand for manually searching through the Cache.
If role data can not be found for the member, then None is returned.
Sourcepub async fn unban(&self, http: impl AsRef<Http>) -> Result<()>
 
pub async fn unban(&self, http: impl AsRef<Http>) -> Result<()>
Unbans the User from the guild.
Note: Requires the Ban Members permission.
§Errors
If the cache is enabled, returns a ModelError::InvalidPermissions if the current user
does not have permission to perform bans.
Sourcepub fn avatar_url(&self) -> Option<String>
 
pub fn avatar_url(&self) -> Option<String>
Returns the formatted URL of the member’s per guild avatar, if one exists.
This will produce a WEBP image URL, or GIF if the member has a GIF avatar.
Sourcepub fn face(&self) -> String
 
pub fn face(&self) -> String
Retrieves the URL to the current member’s avatar, falling back to the user’s avatar, then default avatar if needed.
This will call Self::avatar_url first, and if that returns None, it then falls back
to User::face().
Trait Implementations§
Source§impl ArgumentConvert for Member
Look up a guild member by a string case-insensitively.
 
impl ArgumentConvert for Member
Look up a guild member by a string case-insensitively.
Requires the cache feature to be enabled.
The lookup strategy is as follows (in order):
- Lookup by ID.
 - Lookup by mention.
 - Lookup by name#discrim.
 - Lookup by name
 - Lookup by nickname
 
Source§type Err = MemberParseError
 
type Err = MemberParseError
Source§fn convert<'life0, 'async_trait>(
    ctx: impl 'async_trait + CacheHttp,
    guild_id: Option<GuildId>,
    _channel_id: Option<ChannelId>,
    s: &'life0 str,
) -> Pin<Box<dyn Future<Output = Result<Self, Self::Err>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn convert<'life0, 'async_trait>(
    ctx: impl 'async_trait + CacheHttp,
    guild_id: Option<GuildId>,
    _channel_id: Option<ChannelId>,
    s: &'life0 str,
) -> Pin<Box<dyn Future<Output = Result<Self, Self::Err>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
s as a command parameter of this type.