Class RestMessage
Represents a REST-based message.
public abstract class RestMessage : RestEntity<ulong>, IMessage, ISnowflakeEntity, IEntity<ulong>, IDeletable, IUpdateable
- Inheritance
-
RestMessage
- Implements
- Derived
- Inherited Members
- Extension Methods
Properties
Activity
Gets the activity associated with a message.
public 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.
public MessageApplication Application { get; }
Property Value
- MessageApplication
A message's application, if any is associated.
Remarks
Sent with Rich-Presence-related chat embeds.
Attachments
Gets a collection of the Attachment's on the message.
public virtual IReadOnlyCollection<Attachment> Attachments { get; }
Property Value
Author
Gets the Author of the message.
public IUser Author { get; }
Property Value
CallData
Gets the call data of the message.
public MessageCallData? CallData { get; }
Property Value
Channel
Gets the source channel of the message.
public IMessageChannel Channel { get; }
Property Value
CleanContent
Gets the clean content for this message.
public 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
public IReadOnlyCollection<ActionRowComponent> Components { get; }
Property Value
Content
Gets the content for this message.
public 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.
CreatedAt
Gets when the snowflake was created.
public DateTimeOffset CreatedAt { get; }
Property Value
- DateTimeOffset
A DateTimeOffset representing when the entity was first created.
EditedTimestamp
Gets the time of this message's last edit.
public virtual DateTimeOffset? EditedTimestamp { get; }
Property Value
- DateTimeOffset?
Time of when the message was last edited; null if the message is never edited.
Embeds
Gets a collection of the Embed's on the message.
public virtual IReadOnlyCollection<Embed> Embeds { get; }
Property Value
Flags
Gets the flags related to this message.
public 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.
public MessageInteraction<RestUser> Interaction { get; }
Property Value
IsPinned
Gets the value that indicates whether this message is pinned.
public virtual bool IsPinned { get; }
Property Value
IsSuppressed
Gets the value that indicates whether or not this message's embeds are suppressed.
public virtual bool IsSuppressed { get; }
Property Value
IsTTS
Gets the value that indicates whether this message was meant to be read-aloud by Discord.
public virtual bool IsTTS { get; }
Property Value
MentionedChannelIds
Gets the IDs of channels mentioned in this message.
public virtual 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.
public virtual bool MentionedEveryone { get; }
Property Value
MentionedRoleIds
Gets the IDs of roles mentioned in this message.
public virtual IReadOnlyCollection<ulong> MentionedRoleIds { get; }
Property Value
- IReadOnlyCollection<ulong>
A read-only collection of role IDs.
MentionedUsers
Gets a collection of the mentioned users in the message.
public IReadOnlyCollection<RestUser> MentionedUsers { get; }
Property Value
PurchaseNotification
Gets the purchase notification for this message.
public PurchaseNotification PurchaseNotification { get; }
Property Value
Reactions
Gets all reactions included in this message.
public 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.
public 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.
public 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.
public MessageSource Source { get; }
Property Value
Stickers
public virtual IReadOnlyCollection<StickerItem> Stickers { get; }
Property Value
Tags
Gets all tags included in this message's content.
public virtual IReadOnlyCollection<ITag> Tags { get; }
Property Value
Thread
Gets the thread that was started from this message.
public RestThreadChannel Thread { get; }
Property Value
- RestThreadChannel
An IThreadChannel object if this message has thread attached; otherwise null.
Timestamp
Gets the time this message was sent.
public DateTimeOffset Timestamp { get; }
Property Value
- DateTimeOffset
Time of when the message was sent.
Type
Gets the type of this message.
public MessageType Type { get; }
Property Value
Methods
AddReactionAsync(IEmote, RequestOptions)
Adds a reaction to this message.
public 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
DeleteAsync(RequestOptions)
Deletes this object and all its children.
public Task DeleteAsync(RequestOptions options = null)
Parameters
options
RequestOptionsThe options to be used when sending the request.
Returns
GetReactionUsersAsync(IEmote, int, RequestOptions, ReactionType)
Gets all users that reacted to a message with a given emote.
public IAsyncEnumerable<IReadOnlyCollection<IUser>> GetReactionUsersAsync(IEmote emote, int limit, RequestOptions options = null, ReactionType type = ReactionType.Normal)
Parameters
emote
IEmotelimit
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.
public 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.
public 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.
public 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.
public 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
ToString()
Gets the Content of the message.
public override string ToString()
Returns
UpdateAsync(RequestOptions)
Updates this object's properties with its current state.
public Task UpdateAsync(RequestOptions options = null)
Parameters
options
RequestOptionsThe options to be used when sending the request.