[][src]Struct serenity::model::channel::Message

pub struct Message {
    pub id: MessageId,
    pub attachments: Vec<Attachment>,
    pub author: User,
    pub channel_id: ChannelId,
    pub content: String,
    pub edited_timestamp: Option<DateTime<FixedOffset>>,
    pub embeds: Vec<Embed>,
    pub guild_id: Option<GuildId>,
    pub kind: MessageType,
    pub member: Option<PartialMember>,
    pub mention_everyone: bool,
    pub mention_roles: Vec<RoleId>,
    pub mention_channels: Option<Vec<ChannelMention>>,
    pub mentions: Vec<User>,
    pub nonce: Value,
    pub pinned: bool,
    pub reactions: Vec<MessageReaction>,
    pub timestamp: DateTime<FixedOffset>,
    pub tts: bool,
    pub webhook_id: Option<WebhookId>,
    pub activity: Option<MessageActivity>,
    pub application: Option<MessageApplication>,
    pub message_reference: Option<MessageReference>,
    pub flags: Option<MessageFlags>,
    // some fields omitted
}

A representation of a message over a guild's text channel, a group, or a private channel.

Fields

id: MessageId

The unique Id of the message. Can be used to calculate the creation date of the message.

attachments: Vec<Attachment>

An vector of the files attached to a message.

author: User

The user that sent the message.

channel_id: ChannelId

The Id of the Channel that the message was sent to.

content: String

The content of the message.

edited_timestamp: Option<DateTime<FixedOffset>>

The timestamp of the last time the message was updated, if it was.

embeds: Vec<Embed>

Array of embeds sent with the message.

guild_id: Option<GuildId>

The Id of the Guild that the message was sent in. This value will only be present if this message was received over the gateway.

kind: MessageType

Indicator of the type of message this is, i.e. whether it is a regular message or a system message.

member: Option<PartialMember>

A partial amount of data about the user's member data, if this message was sent in a guild.

mention_everyone: bool

Indicator of whether the message mentions everyone.

mention_roles: Vec<RoleId>

Array of Roles' Ids mentioned in the message.

mention_channels: Option<Vec<ChannelMention>>

Channels specifically mentioned in this message.

mentions: Vec<User>

Array of users mentioned in the message.

nonce: Value

Non-repeating number used for ensuring message order.

pinned: bool

Indicator of whether the message is pinned.

reactions: Vec<MessageReaction>

Array of reactions performed on the message.

timestamp: DateTime<FixedOffset>

Initial message creation timestamp, calculated from its Id.

tts: bool

Indicator of whether the command is to be played back via text-to-speech.

In the client, this is done via the /tts slash command.

webhook_id: Option<WebhookId>

The Id of the webhook that sent this message, if one did.

activity: Option<MessageActivity>

Sent with Rich Presence-related chat embeds.

application: Option<MessageApplication>

Sent with Rich Presence-related chat embeds.

message_reference: Option<MessageReference>

Reference data sent with crossposted messages.

flags: Option<MessageFlags>

Bit flags describing extra features of the message.

Implementations

impl Message[src]

pub fn channel(&self, cache: impl AsRef<CacheRwLock>) -> Option<Channel>[src]

Retrieves the related channel located in the cache.

Returns None if the channel is not in the cache.

pub fn is_own(&self, cache: impl AsRef<CacheRwLock>) -> bool[src]

A util function for determining whether this message was sent by someone else, or the bot.

pub fn delete(&self, cache_http: impl CacheHttp) -> Result<()>[src]

Deletes the message.

Note: The logged in user must either be the author of the message or have the Manage Messages permission.

Errors

If the cache feature is enabled, then returns a ModelError::InvalidPermissions if the current user does not have the required permissions.

pub fn delete_reactions(&self, cache_http: impl CacheHttp) -> Result<()>[src]

Deletes all of the Reactions associated with the message.

Note: Requires the Manage Messages permission.

Errors

If the cache feature is enabled, then returns a ModelError::InvalidPermissions if the current user does not have the required permissions.

pub fn edit<F>(&mut self, cache_http: impl CacheHttp, f: F) -> Result<()> where
    F: FnOnce(&mut EditMessage) -> &mut EditMessage
[src]

Edits this message, replacing the original content with new content.

Message editing preserves all unchanged message data.

Refer to the documentation for EditMessage for more information regarding message restrictions and requirements.

Note: Requires that the current user be the author of the message.

Examples

Edit a message with new content:

This example is not tested
// assuming a `message` has already been bound

message.edit(&context, |m| m.content("new content"));

Errors

If the cache is enabled, returns a ModelError::InvalidUser if the current user is not the author.

Returns a ModelError::MessageTooLong if the content of the message is over the limit, containing the number of unicode code points over the limit.

pub fn content_safe(&self, cache: impl AsRef<CacheRwLock>) -> String[src]

Returns message content, but with user and role mentions replaced with names and everyone/here mentions cancelled.

pub fn reaction_users<R, U>(
    &self,
    http: impl AsRef<Http>,
    reaction_type: R,
    limit: Option<u8>,
    after: U
) -> Result<Vec<User>> where
    R: Into<ReactionType>,
    U: Into<Option<UserId>>, 
[src]

Gets the list of Users who have reacted to a Message with a certain Emoji.

The default limit is 50 - specify otherwise to receive a different maximum number of users. The maximum that may be retrieve at a time is 100, if a greater number is provided then it is automatically reduced.

The optional after attribute is to retrieve the users after a certain user. This is useful for pagination.

Note: Requires the Read Message History permission.

pub fn guild(
    &self,
    cache: impl AsRef<CacheRwLock>
) -> Option<Arc<RwLock<Guild>>>
[src]

Returns the associated Guild for the message if one is in the cache.

Returns None if the guild's Id could not be found via guild_id or if the Guild itself is not cached.

Requires the cache feature be enabled.

pub fn is_private(&self) -> bool[src]

True if message was sent using direct messages.

pub fn member(&self, cache: impl AsRef<CacheRwLock>) -> Option<Member>[src]

Retrieves a clone of the author's Member instance, if this message was sent in a guild.

Note that since this clones, it is preferable performance-wise to manually retrieve the guild from the cache and access Guild::members.

pub fn overflow_length(content: &str) -> Option<u64>[src]

Checks the length of a string to ensure that it is within Discord's maximum message length limit.

Returns None if the message is within the limit, otherwise returns Some with an inner value of how many unicode code points the message is over.

pub fn pin(&self, cache_http: impl CacheHttp) -> Result<()>[src]

Pins this message to its channel.

Note: Requires the Manage Messages permission.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have the required permissions.

pub fn react<R: Into<ReactionType>>(
    &self,
    cache_http: impl CacheHttp,
    reaction_type: R
) -> Result<()>
[src]

React to the message with a custom Emoji or unicode character.

Note: Requires the Add Reactions permission.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have the required permissions.

pub fn reply(
    &self,
    cache_http: impl CacheHttp,
    content: impl AsRef<str>
) -> Result<Message>
[src]

Replies to the user, mentioning them prior to the content in the form of: @<USER_ID>: YOUR_CONTENT.

User mentions are generally around 20 or 21 characters long.

Note: Requires the Send Messages permission.

Note: Message contents must be under 2000 unicode code points.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have the required permissions.

Returns a ModelError::MessageTooLong if the content of the message is over the above limit, containing the number of unicode code points over the limit.

pub fn mentions_user_id<I: Into<UserId>>(&self, id: I) -> bool[src]

Checks whether the message mentions passed UserId.

pub fn mentions_user(&self, user: &User) -> bool[src]

Checks whether the message mentions passed User.

pub fn unpin(&self, cache_http: impl CacheHttp) -> Result<()>[src]

Unpins the message from its channel.

Note: Requires the Manage Messages permission.

Errors

If the cache is enabled, returns a ModelError::InvalidPermissions if the current user does not have the required permissions.

pub fn author_nick(&self, cache_http: impl CacheHttp) -> Option<String>[src]

Tries to return author's nickname in the current channel's guild.

Note: If message was sent in a private channel, then the function will return None.

Trait Implementations

impl AsRef<MessageId> for Message[src]

impl Clone for Message[src]

impl Debug for Message[src]

impl<'de> Deserialize<'de> for Message[src]

impl<'a> From<&'a Message> for MessageId[src]

pub fn from(message: &Message) -> MessageId[src]

Gets the Id of a Message.

impl From<Message> for MessageId[src]

pub fn from(message: Message) -> MessageId[src]

Gets the Id of a Message.

impl Serialize for Message[src]

Auto Trait Implementations

impl RefUnwindSafe for Message

impl Send for Message

impl Sync for Message

impl Unpin for Message

impl UnwindSafe for Message

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CloneAny for T where
    T: Clone + Any
[src]

impl<T> DebugAny for T where
    T: Any + Debug
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> UnsafeAny for T where
    T: Any

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,