diff options
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/error.rs | 3 | ||||
| -rw-r--r-- | src/model/user.rs | 16 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/model/error.rs b/src/model/error.rs index a54b1ed..4126ac3 100644 --- a/src/model/error.rs +++ b/src/model/error.rs @@ -101,6 +101,9 @@ pub enum Error { /// /// [`Message`]: ../model/struct.Message.html MessageTooLong(u64), + /// Indicates that the current user is attempting to Direct Message another + /// bot user, which is disallowed by the API. + MessagingBot, } impl Display for Error { diff --git a/src/model/user.rs b/src/model/user.rs index aaf334b..364b978 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -471,6 +471,12 @@ impl User { /// }); /// ``` /// + /// # Examples + /// + /// Returns a [`ModelError::MessagingBot`] if the user being direct messaged + /// is a bot user. + /// + /// [`ModelError::MessagingBot`]: enum.ModelError.html#variant.MessagingBot /// [`PrivateChannel`]: struct.PrivateChannel.html /// [`User::dm`]: struct.User.html#method.dm // A tale with Clippy: @@ -491,6 +497,10 @@ impl User { #[cfg(feature="builder")] pub fn direct_message<F>(&self, f: F) -> Result<Message> where F: FnOnce(CreateMessage) -> CreateMessage { + if self.bot { + return Err(Error::Model(ModelError::MessagingBot)); + } + let private_channel_id = feature_cache! {{ let finding = { let cache = CACHE.read().unwrap(); @@ -545,6 +555,12 @@ impl User { /// let _ = message.author.dm("Hello!"); /// ``` /// + /// # Examples + /// + /// Returns a [`ModelError::MessagingBot`] if the user being direct messaged + /// is a bot user. + /// + /// [`ModelError::MessagingBot`]: enum.ModelError.html#variant.MessagingBot /// [direct_message]: #method.direct_message #[cfg(feature="builder")] #[inline] |