Guilds + Channels
This commit is contained in:
parent
ba25cab1e9
commit
1ce9bf08cd
|
@ -12,6 +12,9 @@ use crate::types::{Channel, ChannelCreateSchema, Guild, GuildCreateSchema};
|
||||||
|
|
||||||
impl Guild {
|
impl Guild {
|
||||||
/// Creates a new guild.
|
/// Creates a new guild.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#create-guild>
|
||||||
pub async fn create(
|
pub async fn create(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_create_schema: GuildCreateSchema,
|
guild_create_schema: GuildCreateSchema,
|
||||||
|
@ -41,6 +44,9 @@ impl Guild {
|
||||||
/// Ok(_) => println!("Guild deleted successfully"),
|
/// Ok(_) => println!("Guild deleted successfully"),
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#delete-guild>
|
||||||
pub async fn delete(user: &mut UserMeta, guild_id: Snowflake) -> ChorusResult<()> {
|
pub async fn delete(user: &mut UserMeta, guild_id: Snowflake) -> ChorusResult<()> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/delete/",
|
"{}/guilds/{}/delete/",
|
||||||
|
@ -57,6 +63,14 @@ impl Guild {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new channel in a guild.
|
/// Creates a new channel in a guild.
|
||||||
|
///
|
||||||
|
/// Requires the [MANAGE_CHANNELS](crate::types::PermissionFlags::MANAGE_CHANNELS) permission.
|
||||||
|
///
|
||||||
|
/// # Notes
|
||||||
|
/// This method is a wrapper for [Channel::create].
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#create-guild-channel>
|
||||||
pub async fn create_channel(
|
pub async fn create_channel(
|
||||||
&self,
|
&self,
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
|
@ -65,7 +79,12 @@ impl Guild {
|
||||||
Channel::create(user, self.id, schema).await
|
Channel::create(user, self.id, schema).await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a list of the guild's channels
|
/// Returns a list of the guild's channels.
|
||||||
|
///
|
||||||
|
/// Doesn't include threads.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#get-guild-channels>
|
||||||
pub async fn channels(&self, user: &mut UserMeta) -> ChorusResult<Vec<Channel>> {
|
pub async fn channels(&self, user: &mut UserMeta) -> ChorusResult<Vec<Channel>> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -97,6 +116,9 @@ impl Guild {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Fetches a guild by its id.
|
/// Fetches a guild by its id.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#get-channel>
|
||||||
pub async fn get(guild_id: Snowflake, user: &mut UserMeta) -> ChorusResult<Guild> {
|
pub async fn get(guild_id: Snowflake, user: &mut UserMeta) -> ChorusResult<Guild> {
|
||||||
let chorus_request = ChorusRequest {
|
let chorus_request = ChorusRequest {
|
||||||
request: Client::new()
|
request: Client::new()
|
||||||
|
@ -115,6 +137,11 @@ impl Guild {
|
||||||
|
|
||||||
impl Channel {
|
impl Channel {
|
||||||
/// Creates a new channel in a guild.
|
/// Creates a new channel in a guild.
|
||||||
|
///
|
||||||
|
/// Requires the [MANAGE_CHANNELS](crate::types::PermissionFlags::MANAGE_CHANNELS) permission.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#create-guild-channel>
|
||||||
pub async fn create(
|
pub async fn create(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
|
|
|
@ -10,6 +10,9 @@ use crate::{
|
||||||
|
|
||||||
impl types::GuildMember {
|
impl types::GuildMember {
|
||||||
/// Retrieves a guild member.
|
/// Retrieves a guild member.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild-member>
|
||||||
pub async fn get(
|
pub async fn get(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
|
@ -31,6 +34,9 @@ impl types::GuildMember {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Adds a role to a guild member.
|
/// Adds a role to a guild member.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#add-guild-member-role>
|
||||||
pub async fn add_role(
|
pub async fn add_role(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
|
@ -52,6 +58,9 @@ impl types::GuildMember {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Removes a role from a guild member.
|
/// Removes a role from a guild member.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#remove-guild-member-role>
|
||||||
pub async fn remove_role(
|
pub async fn remove_role(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
|
|
|
@ -12,11 +12,12 @@ use crate::{
|
||||||
impl types::RoleObject {
|
impl types::RoleObject {
|
||||||
/// Retrieves a list of roles for a given guild.
|
/// Retrieves a list of roles for a given guild.
|
||||||
///
|
///
|
||||||
/// Returns Ok(None) if the guild has no roles.
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#get-guild-roles>
|
||||||
pub async fn get_all(
|
pub async fn get_all(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
) -> ChorusResult<Option<Vec<RoleObject>>> {
|
) -> ChorusResult<Vec<RoleObject>> {
|
||||||
let url = format!(
|
let url = format!(
|
||||||
"{}/guilds/{}/roles/",
|
"{}/guilds/{}/roles/",
|
||||||
user.belongs_to.borrow().urls.api,
|
user.belongs_to.borrow().urls.api,
|
||||||
|
@ -30,13 +31,11 @@ impl types::RoleObject {
|
||||||
.deserialize_response::<Vec<RoleObject>>(user)
|
.deserialize_response::<Vec<RoleObject>>(user)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
if roles.is_empty() {
|
Ok(roles)
|
||||||
return Ok(None);
|
|
||||||
}
|
|
||||||
Ok(Some(roles))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Retrieves a single role for a given guild.
|
/// Retrieves a single role for a given guild.
|
||||||
|
// TODO: Couldn't find reference
|
||||||
pub async fn get(
|
pub async fn get(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
|
@ -58,6 +57,9 @@ impl types::RoleObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new role for a given guild.
|
/// Creates a new role for a given guild.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#create-guild-role>
|
||||||
pub async fn create(
|
pub async fn create(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
|
@ -83,6 +85,9 @@ impl types::RoleObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Updates the position of a role in a given guild's hierarchy.
|
/// Updates the position of a role in a given guild's hierarchy.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#modify-guild-role-positions>
|
||||||
pub async fn position_update(
|
pub async fn position_update(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
|
@ -110,6 +115,9 @@ impl types::RoleObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Updates a role in a guild.
|
/// Updates a role in a guild.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#modify-guild-role>
|
||||||
pub async fn update(
|
pub async fn update(
|
||||||
user: &mut UserMeta,
|
user: &mut UserMeta,
|
||||||
guild_id: Snowflake,
|
guild_id: Snowflake,
|
||||||
|
|
|
@ -72,9 +72,15 @@ pub struct Channel {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
||||||
|
/// A tag that can be applied to a thread in a [ChannelType::GuildForum] or [ChannelType::GuildMedia] channel.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#forum-tag-object>
|
||||||
pub struct Tag {
|
pub struct Tag {
|
||||||
pub id: Snowflake,
|
pub id: Snowflake,
|
||||||
|
/// The name of the tag (max 20 characters)
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
/// Whether this tag can only be added to or removed from threads by members with the [MANAGE_THREADS](crate::types::PermissionFlags::MANAGE_THREADS) permission
|
||||||
pub moderated: bool,
|
pub moderated: bool,
|
||||||
pub emoji_id: Option<Snowflake>,
|
pub emoji_id: Option<Snowflake>,
|
||||||
pub emoji_name: Option<String>,
|
pub emoji_name: Option<String>,
|
||||||
|
@ -95,6 +101,8 @@ pub struct PermissionOverwrite {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#thread-metadata-object>
|
||||||
pub struct ThreadMetadata {
|
pub struct ThreadMetadata {
|
||||||
pub archived: bool,
|
pub archived: bool,
|
||||||
pub auto_archive_duration: i32,
|
pub auto_archive_duration: i32,
|
||||||
|
@ -105,6 +113,8 @@ pub struct ThreadMetadata {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
#[derive(Default, Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#thread-member-object>
|
||||||
pub struct ThreadMember {
|
pub struct ThreadMember {
|
||||||
pub id: Option<Snowflake>,
|
pub id: Option<Snowflake>,
|
||||||
pub user_id: Option<Snowflake>,
|
pub user_id: Option<Snowflake>,
|
||||||
|
@ -114,6 +124,10 @@ pub struct ThreadMember {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
||||||
|
/// Specifies the emoji to use as the default way to react to a [ChannelType::GuildForum] or [ChannelType::GuildMedia] channel post.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// See <https://discord-userdoccers.vercel.app/resources/channel#default-reaction-object>
|
||||||
pub struct DefaultReaction {
|
pub struct DefaultReaction {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub emoji_id: Option<Snowflake>,
|
pub emoji_id: Option<Snowflake>,
|
||||||
|
|
Loading…
Reference in New Issue