Add some more routes
This commit is contained in:
parent
0d93ad8578
commit
516a1467fa
|
@ -8,8 +8,8 @@ use crate::errors::ChorusResult;
|
||||||
use crate::instance::ChorusUser;
|
use crate::instance::ChorusUser;
|
||||||
use crate::ratelimiter::ChorusRequest;
|
use crate::ratelimiter::ChorusRequest;
|
||||||
use crate::types::{
|
use crate::types::{
|
||||||
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema,
|
Channel, ChannelCreateSchema, Guild, GuildBanCreateSchema, GuildCreateSchema, GuildMember,
|
||||||
GuildModifySchema, GuildPreview, MFALevel,
|
GuildMemberSearchSchema, GuildModifySchema, GuildPreview,
|
||||||
};
|
};
|
||||||
use crate::types::{GuildBan, Snowflake};
|
use crate::types::{GuildBan, Snowflake};
|
||||||
|
|
||||||
|
@ -213,6 +213,88 @@ impl Guild {
|
||||||
.await?;
|
.await?;
|
||||||
Ok(response)
|
Ok(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns a list of guild member objects that are members of the guild.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild-members>
|
||||||
|
pub async fn get_members(
|
||||||
|
guild_id: Snowflake,
|
||||||
|
user: &mut ChorusUser,
|
||||||
|
) -> ChorusResult<Vec<GuildMember>> {
|
||||||
|
let request = ChorusRequest::new(
|
||||||
|
http::Method::GET,
|
||||||
|
format!(
|
||||||
|
"{}/guilds/{}/members",
|
||||||
|
user.belongs_to.borrow().urls.api,
|
||||||
|
guild_id,
|
||||||
|
)
|
||||||
|
.as_str(),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
Some(user),
|
||||||
|
LimitType::Guild(guild_id),
|
||||||
|
);
|
||||||
|
request.deserialize_response::<Vec<GuildMember>>(user).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a list of guild member objects whose username or nickname starts with a provided string.
|
||||||
|
///
|
||||||
|
/// # Reference:
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#search-guild-members>
|
||||||
|
pub async fn search_members(
|
||||||
|
guild_id: Snowflake,
|
||||||
|
query: GuildMemberSearchSchema,
|
||||||
|
user: &mut ChorusUser,
|
||||||
|
) -> ChorusResult<Vec<GuildMember>> {
|
||||||
|
let mut request = ChorusRequest::new(
|
||||||
|
http::Method::GET,
|
||||||
|
format!(
|
||||||
|
"{}/guilds/{}/members/search",
|
||||||
|
user.belongs_to.borrow().urls.api,
|
||||||
|
guild_id,
|
||||||
|
)
|
||||||
|
.as_str(),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
Some(user),
|
||||||
|
LimitType::Guild(guild_id),
|
||||||
|
);
|
||||||
|
request.request = request
|
||||||
|
.request
|
||||||
|
.query(&[("query", to_string(&query).unwrap())]);
|
||||||
|
request.deserialize_response::<Vec<GuildMember>>(user).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Removes a member from a guild. Requires the KICK_MEMBERS permission. Returns a 204 empty response on success.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#remove-guild-member>
|
||||||
|
pub async fn remove_member(
|
||||||
|
guild_id: Snowflake,
|
||||||
|
member_id: Snowflake,
|
||||||
|
audit_log_reason: Option<String>,
|
||||||
|
user: &mut ChorusUser,
|
||||||
|
) -> ChorusResult<()> {
|
||||||
|
let request = ChorusRequest::new(
|
||||||
|
http::Method::DELETE,
|
||||||
|
format!(
|
||||||
|
"{}/guilds/{}/members/{}",
|
||||||
|
user.belongs_to.borrow().urls.api,
|
||||||
|
guild_id,
|
||||||
|
member_id,
|
||||||
|
)
|
||||||
|
.as_str(),
|
||||||
|
None,
|
||||||
|
audit_log_reason.as_deref(),
|
||||||
|
None,
|
||||||
|
Some(user),
|
||||||
|
LimitType::Guild(guild_id),
|
||||||
|
);
|
||||||
|
request.handle_request_as_result(user).await
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Channel {
|
impl Channel {
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
use std::default;
|
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::types::entities::Channel;
|
use crate::types::entities::Channel;
|
||||||
|
@ -93,3 +91,18 @@ pub struct GuildPreview {
|
||||||
pub approximate_member_count: u32,
|
pub approximate_member_count: u32,
|
||||||
pub approximate_presence_count: u32,
|
pub approximate_presence_count: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, PartialOrd, Eq, Ord)]
|
||||||
|
pub struct GuildMemberSearchSchema {
|
||||||
|
pub query: String,
|
||||||
|
pub limit: Option<u16>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for GuildMemberSearchSchema {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
query: Default::default(),
|
||||||
|
limit: Some(1),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue