Add modify_member route
This commit is contained in:
parent
516a1467fa
commit
7b55590fd0
|
@ -9,7 +9,7 @@ use crate::instance::ChorusUser;
|
||||||
use crate::ratelimiter::ChorusRequest;
|
use crate::ratelimiter::ChorusRequest;
|
||||||
use crate::types::{
|
use crate::types::{
|
||||||
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildMember,
|
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildMember,
|
||||||
GuildMemberSearchSchema, GuildModifySchema, GuildPreview,
|
GuildMemberSearchSchema, GuildModifySchema, GuildPreview, ModifyGuildMemberSchema,
|
||||||
};
|
};
|
||||||
use crate::types::{GuildBan, Snowflake};
|
use crate::types::{GuildBan, Snowflake};
|
||||||
|
|
||||||
|
@ -295,6 +295,36 @@ impl Guild {
|
||||||
);
|
);
|
||||||
request.handle_request_as_result(user).await
|
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 {
|
impl Channel {
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
use bitflags::bitflags;
|
||||||
|
use chrono::{DateTime, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::types::entities::Channel;
|
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