diff --git a/src/api/guilds/guilds.rs b/src/api/guilds/guilds.rs index e2fe66b..547f3cf 100644 --- a/src/api/guilds/guilds.rs +++ b/src/api/guilds/guilds.rs @@ -307,7 +307,7 @@ impl Guild { schema: ModifyGuildMemberSchema, audit_log_reason: Option, user: &mut ChorusUser, - ) -> ChorusResult<()> { + ) -> ChorusResult { let request = ChorusRequest::new( http::Method::PATCH, format!( @@ -323,7 +323,34 @@ impl Guild { Some(user), LimitType::Guild(guild_id), ); - request.handle_request_as_result(user).await + request.deserialize_response::(user).await + } + + /// Modifies the current user's member in the guild. + /// + /// # Reference: + /// See + pub async fn modify_current_member( + guild_id: Snowflake, + schema: ModifyGuildMemberSchema, + audit_log_reason: Option, + user: &mut ChorusUser, + ) -> ChorusResult { + let request = ChorusRequest::new( + http::Method::PATCH, + format!( + "{}/guilds/{}/members/@me", + user.belongs_to.borrow().urls.api, + guild_id, + ) + .as_str(), + Some(to_string(&schema).unwrap()), + audit_log_reason.as_deref(), + None, + Some(user), + LimitType::Guild(guild_id), + ); + request.deserialize_response::(user).await } } diff --git a/src/types/schema/guild.rs b/src/types/schema/guild.rs index 72fbdb3..3f5dcea 100644 --- a/src/types/schema/guild.rs +++ b/src/types/schema/guild.rs @@ -109,7 +109,7 @@ impl Default for GuildMemberSearchSchema { } } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, PartialOrd, Eq, Ord)] pub struct ModifyGuildMemberSchema { pub nick: Option, pub roles: Option>, @@ -136,3 +136,11 @@ bitflags! { const AUTOMOD_QUARANTINED_BIO = 1 << 8; } } + +#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, PartialOrd, Eq, Ord)] +pub struct ModifyCurrentGuildMemberSchema { + pub nick: Option, + pub avatar: Option, + pub bio: Option, + pub banner: Option, +}