Interface IMessage
- Namespace
- Discord
- Assembly
- Discord.Net.Core.dll
Represents a message object.
public interface IMessage : ISnowflakeEntity, IEntity<ulong>, IDeletable
- Inherited Members
- Extension Methods
Properties
Activity
Gets the activity associated with a message.
MessageActivity Activity { get; }
Property Value
- MessageActivity
A message's activity, if any is associated.
Remarks
Sent with Rich Presence-related chat embeds. This often refers to activity that requires end-user's interaction, such as a Spotify Invite activity.
Application
Gets the application associated with a message.
MessageApplication Application { get; }
Property Value
- MessageApplication
A message's application, if any is associated.
Remarks
Sent with Rich-Presence-related chat embeds.
Attachments
Gets all attachments included in this message.
IReadOnlyCollection<IAttachment> Attachments { get; }
Property Value
- IReadOnlyCollection<IAttachment>
A read-only collection of attachments.
Remarks
This property gets a read-only collection of attachments associated with this message. Depending on the user's end-client, a sent message may contain one or more attachments. For example, mobile users may attach more than one file in their message, while the desktop client only allows for one.
Author
Gets the author of this message.
IUser Author { get; }
Property Value
CallData
Gets the call data of the message.
MessageCallData? CallData { get; }
Property Value
Channel
Gets the source channel of the message.
IMessageChannel Channel { get; }
Property Value
CleanContent
Gets the clean content for this message.
string CleanContent { get; }
Property Value
- string
A string that contains the body of the message stripped of mentions, markdown, emojis and pings; note that this field may be empty if there is an embed.
Remarks
This will be empty if the privileged MessageContent is disabled.
Components
The IMessageComponent's attached to this message
IReadOnlyCollection<IMessageComponent> Components { get; }
Property Value
Content
Gets the content for this message.
string Content { get; }
Property Value
- string
A string that contains the body of the message; note that this field may be empty if there is an embed.
Remarks
This will be empty if the privileged MessageContent is disabled.
EditedTimestamp
Gets the time of this message's last edit.
DateTimeOffset? EditedTimestamp { get; }
Property Value
- DateTimeOffset?
Time of when the message was last edited; null if the message is never edited.
Embeds
Gets all embeds included in this message.
IReadOnlyCollection<IEmbed> Embeds { get; }
Property Value
- IReadOnlyCollection<IEmbed>
A read-only collection of embed objects.
Remarks
This property gets a read-only collection of embeds associated with this message. Depending on the message, a sent message may contain one or more embeds. This is usually true when multiple link previews are generated; however, only one RichEmbed can be featured.
Flags
Gets the flags related to this message.
MessageFlags? Flags { get; }
Property Value
- MessageFlags?
A message's flags, if any is associated.
Remarks
This value is determined by bitwise OR-ing MessageFlags values together.
Interaction
Gets the interaction this message is a response to.
[Obsolete("This property will be deprecated soon. Use IUserMessage.InteractionMetadata instead.")]
IMessageInteraction Interaction { get; }
Property Value
- IMessageInteraction
A IMessageInteraction if the message is a response to an interaction; otherwise null.
IsPinned
Gets the value that indicates whether this message is pinned.
bool IsPinned { get; }
Property Value
IsSuppressed
Gets the value that indicates whether or not this message's embeds are suppressed.
bool IsSuppressed { get; }
Property Value
IsTTS
Gets the value that indicates whether this message was meant to be read-aloud by Discord.
bool IsTTS { get; }
Property Value
MentionedChannelIds
Gets the IDs of channels mentioned in this message.
IReadOnlyCollection<ulong> MentionedChannelIds { get; }
Property Value
- IReadOnlyCollection<ulong>
A read-only collection of channel IDs.
MentionedEveryone
Gets the value that indicates whether this message mentioned everyone.
bool MentionedEveryone { get; }
Property Value
MentionedRoleIds
Gets the IDs of roles mentioned in this message.
IReadOnlyCollection<ulong> MentionedRoleIds { get; }
Property Value
- IReadOnlyCollection<ulong>
A read-only collection of role IDs.
MentionedUserIds
Gets the IDs of users mentioned in this message.
IReadOnlyCollection<ulong> MentionedUserIds { get; }
Property Value
- IReadOnlyCollection<ulong>
A read-only collection of user IDs.
PurchaseNotification
Gets the purchase notification for this message.
PurchaseNotification PurchaseNotification { get; }
Property Value
Reactions
Gets all reactions included in this message.
IReadOnlyDictionary<IEmote, ReactionMetadata> Reactions { get; }
Property Value
Reference
Gets the reference to the original message if it is a crosspost, channel follow add, pin, or reply message.
MessageReference Reference { get; }
Property Value
- MessageReference
A message's reference, if any is associated.
Remarks
Sent with cross-posted messages, meaning they were published from news channels and received by subscriber channels, channel follow adds, pins, and message replies.
RoleSubscriptionData
Gets the data of the role subscription purchase or renewal that prompted this RoleSubscriptionPurchase message.
MessageRoleSubscriptionData RoleSubscriptionData { get; }
Property Value
- MessageRoleSubscriptionData
A MessageRoleSubscriptionData if the message is a role subscription purchase message; otherwise null.
Source
Gets the source type of this message.
MessageSource Source { get; }
Property Value
Stickers
Gets all stickers items included in this message.
IReadOnlyCollection<IStickerItem> Stickers { get; }
Property Value
- IReadOnlyCollection<IStickerItem>
A read-only collection of sticker item objects.
Tags
Gets all tags included in this message's content.
IReadOnlyCollection<ITag> Tags { get; }
Property Value
Thread
Gets the thread that was started from this message.
IThreadChannel Thread { get; }
Property Value
- IThreadChannel
An IThreadChannel object if this message has thread attached; otherwise null.
Timestamp
Gets the time this message was sent.
DateTimeOffset Timestamp { get; }
Property Value
- DateTimeOffset
Time of when the message was sent.
Type
Gets the type of this message.
MessageType Type { get; }
Property Value
Methods
AddReactionAsync(IEmote, RequestOptions)
Adds a reaction to this message.
Task AddReactionAsync(IEmote emote, RequestOptions options = null)
Parameters
emote
IEmoteThe emoji used to react to this message.
options
RequestOptionsThe options to be used when sending the request.
Returns
- Task
A task that represents the asynchronous operation for adding a reaction to this message.
Examples
The following example adds the reaction, 💕
, to the message.
await msg.AddReactionAsync(new Emoji("\U0001f495"));
- See Also
GetReactionUsersAsync(IEmote, int, RequestOptions, ReactionType)
Gets all users that reacted to a message with a given emote.
IAsyncEnumerable<IReadOnlyCollection<IUser>> GetReactionUsersAsync(IEmote emoji, int limit, RequestOptions options = null, ReactionType type = ReactionType.Normal)
Parameters
emoji
IEmoteThe emoji that represents the reaction that you wish to get.
limit
intThe number of users to request.
options
RequestOptionsThe options to be used when sending the request.
type
ReactionTypeThe type of the reaction you wish to get users for.
Returns
- IAsyncEnumerable<IReadOnlyCollection<IUser>>
Paged collection of users.
Examples
The following example gets the users that have reacted with the emoji 💕
to the message.
var emoji = new Emoji("\U0001f495");
var reactedUsers = await message.GetReactionUsersAsync(emoji, 100).FlattenAsync();
Remarks
important
The returned collection is an asynchronous enumerable object; one must call FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) to access the users as a collection.
warning
Do not fetch too many users at once! This may cause unwanted preemptive rate limit or even actual rate limit, causing your bot to freeze!
limit
.
The library will attempt to split up the requests according to your limit
and
MaxUserReactionsPerBatch. In other words, should the user request 500 reactions,
and the MaxUserReactionsPerBatch constant is 100
, the request will
be split into 5 individual requests; thus returning 5 individual asynchronous responses, hence the need
of flattening.
RemoveAllReactionsAsync(RequestOptions)
Removes all reactions from this message.
Task RemoveAllReactionsAsync(RequestOptions options = null)
Parameters
options
RequestOptionsThe options to be used when sending the request.
Returns
- Task
A task that represents the asynchronous removal operation.
RemoveAllReactionsForEmoteAsync(IEmote, RequestOptions)
Removes all reactions with a specific emoji from this message.
Task RemoveAllReactionsForEmoteAsync(IEmote emote, RequestOptions options = null)
Parameters
emote
IEmoteThe emoji used to react to this message.
options
RequestOptionsThe options to be used when sending the request.
Returns
- Task
A task that represents the asynchronous removal operation.
RemoveReactionAsync(IEmote, IUser, RequestOptions)
Removes a reaction from message.
Task RemoveReactionAsync(IEmote emote, IUser user, RequestOptions options = null)
Parameters
emote
IEmoteThe emoji used to react to this message.
user
IUserThe user that added the emoji.
options
RequestOptionsThe options to be used when sending the request.
Returns
- Task
A task that represents the asynchronous operation for removing a reaction to this message.
Examples
The following example removes the reaction, 💕
, added by the message author from the message.
await msg.RemoveReactionAsync(new Emoji("\U0001f495"), msg.Author);
- See Also
RemoveReactionAsync(IEmote, ulong, RequestOptions)
Removes a reaction from message.
Task RemoveReactionAsync(IEmote emote, ulong userId, RequestOptions options = null)
Parameters
emote
IEmoteThe emoji used to react to this message.
userId
ulongThe ID of the user that added the emoji.
options
RequestOptionsThe options to be used when sending the request.
Returns
- Task
A task that represents the asynchronous operation for removing a reaction to this message.
Examples
The following example removes the reaction, 💕
, added by the user with ID 84291986575613952 from the message.
await msg.RemoveReactionAsync(new Emoji("\U0001f495"), 84291986575613952);
- See Also