#[non_exhaustive]pub struct Message {Show 28 fields
pub id: MessageId,
pub attachments: Vec<Attachment>,
pub author: User,
pub channel_id: ChannelId,
pub content: String,
pub edited_timestamp: Option<Timestamp>,
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: Vec<ChannelMention>,
pub mentions: Vec<User>,
pub nonce: Value,
pub pinned: bool,
pub reactions: Vec<MessageReaction>,
pub timestamp: Timestamp,
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>,
pub sticker_items: Vec<StickerItem>,
pub referenced_message: Option<Box<Message>>,
pub interaction: Option<MessageInteraction>,
pub components: Vec<ActionRow>,
}
Expand description
A representation of a message over a guild’s text channel, a group, or a private channel.
Fields (Non-exhaustive)
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.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.
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<Timestamp>
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 Role
s’ Ids mentioned in the message.
mention_channels: Vec<ChannelMention>
Channels specifically mentioned in this message.
Note:
Not all channel mentions in a message will appear in Self::mention_channels
. Only textual
channels that are visible to everyone in a lurkable guild will ever be included.
A lurkable guild is one that allows users to read public channels in a server without actually joining the server. It also allows users to look at these channels without being logged in to Discord.
Only crossposted messages (via Channel Following) currently include Self::mention_channels
at
all. If no mentions in the message meet these requirements, this field will not be sent.
Refer to Discord’s documentation for more information.
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: Timestamp
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.
sticker_items: Vec<StickerItem>
Array of message sticker item objects.
referenced_message: Option<Box<Message>>
The message that was replied to using this message.
interaction: Option<MessageInteraction>
Sent if the message is a response to an Interaction
.
components: Vec<ActionRow>
The components of this message
Implementations
sourceimpl Message
impl Message
sourcepub async fn crosspost(&self, cache_http: impl CacheHttp) -> Result<Message>
Available on crate feature model
only.
pub async fn crosspost(&self, cache_http: impl CacheHttp) -> Result<Message>
model
only.Crossposts this message.
Requires either to be the message author or to have manage Manage Messages permissions on this channel.
Note: Only available on news channels.
Errors
If the cache
is enabled, returns a
ModelError::InvalidPermissions
if the current user does not have
the required permissions.
Returns a ModelError::MessageAlreadyCrossposted
if the message has already been crossposted.
Returns a ModelError::CannotCrosspostMessage
if the message cannot be crossposted.
sourcepub async fn channel(&self, cache_http: impl CacheHttp) -> Result<Channel>
Available on crate feature model
only.
pub async fn channel(&self, cache_http: impl CacheHttp) -> Result<Channel>
model
only.sourcepub fn is_own(&self, cache: impl AsRef<Cache>) -> bool
Available on crate features model
and cache
only.
pub fn is_own(&self, cache: impl AsRef<Cache>) -> bool
model
and cache
only.A util function for determining whether this message was sent by someone else, or the bot.
sourcepub async fn delete(&self, cache_http: impl CacheHttp) -> Result<()>
Available on crate feature model
only.
pub async fn delete(&self, cache_http: impl CacheHttp) -> Result<()>
model
only.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.
sourcepub async fn delete_reactions(&self, cache_http: impl CacheHttp) -> Result<()>
Available on crate feature model
only.
pub async fn delete_reactions(&self, cache_http: impl CacheHttp) -> Result<()>
model
only.Deletes all of the Reaction
s 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.
sourcepub async fn delete_reaction_emoji(
&self,
cache_http: impl CacheHttp,
reaction_type: impl Into<ReactionType>
) -> Result<()>
Available on crate feature model
only.
pub async fn delete_reaction_emoji(
&self,
cache_http: impl CacheHttp,
reaction_type: impl Into<ReactionType>
) -> Result<()>
model
only.Deletes all of the Reaction
s of a given emoji 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.
sourcepub async fn edit<'a, F>(
&mut self,
cache_http: impl CacheHttp,
f: F
) -> Result<()> where
F: for<'b> FnOnce(&'b mut EditMessage<'a>) -> &'b mut EditMessage<'a>,
Available on crate feature model
only.
pub async fn edit<'a, F>(
&mut self,
cache_http: impl CacheHttp,
f: F
) -> Result<()> where
F: for<'b> FnOnce(&'b mut EditMessage<'a>) -> &'b mut EditMessage<'a>,
model
only.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:
// 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.
sourcepub fn content_safe(&self, cache: impl AsRef<Cache>) -> String
Available on crate features model
and cache
only.
pub fn content_safe(&self, cache: impl AsRef<Cache>) -> String
model
and cache
only.Returns message content, but with user and role mentions replaced with names and everyone/here mentions cancelled.
sourcepub async fn reaction_users(
&self,
http: impl AsRef<Http>,
reaction_type: impl Into<ReactionType>,
limit: Option<u8>,
after: impl Into<Option<UserId>>
) -> Result<Vec<User>>
Available on crate feature model
only.
pub async fn reaction_users(
&self,
http: impl AsRef<Http>,
reaction_type: impl Into<ReactionType>,
limit: Option<u8>,
after: impl Into<Option<UserId>>
) -> Result<Vec<User>>
model
only.Gets the list of User
s 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.
Errors
Returns Error::Http
if the current user lacks permission.
sourcepub fn guild(&self, cache: impl AsRef<Cache>) -> Option<Guild>
Available on crate features model
and cache
only.
pub fn guild(&self, cache: impl AsRef<Cache>) -> Option<Guild>
model
and cache
only.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 Self::guild_id
or
if the Guild itself is not cached.
Requires the cache
feature be enabled.
sourcepub fn guild_field<Ret, Fun>(
&self,
cache: impl AsRef<Cache>,
field_accessor: Fun
) -> Option<Ret> where
Ret: Clone,
Fun: FnOnce(&Guild) -> Ret,
Available on crate features model
and cache
only.
pub fn guild_field<Ret, Fun>(
&self,
cache: impl AsRef<Cache>,
field_accessor: Fun
) -> Option<Ret> where
Ret: Clone,
Fun: FnOnce(&Guild) -> Ret,
model
and cache
only.Returns a field to the Guild
for the message if one is in the cache.
The field can be selected via the field_accessor
.
Returns None
if the guild’s ID could not be found via Self::guild_id
or
if the Guild itself is not cached.
Requires the cache
feature be enabled.
sourcepub fn is_private(&self) -> bool
Available on crate feature model
only.
pub fn is_private(&self) -> bool
model
only.True if message was sent using direct messages.
sourcepub async fn member(&self, cache_http: impl CacheHttp) -> Result<Member>
Available on crate feature model
only.
pub async fn member(&self, cache_http: impl CacheHttp) -> Result<Member>
model
only.Retrieves a clone of the author’s Member instance, if this message was sent in a guild.
If the instance cannot be found in the cache, or the cache
feature is
disabled, a HTTP request is performed to retrieve it from Discord’s API.
Errors
ModelError::ItemMissing
is returned if Self::guild_id
is None
.
sourcepub fn overflow_length(content: &str) -> Option<usize>
Available on crate feature model
only.
pub fn overflow_length(content: &str) -> Option<usize>
model
only.sourcepub async fn pin(&self, cache_http: impl CacheHttp) -> Result<()>
Available on crate feature model
only.
pub async fn pin(&self, cache_http: impl CacheHttp) -> Result<()>
model
only.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.
sourcepub async fn react(
&self,
cache_http: impl CacheHttp,
reaction_type: impl Into<ReactionType>
) -> Result<Reaction>
Available on crate feature model
only.
pub async fn react(
&self,
cache_http: impl CacheHttp,
reaction_type: impl Into<ReactionType>
) -> Result<Reaction>
model
only.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.
sourcepub async fn reply(
&self,
cache_http: impl CacheHttp,
content: impl Display
) -> Result<Message>
Available on crate feature model
only.
pub async fn reply(
&self,
cache_http: impl CacheHttp,
content: impl Display
) -> Result<Message>
model
only.Uses Discord’s inline reply to a user without pinging them.
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.
sourcepub async fn reply_ping(
&self,
cache_http: impl CacheHttp,
content: impl Display
) -> Result<Message>
Available on crate feature model
only.
pub async fn reply_ping(
&self,
cache_http: impl CacheHttp,
content: impl Display
) -> Result<Message>
model
only.Uses Discord’s inline reply to a user with a ping.
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.
sourcepub async fn reply_mention(
&self,
cache_http: impl CacheHttp,
content: impl Display
) -> Result<Message>
Available on crate feature model
only.
pub async fn reply_mention(
&self,
cache_http: impl CacheHttp,
content: impl Display
) -> Result<Message>
model
only.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.
sourcepub async fn suppress_embeds(&mut self, cache_http: impl CacheHttp) -> Result<()>
Available on crate feature model
only.
pub async fn suppress_embeds(&mut self, cache_http: impl CacheHttp) -> Result<()>
model
only.Delete all embeds in this 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.
Otherwise returns Error::Http
if the current user lacks permission.
sourcepub fn mentions_user_id(&self, id: impl Into<UserId>) -> bool
Available on crate feature model
only.
pub fn mentions_user_id(&self, id: impl Into<UserId>) -> bool
model
only.Checks whether the message mentions passed UserId
.
sourcepub fn mentions_user(&self, user: &User) -> bool
Available on crate feature model
only.
pub fn mentions_user(&self, user: &User) -> bool
model
only.Checks whether the message mentions passed User
.
sourcepub async fn mentions_me(&self, cache_http: impl CacheHttp) -> Result<bool>
Available on crate feature model
only.
pub async fn mentions_me(&self, cache_http: impl CacheHttp) -> Result<bool>
model
only.Checks whether the message mentions the current user.
Errors
May return Error::Http
if the cache
feature is not enabled,
or if the cache is otherwise unavailable.
sourcepub async fn unpin(&self, cache_http: impl CacheHttp) -> Result<()>
Available on crate feature model
only.
pub async fn unpin(&self, cache_http: impl CacheHttp) -> Result<()>
model
only.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.
Available on crate feature model
only.
model
only.Tries to return author’s nickname in the current channel’s guild.
Refer to User::nick_in()
inside and None
outside of a guild.
sourcepub fn link(&self) -> String
Available on crate feature model
only.
pub fn link(&self) -> String
model
only.Returns a link referencing this message. When clicked, users will jump to the message. The link will be valid for messages in either private channels or guilds.
sourcepub async fn link_ensured(&self, cache_http: impl CacheHttp) -> String
Available on crate feature model
only.
pub async fn link_ensured(&self, cache_http: impl CacheHttp) -> String
model
only.Same as Self::link
but tries to find the GuildId
if Discord does not provide it.
sourcepub fn await_reaction(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> CollectReactionⓘNotable traits for CollectReactionimpl Future for CollectReaction type Output = Option<Arc<ReactionAction>>;
Available on crate features model
and collector
only.
pub fn await_reaction(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> CollectReactionⓘNotable traits for CollectReactionimpl Future for CollectReaction type Output = Option<Arc<ReactionAction>>;
model
and collector
only.Await a single reaction on this message.
sourcepub fn await_reactions(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> ReactionCollectorBuilder
Available on crate features model
and collector
only.
pub fn await_reactions(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> ReactionCollectorBuilder
model
and collector
only.Returns a stream builder which can be awaited to obtain a stream of reactions on this message.
sourcepub fn await_component_interaction(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> CollectComponentInteractionⓘNotable traits for CollectComponentInteractionimpl Future for CollectComponentInteraction type Output = Option<Arc<MessageComponentInteraction>>;
Available on crate features model
and collector
only.
pub fn await_component_interaction(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> CollectComponentInteractionⓘNotable traits for CollectComponentInteractionimpl Future for CollectComponentInteraction type Output = Option<Arc<MessageComponentInteraction>>;
model
and collector
only.Await a single component interaction on this message.
sourcepub fn await_component_interactions(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> ComponentInteractionCollectorBuilder
Available on crate features model
and collector
only.
pub fn await_component_interactions(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> ComponentInteractionCollectorBuilder
model
and collector
only.Returns a stream builder which can be awaited to obtain a stream of component interactions on this message.
sourcepub fn await_modal_interaction(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> CollectModalInteractionⓘNotable traits for CollectModalInteractionimpl Future for CollectModalInteraction type Output = Option<Arc<ModalSubmitInteraction>>;
Available on crate features model
and collector
only.
pub fn await_modal_interaction(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> CollectModalInteractionⓘNotable traits for CollectModalInteractionimpl Future for CollectModalInteraction type Output = Option<Arc<ModalSubmitInteraction>>;
model
and collector
only.Await a single modal submit interaction on this message.
sourcepub fn await_modal_interactions(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> ModalInteractionCollectorBuilder
Available on crate features model
and collector
only.
pub fn await_modal_interactions(
&self,
shard_messenger: impl AsRef<ShardMessenger>
) -> ModalInteractionCollectorBuilder
model
and collector
only.Returns a stream builder which can be awaited to obtain a stream of modal submit interactions on this message.
Trait Implementations
sourceimpl ArgumentConvert for Message
impl ArgumentConvert for Message
Look up a message by a string.
The lookup strategy is as follows (in order):
- Lookup by “{channel ID}-{message ID}” (retrieved by shift-clicking on “Copy ID”)
- Lookup by message ID (the message must be in the context channel)
- Lookup by message URL
type Err = MessageParseError
type Err = MessageParseError
utils
and client
only.The associated error which can be returned from parsing.
sourcefn convert<'life0, 'life1, 'async_trait>(
ctx: &'life0 Context,
_guild_id: Option<GuildId>,
channel_id: Option<ChannelId>,
s: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Self, Self::Err>> + Send + 'async_trait>> where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn convert<'life0, 'life1, 'async_trait>(
ctx: &'life0 Context,
_guild_id: Option<GuildId>,
channel_id: Option<ChannelId>,
s: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Self, Self::Err>> + Send + 'async_trait>> where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
utils
and client
only.Parses a string s
as a command parameter of this type.
sourceimpl<'de> Deserialize<'de> for Message
impl<'de> Deserialize<'de> for Message
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl From<&Message> for MessageReference
impl From<&Message> for MessageReference
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more