Table of Contents

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

IUser

Channel

Gets the source channel of the message.

IMessageChannel Channel { get; }

Property Value

IMessageChannel

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

IReadOnlyCollection<IMessageComponent>

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

bool

true if this message was added to its channel's pinned messages; otherwise false.

IsSuppressed

Gets the value that indicates whether or not this message's embeds are suppressed.

bool IsSuppressed { get; }

Property Value

bool

true if the embeds in this message have been suppressed (made invisible); otherwise false.

IsTTS

Gets the value that indicates whether this message was meant to be read-aloud by Discord.

bool IsTTS { get; }

Property Value

bool

true if this message was sent as a text-to-speech message; otherwise false.

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

bool

true if this message mentioned everyone; otherwise false.

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.

Reactions

Gets all reactions included in this message.

IReadOnlyDictionary<IEmote, ReactionMetadata> Reactions { get; }

Property Value

IReadOnlyDictionary<IEmote, ReactionMetadata>

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

MessageSource

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

IReadOnlyCollection<ITag>

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

MessageType

Methods

AddReactionAsync(IEmote, RequestOptions)

Adds a reaction to this message.

Task AddReactionAsync(IEmote emote, RequestOptions options = null)

Parameters

emote IEmote

The emoji used to react to this message.

options RequestOptions

The 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 IEmote

The emoji that represents the reaction that you wish to get.

limit int

The number of users to request.

options RequestOptions

The options to be used when sending the request.

type ReactionType

The 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!

This method will attempt to fetch the number of reactions specified under 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 RequestOptions

The 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 IEmote

The emoji used to react to this message.

options RequestOptions

The 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 IEmote

The emoji used to react to this message.

user IUser

The user that added the emoji.

options RequestOptions

The 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 IEmote

The emoji used to react to this message.

userId ulong

The ID of the user that added the emoji.

options RequestOptions

The 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