Add modify_current_member route

This commit is contained in:
bitfl0wer 2023-08-25 16:54:41 +02:00
parent 7b55590fd0
commit cce5b507bc
2 changed files with 38 additions and 3 deletions

View File

@ -307,7 +307,7 @@ impl Guild {
schema: ModifyGuildMemberSchema,
audit_log_reason: Option<String>,
user: &mut ChorusUser,
) -> ChorusResult<()> {
) -> ChorusResult<GuildMember> {
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::<GuildMember>(user).await
}
/// Modifies the current user's member in the guild.
///
/// # Reference:
/// See <https://discord-userdoccers.vercel.app/resources/guild#modify-current-guild-member>
pub async fn modify_current_member(
guild_id: Snowflake,
schema: ModifyGuildMemberSchema,
audit_log_reason: Option<String>,
user: &mut ChorusUser,
) -> ChorusResult<GuildMember> {
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::<GuildMember>(user).await
}
}

View File

@ -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<String>,
pub roles: Option<Vec<Snowflake>>,
@ -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<String>,
pub avatar: Option<String>,
pub bio: Option<String>,
pub banner: Option<String>,
}