aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authoracdenisSK <[email protected]>2017-09-06 15:52:48 +0200
committeracdenisSK <[email protected]>2017-09-06 15:52:48 +0200
commit421c709bbd706d4f04453baacf0ec6a88759f8cd (patch)
treef92d0ec795c31e940648a652649006e336fec7a4 /src/model
parentAdd a way for users to get Shards (diff)
downloadserenity-421c709bbd706d4f04453baacf0ec6a88759f8cd.tar.xz
serenity-421c709bbd706d4f04453baacf0ec6a88759f8cd.zip
Update `Guild::ban` to use `BanOptions`
Also update `Member::permissions` to the default channel change
Diffstat (limited to 'src/model')
-rw-r--r--src/model/guild/member.rs10
-rw-r--r--src/model/guild/mod.rs10
2 files changed, 11 insertions, 9 deletions
diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs
index f1a5114..d9ac230 100644
--- a/src/model/guild/member.rs
+++ b/src/model/guild/member.rs
@@ -274,8 +274,11 @@ impl Member {
///
/// Returns a [`ModelError::GuildNotFound`] if the guild the member's in could not be
/// found in the cache.
+ ///
+ /// And/or returns [`ModelError::ItemMissing`] if the "default channel" of the guild is not found.
///
/// [`ModelError::GuildNotFound`]: enum.ModelError.html#variant.GuildNotFound
+ /// [`ModelError::ItemMissing`]: enum.ModelError.html#variant.ItemMissing
#[cfg(feature = "cache")]
pub fn permissions(&self) -> Result<Permissions> {
let guild = match self.guild_id.find() {
@@ -285,8 +288,13 @@ impl Member {
let guild = guild.read().unwrap();
+ let default_channel = match guild.default_channel() {
+ Some(dc) => dc,
+ None => return Err(From::from(ModelError::ItemMissing)),
+ };
+
Ok(guild.permissions_for(
- ChannelId(guild.id.0),
+ default_channel.id,
self.user.read().unwrap().id,
))
}
diff --git a/src/model/guild/mod.rs b/src/model/guild/mod.rs
index dee97af..714cf5c 100644
--- a/src/model/guild/mod.rs
+++ b/src/model/guild/mod.rs
@@ -207,13 +207,7 @@ impl Guild {
/// [`Guild::ban`]: struct.Guild.html#method.ban
/// [`User`]: struct.User.html
/// [Ban Members]: permissions/constant.BAN_MEMBERS.html
- pub fn ban<U: Into<UserId>>(&self, user: U, delete_message_days: u8) -> Result<()> {
- if delete_message_days > 7 {
- return Err(Error::Model(
- ModelError::DeleteMessageDaysAmount(delete_message_days),
- ));
- }
-
+ pub fn ban<U: Into<UserId>, BO: BanOptions>(&self, user: U, options: BO) -> Result<()> {
#[cfg(feature = "cache")]
{
let req = permissions::BAN_MEMBERS;
@@ -223,7 +217,7 @@ impl Guild {
}
}
- self.id.ban(user, delete_message_days)
+ self.id.ban(user, options)
}
/// Retrieves a list of [`Ban`]s for the guild.