aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/03_struct_utilities.rs10
-rw-r--r--examples/06_command_framework.rs9
-rw-r--r--src/model/channel.rs10
-rw-r--r--src/model/guild.rs4
-rw-r--r--src/model/utils.rs7
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))