aboutsummaryrefslogtreecommitdiff
path: root/src/model/guild
diff options
context:
space:
mode:
authorKyle Clemens <[email protected]>2018-01-08 13:18:13 -0500
committeralex <[email protected]>2018-01-08 19:18:13 +0100
commit6587655bf90d662191538b11884311e5aff4b120 (patch)
treec27db8c664503cc9d18c49ce601ed66c06ce2fd7 /src/model/guild
parentSet a travis caching timeout of 900 seconds (diff)
downloadserenity-6587655bf90d662191538b11884311e5aff4b120.tar.xz
serenity-6587655bf90d662191538b11884311e5aff4b120.zip
Allow channels to be moved in and out of a category (#248)
Diffstat (limited to 'src/model/guild')
-rw-r--r--src/model/guild/guild_id.rs6
-rw-r--r--src/model/guild/mod.rs7
-rw-r--r--src/model/guild/partial_guild.rs7
3 files changed, 12 insertions, 8 deletions
diff --git a/src/model/guild/guild_id.rs b/src/model/guild/guild_id.rs
index 48ad55b..a86b6a9 100644
--- a/src/model/guild/guild_id.rs
+++ b/src/model/guild/guild_id.rs
@@ -107,16 +107,18 @@ impl GuildId {
/// ```rust,ignore
/// use serenity::model::{ChannelType, GuildId};
///
- /// let _channel = GuildId(7).create_channel("test", ChannelType::Voice);
+ /// let _channel = GuildId(7).create_channel("test", ChannelType::Voice, None);
/// ```
///
/// [`GuildChannel`]: struct.GuildChannel.html
/// [`http::create_channel`]: ../http/fn.create_channel.html
/// [Manage Channels]: permissions/constant.MANAGE_CHANNELS.html
- pub fn create_channel(&self, name: &str, kind: ChannelType) -> Result<GuildChannel> {
+ pub fn create_channel<C>(&self, name: &str, kind: ChannelType, category: C) -> Result<GuildChannel>
+ where C: Into<Option<ChannelId>> {
let map = json!({
"name": name,
"type": kind as u8,
+ "parent_id": category.into().map(|c| c.0)
});
http::create_channel(self.0, &map)
diff --git a/src/model/guild/mod.rs b/src/model/guild/mod.rs
index d6cd75d..f514864 100644
--- a/src/model/guild/mod.rs
+++ b/src/model/guild/mod.rs
@@ -332,7 +332,7 @@ impl Guild {
///
/// // assuming a `guild` has already been bound
///
- /// let _ = guild.create_channel("my-test-channel", ChannelType::Text);
+ /// let _ = guild.create_channel("my-test-channel", ChannelType::Text, None);
/// ```
///
/// # Errors
@@ -343,7 +343,8 @@ impl Guild {
/// [`Channel`]: struct.Channel.html
/// [`ModelError::InvalidPermissions`]: enum.ModelError.html#variant.InvalidPermissions
/// [Manage Channels]: permissions/constant.MANAGE_CHANNELS.html
- pub fn create_channel(&self, name: &str, kind: ChannelType) -> Result<GuildChannel> {
+ pub fn create_channel<C>(&self, name: &str, kind: ChannelType, category: C) -> Result<GuildChannel>
+ where C: Into<Option<ChannelId>> {
#[cfg(feature = "cache")]
{
let req = Permissions::MANAGE_CHANNELS;
@@ -353,7 +354,7 @@ impl Guild {
}
}
- self.id.create_channel(name, kind)
+ self.id.create_channel(name, kind, category)
}
/// Creates an emoji in the guild with a name and base64-encoded image. The
diff --git a/src/model/guild/partial_guild.rs b/src/model/guild/partial_guild.rs
index e67ca03..aebd6e7 100644
--- a/src/model/guild/partial_guild.rs
+++ b/src/model/guild/partial_guild.rs
@@ -96,15 +96,16 @@ impl PartialGuild {
/// ```rust,ignore
/// use serenity::model::ChannelType;
///
- /// guild.create_channel("test", ChannelType::Voice);
+ /// guild.create_channel("test", ChannelType::Voice, None);
/// ```
///
/// [`GuildChannel`]: struct.GuildChannel.html
/// [`http::create_channel`]: ../http/fn.create_channel.html
/// [Manage Channels]: permissions/constant.MANAGE_CHANNELS.html
#[inline]
- pub fn create_channel(&self, name: &str, kind: ChannelType) -> Result<GuildChannel> {
- self.id.create_channel(name, kind)
+ pub fn create_channel<C>(&self, name: &str, kind: ChannelType, category: C) -> Result<GuildChannel>
+ where C: Into<Option<ChannelId>> {
+ self.id.create_channel(name, kind, category)
}
/// Creates an emoji in the guild with a name and base64-encoded image.