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::ratelimiter::ChorusRequest;
|
||||||
use crate::types::{
|
use crate::types::{
|
||||||
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildMember,
|
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildMember,
|
||||||
GuildMemberSearchSchema, GuildModifySchema, GuildPreview, ModifyGuildMemberSchema,
|
GuildMemberSearchSchema, GuildModifySchema, GuildPreview, ModifyGuildMemberProfileSchema,
|
||||||
|
ModifyGuildMemberSchema, UserProfileMetadata,
|
||||||
};
|
};
|
||||||
use crate::types::{GuildBan, Snowflake};
|
use crate::types::{GuildBan, Snowflake};
|
||||||
|
|
||||||
|
@ -352,6 +353,34 @@ impl Guild {
|
||||||
);
|
);
|
||||||
request.deserialize_response::<GuildMember>(user).await
|
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 {
|
impl Channel {
|
||||||
|
|
|
@ -7,6 +7,8 @@ use std::fmt::Debug;
|
||||||
use crate::gateway::{GatewayHandle, Updateable};
|
use crate::gateway::{GatewayHandle, Updateable};
|
||||||
use crate::types::{utils::Snowflake, Composite};
|
use crate::types::{utils::Snowflake, Composite};
|
||||||
|
|
||||||
|
use super::Emoji;
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
|
||||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||||
pub struct UserData {
|
pub struct UserData {
|
||||||
|
@ -120,3 +122,15 @@ bitflags::bitflags! {
|
||||||
const BOT_HTTP_INTERACTIONS = 1 << 19;
|
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 bio: Option<String>,
|
||||||
pub banner: 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