Add modify_member route
This commit is contained in:
parent
ae0ca42b7a
commit
b1c352957e
|
@ -9,7 +9,7 @@ use crate::instance::ChorusUser;
|
|||
use crate::ratelimiter::ChorusRequest;
|
||||
use crate::types::{
|
||||
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildMember,
|
||||
GuildMemberSearchSchema, GuildModifySchema, GuildPreview,
|
||||
GuildMemberSearchSchema, GuildModifySchema, GuildPreview, ModifyGuildMemberSchema,
|
||||
};
|
||||
use crate::types::{GuildBan, Snowflake};
|
||||
|
||||
|
@ -295,6 +295,36 @@ impl Guild {
|
|||
);
|
||||
request.handle_request_as_result(user).await
|
||||
}
|
||||
|
||||
/// Modifies attributes of a guild member. Returns the updated guild member object on success.
|
||||
/// For required Permissions and an API reference, see:
|
||||
///
|
||||
/// # Reference:
|
||||
/// <https://discord-userdoccers.vercel.app/resources/guild#modify-guild-member>
|
||||
pub async fn modify_member(
|
||||
guild_id: Snowflake,
|
||||
member_id: Snowflake,
|
||||
schema: ModifyGuildMemberSchema,
|
||||
audit_log_reason: Option<String>,
|
||||
user: &mut ChorusUser,
|
||||
) -> ChorusResult<()> {
|
||||
let request = ChorusRequest::new(
|
||||
http::Method::PATCH,
|
||||
format!(
|
||||
"{}/guilds/{}/members/{}",
|
||||
user.belongs_to.borrow().urls.api,
|
||||
guild_id,
|
||||
member_id,
|
||||
)
|
||||
.as_str(),
|
||||
Some(to_string(&schema).unwrap()),
|
||||
audit_log_reason.as_deref(),
|
||||
None,
|
||||
Some(user),
|
||||
LimitType::Guild(guild_id),
|
||||
);
|
||||
request.handle_request_as_result(user).await
|
||||
}
|
||||
}
|
||||
|
||||
impl Channel {
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use bitflags::bitflags;
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::entities::Channel;
|
||||
|
@ -106,3 +108,31 @@ impl Default for GuildMemberSearchSchema {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct ModifyGuildMemberSchema {
|
||||
pub nick: Option<String>,
|
||||
pub roles: Option<Vec<Snowflake>>,
|
||||
pub mute: Option<bool>,
|
||||
pub deaf: Option<bool>,
|
||||
pub channel_id: Option<Snowflake>,
|
||||
pub communication_disabled_until: Option<DateTime<Utc>>,
|
||||
pub flags: Option<GuildMemberFlags>,
|
||||
}
|
||||
|
||||
bitflags! {
|
||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord)]
|
||||
/// Represents the flags of a Guild Member.
|
||||
///
|
||||
/// # Reference:
|
||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#guild-member-flags>
|
||||
pub struct GuildMemberFlags: u64 {
|
||||
const DID_REJOIN = 1 << 0;
|
||||
const COMPLETED_ONBOARDING = 1 << 1;
|
||||
const BYPASSES_VERIFICATION = 1 << 2;
|
||||
const STARTED_ONBOARDING = 1 << 3;
|
||||
const GUEST = 1 << 3;
|
||||
const AUTOMOD_QUARANTINED_NAME = 1 << 7;
|
||||
const AUTOMOD_QUARANTINED_BIO = 1 << 8;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue