diff options
| -rw-r--r-- | examples/03_struct_utilities.rs | 10 | ||||
| -rw-r--r-- | examples/06_command_framework.rs | 9 | ||||
| -rw-r--r-- | src/model/channel.rs | 10 | ||||
| -rw-r--r-- | src/model/guild.rs | 4 | ||||
| -rw-r--r-- | src/model/utils.rs | 7 |
5 files changed, 27 insertions, 13 deletions
diff --git a/examples/03_struct_utilities.rs b/examples/03_struct_utilities.rs index af00abb..ea91500 100644 --- a/examples/03_struct_utilities.rs +++ b/examples/03_struct_utilities.rs @@ -1,8 +1,13 @@ +//! Requires the 'methods' feature flag be enabled. + extern crate serenity; +#[cfg(feature = "methods")] use serenity::Client; +#[cfg(feature = "methods")] use std::env; +#[cfg(feature = "methods")] fn main() { // Configure the client with your Discord bot token in the environment. let token = env::var("DISCORD_TOKEN") @@ -21,3 +26,8 @@ fn main() { let _ = client.start(); } + +#[cfg(not(feature = "methods"))] +fn main() { + println!("The 'methods' feature flag is required for this example."); +} diff --git a/examples/06_command_framework.rs b/examples/06_command_framework.rs index 38f756d..78e4e9e 100644 --- a/examples/06_command_framework.rs +++ b/examples/06_command_framework.rs @@ -55,10 +55,19 @@ fn dog_command(context: &Context, _msg: &Message, _args: Vec<String>) { let _ = context.say(":dog:"); } +// `Message::reply` is only compiled if the `methods` feature flag is enabled. +#[cfg(feature = "methods")] fn ping_command(_context: &Context, message: &Message, _args: Vec<String>) { let _ = message.reply("Pong!"); } +#[cfg(not(feature = "methods"))] +fn ping_command(context: &Context, message: &Message, _args: Vec<String>) { + if let Err(why) = context.say(&format!("{}: Pong!", message.author)) { + println!("Error sending message: {:?}", why); + } +} + fn owner_check(_context: &Context, message: &Message) -> bool { // Replace 7 with your ID message.author.id == 7 diff --git a/src/model/channel.rs b/src/model/channel.rs index a95b1f3..33e6044 100644 --- a/src/model/channel.rs +++ b/src/model/channel.rs @@ -833,11 +833,13 @@ impl GuildChannel { #[cfg(feature = "methods")] pub fn create_invite<F>(&self, f: F) -> Result<RichInvite> where F: FnOnce(CreateInvite) -> CreateInvite { - let req = permissions::CREATE_INVITE; + feature_cache_enabled! {{ + let req = permissions::CREATE_INVITE; - if !try!(utils::user_has_perms(self.id, req)) { - return Err(Error::Client(ClientError::InvalidPermissions(req))); - } + if !try!(utils::user_has_perms(self.id, req)) { + return Err(Error::Client(ClientError::InvalidPermissions(req))); + } + }} let map = f(CreateInvite::default()).0.build(); diff --git a/src/model/guild.rs b/src/model/guild.rs index 1fe3075..4869e86 100644 --- a/src/model/guild.rs +++ b/src/model/guild.rs @@ -25,7 +25,7 @@ use ::utils::builder::{EditGuild, EditMember, EditRole}; #[cfg(feature = "methods")] use ::client::rest; -#[cfg(feature = "cache")] +#[cfg(all(feature = "cache", feature = "methods"))] use ::client::CACHE; impl From<PartialGuild> for GuildContainer { @@ -165,7 +165,7 @@ impl PartialGuild { } impl Guild { - #[cfg(feature = "cache")] + #[cfg(all(feature = "cache", feature = "methods"))] fn has_perms(&self, mut permissions: Permissions) -> Result<bool> { let member = match self.get_member(CACHE.read().unwrap().user.id) { Some(member) => member, diff --git a/src/model/utils.rs b/src/model/utils.rs index d4ee1c3..0611a9f 100644 --- a/src/model/utils.rs +++ b/src/model/utils.rs @@ -304,13 +304,6 @@ pub fn user_has_perms(channel_id: ChannelId, Ok(permissions.is_empty()) } -#[doc(hidden)] -#[cfg(all(not(feature = "cache"), feature = "methods"))] -pub fn user_has_perms(channel_id: ChannelId, mut permissions: Permissions) - -> Result<bool> { - Ok(true) -} - pub fn warn_field(name: &str, map: BTreeMap<String, Value>) { if !map.is_empty() { debug!("Unhandled keys: {} has {:?}", name, Value::Object(map)) |