Add modify guild member profile route
This commit is contained in:
parent
29e0b0e90c
commit
050be7b142
|
@ -9,7 +9,8 @@ use crate::instance::ChorusUser;
|
|||
use crate::ratelimiter::ChorusRequest;
|
||||
use crate::types::{
|
||||
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildMember,
|
||||
GuildMemberSearchSchema, GuildModifySchema, GuildPreview, ModifyGuildMemberSchema,
|
||||
GuildMemberSearchSchema, GuildModifySchema, GuildPreview, ModifyGuildMemberProfileSchema,
|
||||
ModifyGuildMemberSchema, UserProfileMetadata,
|
||||
};
|
||||
use crate::types::{GuildBan, Snowflake};
|
||||
|
||||
|
@ -352,6 +353,34 @@ impl Guild {
|
|||
);
|
||||
request.deserialize_response::<GuildMember>(user).await
|
||||
}
|
||||
|
||||
/// Modifies the current user's profile in the guild.
|
||||
///
|
||||
/// # Reference:
|
||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#modify-guild-member-profile>
|
||||
pub async fn modify_member_profile(
|
||||
guild_id: Snowflake,
|
||||
schema: ModifyGuildMemberProfileSchema,
|
||||
user: &mut ChorusUser,
|
||||
) -> ChorusResult<UserProfileMetadata> {
|
||||
let request = ChorusRequest::new(
|
||||
http::Method::PATCH,
|
||||
format!(
|
||||
"{}/guilds/{}/profile/@me",
|
||||
user.belongs_to.borrow().urls.api,
|
||||
guild_id,
|
||||
)
|
||||
.as_str(),
|
||||
Some(to_string(&schema).unwrap()),
|
||||
None,
|
||||
None,
|
||||
Some(user),
|
||||
LimitType::Guild(guild_id),
|
||||
);
|
||||
request
|
||||
.deserialize_response::<UserProfileMetadata>(user)
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
impl Channel {
|
||||
|
|
|
@ -7,6 +7,8 @@ use std::fmt::Debug;
|
|||
use crate::gateway::{GatewayHandle, Updateable};
|
||||
use crate::types::{utils::Snowflake, Composite};
|
||||
|
||||
use super::Emoji;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
|
||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||
pub struct UserData {
|
||||
|
@ -120,3 +122,15 @@ bitflags::bitflags! {
|
|||
const BOT_HTTP_INTERACTIONS = 1 << 19;
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, PartialOrd, Eq, Ord)]
|
||||
pub struct UserProfileMetadata {
|
||||
pub guild_id: Option<Snowflake>,
|
||||
pub pronouns: String,
|
||||
pub bio: Option<String>,
|
||||
pub banner: Option<String>,
|
||||
pub accent_color: Option<i32>,
|
||||
pub theme_colors: Option<Vec<i32>>,
|
||||
pub popout_animation_particle_type: Option<Snowflake>,
|
||||
pub emoji: Option<Emoji>,
|
||||
}
|
||||
|
|
|
@ -144,3 +144,14 @@ pub struct ModifyCurrentGuildMemberSchema {
|
|||
pub bio: Option<String>,
|
||||
pub banner: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, PartialOrd, Eq, Ord)]
|
||||
pub struct ModifyGuildMemberProfileSchema {
|
||||
pub pronouns: Option<String>,
|
||||
pub bio: Option<String>,
|
||||
pub banner: Option<String>,
|
||||
pub accent_color: Option<String>,
|
||||
pub theme_colors: Option<Vec<i32>>,
|
||||
pub popout_animation_particle_type: Option<Snowflake>,
|
||||
pub emoji_id: Option<Snowflake>,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue