Show / Hide Table of Contents

# Class RestTextChannel

Represents a REST-based channel in a guild that can send and receive messages.

##### Inheritance

System.Object
RestEntity<System.UInt64>
RestChannel
RestGuildChannel
RestTextChannel
RestNewsChannel

##### Implements

IUpdateable
IRestMessageChannel
ITextChannel
IMessageChannel
IMentionable
INestedChannel
IGuildChannel
IChannel
ISnowflakeEntity
IEntity<System.UInt64>
IDeletable

##### Inherited Members

RestGuildChannel.PermissionOverwrites
RestGuildChannel.Name
RestGuildChannel.Position
RestGuildChannel.GuildId
RestGuildChannel.UpdateAsync(RequestOptions)
RestGuildChannel.ModifyAsync(Action<GuildChannelProperties>, RequestOptions)
RestGuildChannel.DeleteAsync(RequestOptions)
RestGuildChannel.GetPermissionOverwrite(IUser)
RestGuildChannel.GetPermissionOverwrite(IRole)
RestGuildChannel.AddPermissionOverwriteAsync(IUser, OverwritePermissions, RequestOptions)
RestGuildChannel.AddPermissionOverwriteAsync(IRole, OverwritePermissions, RequestOptions)
RestGuildChannel.RemovePermissionOverwriteAsync(IUser, RequestOptions)
RestGuildChannel.RemovePermissionOverwriteAsync(IRole, RequestOptions)
RestGuildChannel.ToString()
RestGuildChannel.IGuildChannel.Guild
RestGuildChannel.IGuildChannel.GetPermissionOverwrite(IRole)
RestGuildChannel.IGuildChannel.GetPermissionOverwrite(IUser)
RestGuildChannel.IGuildChannel.AddPermissionOverwriteAsync(IRole, OverwritePermissions, RequestOptions)
RestGuildChannel.IGuildChannel.AddPermissionOverwriteAsync(IUser, OverwritePermissions, RequestOptions)
RestGuildChannel.IGuildChannel.RemovePermissionOverwriteAsync(IRole, RequestOptions)
RestGuildChannel.IGuildChannel.RemovePermissionOverwriteAsync(IUser, RequestOptions)
RestChannel.CreatedAt
RestChannel.IChannel.Name
RestEntity<UInt64>.Id
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()

###### Namespace: Discord.Rest

###### Assembly: Discord.Net.Rest.dll

##### Syntax

    public class RestTextChannel : RestGuildChannel, IUpdateable, IRestMessageChannel, ITextChannel, IMessageChannel, IMentionable, INestedChannel, IGuildChannel, IChannel, ISnowflakeEntity, IEntity<ulong>, IDeletable

### Properties

| Improve this Doc View Source

#### CategoryId

Gets the parent (category) ID of this channel in the guild's channel list.

##### Declaration

    public ulong? CategoryId { get; }

##### Property Value

Type | Description
--- | ---
System.Nullable<System.UInt64> | A System.UInt64 representing the snowflake identifier of the parent of this channel; `null` if none is set.

| Improve this Doc View Source

#### IsNsfw

Gets a value that indicates whether the channel is NSFW.

##### Declaration

    public bool IsNsfw { get; }

##### Property Value

Type | Description
--- | ---
System.Boolean | `true` if the channel has the NSFW flag enabled; otherwise `false`.

| Improve this Doc View Source

#### Mention

Returns a special string used to mention this object.

##### Declaration

    public string Mention { get; }

##### Property Value

Type | Description
--- | ---
System.String | A string that is recognized by Discord as a mention (e.g. <@168693960628371456>).

| Improve this Doc View Source

#### SlowModeInterval

Gets the current slow-mode delay for this channel.

##### Declaration

    public virtual int SlowModeInterval { get; }

##### Property Value

Type | Description
--- | ---
System.Int32 | An System.Int32 representing the time in seconds required before the user can send another message; `0` if disabled.

| Improve this Doc View Source

#### Topic

Gets the current topic for this text channel.

##### Declaration

    public string Topic { get; }

##### Property Value

Type | Description
--- | ---
System.String | A string representing the topic set in the channel; `null` if none is set.

### Methods

| Improve this Doc View Source

#### CreateInviteAsync(Nullable<Int32>, Nullable<Int32>, Boolean, Boolean, RequestOptions)

Creates a new invite to this channel.

##### Declaration

    public Task<IInviteMetadata> CreateInviteAsync(int? maxAge, int? maxUses = default(int? ), bool isTemporary = false, bool isUnique = false, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.Nullable<System.Int32> | maxAge | The time (in seconds) until the invite expires. Set to `null` to never expire.
System.Nullable<System.Int32> | maxUses | The max amount of times this invite may be used. Set to `null` to have unlimited uses.
System.Boolean | isTemporary | If `true`, the user accepting this invite will be kicked from the guild after closing their client.
System.Boolean | isUnique | If `true`, don't try to reuse a similar invite (useful for creating many unique one time use invites).
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IInviteMetadata> | A task that represents the asynchronous invite creation operation. The task result contains an invite metadata object containing information for the created invite.

| Improve this Doc View Source

#### CreateWebhookAsync(String, Stream, RequestOptions)

Creates a webhook in this text channel.

##### Declaration

    public Task<RestWebhook> CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | name | The name of the webhook.
System.IO.Stream | avatar | The avatar of the webhook.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestWebhook> | A task that represents the asynchronous creation operation. The task result contains the newly created webhook.

| Improve this Doc View Source

#### DeleteMessageAsync(IMessage, RequestOptions)

Deletes a message based on the provided message in this channel.

##### Declaration

    public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
IMessage | message | The message that would be removed.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task | A task that represents the asynchronous removal operation.

| Improve this Doc View Source

#### DeleteMessageAsync(UInt64, RequestOptions)

Deletes a message.

##### Declaration

    public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | messageId | The snowflake identifier of the message that would be removed.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task | A task that represents the asynchronous removal operation.

| Improve this Doc View Source

#### DeleteMessagesAsync(IEnumerable<IMessage>, RequestOptions)

Bulk-deletes multiple messages.

##### Declaration

    public Task DeleteMessagesAsync(IEnumerable<IMessage> messages, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.Collections.Generic.IEnumerable<IMessage> | messages | The messages to be bulk-deleted.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task | A task that represents the asynchronous bulk-removal operation.

##### Remarks

This method attempts to remove the messages specified in bulk.

##### important

Due to the limitation set by Discord, this method can only remove messages that are posted within 14 days!

| Improve this Doc View Source

#### DeleteMessagesAsync(IEnumerable<UInt64>, RequestOptions)

Bulk-deletes multiple messages.

##### Declaration

    public Task DeleteMessagesAsync(IEnumerable<ulong> messageIds, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.Collections.Generic.IEnumerable<System.UInt64> | messageIds | The snowflake identifier of the messages to be bulk-deleted.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task | A task that represents the asynchronous bulk-removal operation.

##### Remarks

This method attempts to remove the messages specified in bulk.

##### important

Due to the limitation set by Discord, this method can only remove messages that are posted within 14 days!

| Improve this Doc View Source

#### EnterTypingState(RequestOptions)

Continuously broadcasts the "user is typing" message to all users in this channel until the returned object is disposed.

##### Declaration

    public IDisposable EnterTypingState(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.IDisposable | A disposable object that, upon its disposal, will stop the client from broadcasting its typing state in this channel.

| Improve this Doc View Source

#### GetCategoryAsync(RequestOptions)

Gets the parent (category) channel of this channel.

##### Declaration

    public Task<ICategoryChannel> GetCategoryAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<ICategoryChannel> | A task that represents the asynchronous get operation. The task result contains the category channel representing the parent of this channel; `null` if none is set.

| Improve this Doc View Source

#### GetInvitesAsync(RequestOptions)

Gets a collection of all invites to this channel.

##### Declaration

    public Task<IReadOnlyCollection<IInviteMetadata>> GetInvitesAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<IInviteMetadata>> | A task that represents the asynchronous get operation. The task result contains a read-only collection of invite metadata that are created for this channel.

| Improve this Doc View Source

#### GetMessageAsync(UInt64, RequestOptions)

Gets a message from this message channel.

##### Declaration

    public Task<RestMessage> GetMessageAsync(ulong id, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id | The snowflake identifier of the message.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestMessage> | A task that represents an asynchronous get operation for retrieving the message. The task result contains the retrieved message; `null` if no message is found with the specified identifier.

##### Remarks

This method follows the same behavior as described in GetMessageAsync(UInt64, CacheMode, RequestOptions). Please visit its documentation for more details on this method.

| Improve this Doc View Source

#### GetMessagesAsync(IMessage, Direction, Int32, RequestOptions)

Gets a collection of messages in this channel.

##### Declaration

    public IAsyncEnumerable<IReadOnlyCollection<RestMessage>> GetMessagesAsync(IMessage fromMessage, Direction dir, int limit = 100, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
IMessage | fromMessage | The starting message to get the messages from.
Direction | dir | The direction of the messages to be gotten from.
System.Int32 | limit | The numbers of message to be gotten from.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<RestMessage>> | Paged collection of messages.

##### Remarks

This method follows the same behavior as described in GetMessagesAsync(IMessage, Direction, Int32, CacheMode, RequestOptions). Please visit its documentation for more details on this method.

| Improve this Doc View Source

#### GetMessagesAsync(Int32, RequestOptions)

Gets the last N messages from this message channel.

##### Declaration

    public IAsyncEnumerable<IReadOnlyCollection<RestMessage>> GetMessagesAsync(int limit = 100, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.Int32 | limit | The numbers of message to be gotten from.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<RestMessage>> | Paged collection of messages.

##### Remarks

This method follows the same behavior as described in GetMessagesAsync(Int32, CacheMode, RequestOptions). Please visit its documentation for more details on this method.

| Improve this Doc View Source

#### GetMessagesAsync(UInt64, Direction, Int32, RequestOptions)

Gets a collection of messages in this channel.

##### Declaration

    public IAsyncEnumerable<IReadOnlyCollection<RestMessage>> GetMessagesAsync(ulong fromMessageId, Direction dir, int limit = 100, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | fromMessageId | The ID of the starting message to get the messages from.
Direction | dir | The direction of the messages to be gotten from.
System.Int32 | limit | The numbers of message to be gotten from.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<RestMessage>> | Paged collection of messages.

##### Remarks

This method follows the same behavior as described in GetMessagesAsync(UInt64, Direction, Int32, CacheMode, RequestOptions). Please visit its documentation for more details on this method.

| Improve this Doc View Source

#### GetPinnedMessagesAsync(RequestOptions)

Gets a collection of pinned messages in this channel.

##### Declaration

    public Task<IReadOnlyCollection<RestMessage>> GetPinnedMessagesAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<RestMessage>> | A task that represents the asynchronous get operation for retrieving pinned messages in this channel. The task result contains a collection of messages found in the pinned messages.

##### Remarks

This method follows the same behavior as described in GetPinnedMessagesAsync(RequestOptions). Please visit its documentation for more details on this method.

| Improve this Doc View Source

#### GetUserAsync(UInt64, RequestOptions)

Gets a user in this channel.

##### Declaration

    public Task<RestGuildUser> GetUserAsync(ulong id, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id | The snowflake identifier of the user.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestGuildUser> | A task representing the asynchronous get operation. The task result contains a guild user object that represents the user; `null` if none is found.

##### Exceptions

Type | Condition
--- | ---
System.InvalidOperationException | Resolving permissions requires the parent guild to be downloaded.

| Improve this Doc View Source

#### GetUsersAsync(RequestOptions)

Gets a collection of users that are able to view the channel.

##### Declaration

    public IAsyncEnumerable<IReadOnlyCollection<RestGuildUser>> GetUsersAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<RestGuildUser>> | A paged collection containing a collection of guild users that can access this channel. Flattening the paginated response into a collection of users with FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) is required if you wish to access the users.

##### Exceptions

Type | Condition
--- | ---
System.InvalidOperationException | Resolving permissions requires the parent guild to be downloaded.

| Improve this Doc View Source

#### GetWebhookAsync(UInt64, RequestOptions)

Gets a webhook available in this text channel.

##### Declaration

    public Task<RestWebhook> GetWebhookAsync(ulong id, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id | The identifier of the webhook.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestWebhook> | A task that represents the asynchronous get operation. The task result contains a webhook associated with the identifier; `null` if the webhook is not found.

| Improve this Doc View Source

#### GetWebhooksAsync(RequestOptions)

Gets the webhooks available in this text channel.

##### Declaration

    public Task<IReadOnlyCollection<RestWebhook>> GetWebhooksAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<RestWebhook>> | A task that represents the asynchronous get operation. The task result contains a read-only collection of webhooks that is available in this channel.

| Improve this Doc View Source

#### ModifyAsync(Action<TextChannelProperties>, RequestOptions)

Modifies this text channel.

##### Declaration

    public Task ModifyAsync(Action<TextChannelProperties> func, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.Action<TextChannelProperties> | func | The delegate containing the properties to modify the channel with.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task | A task that represents the asynchronous modification operation.

##### See Also

TextChannelProperties
| Improve this Doc View Source

#### SendFileAsync(Stream, String, String, Boolean, Embed, RequestOptions, Boolean)

Sends a file to this message channel with an optional caption.

##### Declaration

    public Task<RestUserMessage> SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false)

##### Parameters

Type | Name | Description
--- | --- | ---
System.IO.Stream | stream | The System.IO.Stream of the file to be sent.
System.String | filename | The name of the attachment.
System.String | text | The message to be sent.
System.Boolean | isTTS | Whether the message should be read aloud by Discord or not.
Embed | embed | The Rich Embed to be sent.
RequestOptions | options | The options to be used when sending the request.
System.Boolean | isSpoiler |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestUserMessage> | A task that represents an asynchronous send operation for delivering the message. The task result contains the sent message.

##### Remarks

This method follows the same behavior as described in SendFileAsync(Stream, String, String, Boolean, Embed, RequestOptions, Boolean). Please visit its documentation for more details on this method.

##### Exceptions

Type | Condition
--- | ---
System.ArgumentOutOfRangeException | Message content is too long, length must be less or equal to MaxMessageSize.

| Improve this Doc View Source

#### SendFileAsync(String, String, Boolean, Embed, RequestOptions, Boolean)

Sends a file to this message channel with an optional caption.

##### Declaration

    public Task<RestUserMessage> SendFileAsync(string filePath, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null, bool isSpoiler = false)

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | filePath | The file path of the file.
System.String | text | The message to be sent.
System.Boolean | isTTS | Whether the message should be read aloud by Discord or not.
Embed | embed | The Rich Embed to be sent.
RequestOptions | options | The options to be used when sending the request.
System.Boolean | isSpoiler |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestUserMessage> | A task that represents an asynchronous send operation for delivering the message. The task result contains the sent message.

##### Remarks

This method follows the same behavior as described in SendFileAsync(String, String, Boolean, Embed, RequestOptions, Boolean). Please visit its documentation for more details on this method.

##### Exceptions

Type | Condition
--- | ---
System.ArgumentException | `filePath` is a zero-length string, contains only white space, or contains one or more invalid characters as defined by System.IO.Path.GetInvalidPathChars.
System.ArgumentNullException | `filePath` is `null`.
System.IO.PathTooLongException | The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
System.IO.DirectoryNotFoundException | The specified path is invalid, (for example, it is on an unmapped drive).
System.UnauthorizedAccessException | `filePath` specified a directory.-or- The caller does not have the required permission.
System.IO.FileNotFoundException | The file specified in `filePath` was not found.
System.NotSupportedException | `filePath` is in an invalid format.
System.IO.IOException | An I/O error occurred while opening the file.
System.ArgumentOutOfRangeException | Message content is too long, length must be less or equal to MaxMessageSize.

| Improve this Doc View Source

#### SendMessageAsync(String, Boolean, Embed, RequestOptions)

Sends a message to this message channel.

##### Declaration

    public Task<RestUserMessage> SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | text | The message to be sent.
System.Boolean | isTTS | Determines whether the message should be read aloud by Discord or not.
Embed | embed | The Rich Embed to be sent.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestUserMessage> | A task that represents an asynchronous send operation for delivering the message. The task result contains the sent message.

##### Remarks

This method follows the same behavior as described in SendMessageAsync(String, Boolean, Embed, RequestOptions). Please visit its documentation for more details on this method.

##### Exceptions

Type | Condition
--- | ---
System.ArgumentOutOfRangeException | Message content is too long, length must be less or equal to MaxMessageSize.

| Improve this Doc View Source

#### SyncPermissionsAsync(RequestOptions)

Syncs the permissions of this nested channel with its parent's.

##### Declaration

    public Task SyncPermissionsAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task | A task that represents the asynchronous operation for syncing channel permissions with its parent's.

| Improve this Doc View Source

#### TriggerTypingAsync(RequestOptions)

Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds.

##### Declaration

    public Task TriggerTypingAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task | A task that represents the asynchronous operation that triggers the broadcast.

### Explicit Interface Implementations

| Improve this Doc View Source

#### IChannel.GetUserAsync(UInt64, CacheMode, RequestOptions)

Gets a user in this channel.

##### Declaration

    Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id | The snowflake identifier of the user (e.g. `168693960628371456`).
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IUser> | A task that represents the asynchronous get operation. The task result contains a user object that represents the found user; `null` if none is found.

| Improve this Doc View Source

#### IChannel.GetUsersAsync(CacheMode, RequestOptions)

Gets a collection of users that are able to view the channel or are currently in this channel.

##### Declaration

    IAsyncEnumerable<IReadOnlyCollection<IUser>> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<IUser>> | Paged collection of users.

##### Remarks

##### important

The returned collection is an asynchronous enumerable object; one must call FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) to access the individual messages as a collection.

This method will attempt to fetch all users that is able to view this channel or is currently in this channel. The library will attempt to split up the requests according to and MaxUsersPerBatch. In other words, if there are 3000 users, and the MaxUsersPerBatch constant is `1000`, the request will be split into 3 individual requests; thus returning 53individual asynchronous responses, hence the need of flattening.
| Improve this Doc View Source

#### IGuildChannel.GetUserAsync(UInt64, CacheMode, RequestOptions)

Gets a user in this channel.

##### Declaration

    Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id | The snowflake identifier of the user.
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IGuildUser> | A task representing the asynchronous get operation. The task result contains a guild user object that represents the user; `null` if none is found.

| Improve this Doc View Source

#### IGuildChannel.GetUsersAsync(CacheMode, RequestOptions)

Gets a collection of users that are able to view the channel or are currently in this channel.

##### Declaration

    IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<IGuildUser>> | Paged collection of users.

##### Remarks

This method follows the same behavior as described in GetUsersAsync(CacheMode, RequestOptions). Please visit its documentation for more details on this method.

| Improve this Doc View Source

#### IMessageChannel.GetMessageAsync(UInt64, CacheMode, RequestOptions)

Gets a message from this message channel.

##### Declaration

    Task<IMessage> IMessageChannel.GetMessageAsync(ulong id, CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id | The snowflake identifier of the message.
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IMessage> | A task that represents an asynchronous get operation for retrieving the message. The task result contains the retrieved message; `null` if no message is found with the specified identifier.

| Improve this Doc View Source

#### IMessageChannel.GetMessagesAsync(IMessage, Direction, Int32, CacheMode, RequestOptions)

Gets a collection of messages in this channel.

##### Declaration

    IAsyncEnumerable<IReadOnlyCollection<IMessage>> IMessageChannel.GetMessagesAsync(IMessage fromMessage, Direction dir, int limit, CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
IMessage | fromMessage | The starting message to get the messages from.
Direction | dir | The direction of the messages to be gotten from.
System.Int32 | limit | The numbers of message to be gotten from.
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<IMessage>> | Paged collection of messages.

##### Remarks

##### important

The returned collection is an asynchronous enumerable object; one must call FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) to access the individual messages as a collection.

##### warning

Do not fetch too many messages 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 messages specified under `limit` around the message `fromMessage` depending on the `dir`. The library will attempt to split up the requests according to your `limit` and MaxMessagesPerBatch. In other words, should the user request 500 messages, and the MaxMessagesPerBatch constant is `100`, the request will be split into 5 individual requests; thus returning 5 individual asynchronous responses, hence the need of flattening.
| Improve this Doc View Source

#### IMessageChannel.GetMessagesAsync(Int32, CacheMode, RequestOptions)

Gets the last N messages from this message channel.

##### Declaration

    IAsyncEnumerable<IReadOnlyCollection<IMessage>> IMessageChannel.GetMessagesAsync(int limit, CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
System.Int32 | limit | The numbers of message to be gotten from.
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<IMessage>> | Paged collection of messages.

##### Remarks

##### important

The returned collection is an asynchronous enumerable object; one must call FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) to access the individual messages as a collection.

##### warning

Do not fetch too many messages 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 messages specified under `limit`. The library will attempt to split up the requests according to your `limit` and MaxMessagesPerBatch. In other words, should the user request 500 messages, and the MaxMessagesPerBatch constant is `100`, the request will be split into 5 individual requests; thus returning 5 individual asynchronous responses, hence the need of flattening.
| Improve this Doc View Source

#### IMessageChannel.GetMessagesAsync(UInt64, Direction, Int32, CacheMode, RequestOptions)

Gets a collection of messages in this channel.

##### Declaration

    IAsyncEnumerable<IReadOnlyCollection<IMessage>> IMessageChannel.GetMessagesAsync(ulong fromMessageId, Direction dir, int limit, CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | fromMessageId | The ID of the starting message to get the messages from.
Direction | dir | The direction of the messages to be gotten from.
System.Int32 | limit | The numbers of message to be gotten from.
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IAsyncEnumerable<System.Collections.Generic.IReadOnlyCollection<IMessage>> | Paged collection of messages.

##### Remarks

##### important

The returned collection is an asynchronous enumerable object; one must call FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) to access the individual messages as a collection.

##### warning

Do not fetch too many messages 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 messages specified under `limit` around the message `fromMessageId` depending on the `dir`. The library will attempt to split up the requests according to your `limit` and MaxMessagesPerBatch. In other words, should the user request 500 messages, and the MaxMessagesPerBatch constant is `100`, the request will be split into 5 individual requests; thus returning 5 individual asynchronous responses, hence the need of flattening.
| Improve this Doc View Source

#### IMessageChannel.GetPinnedMessagesAsync(RequestOptions)

Gets a collection of pinned messages in this channel.

##### Declaration

    Task<IReadOnlyCollection<IMessage>> IMessageChannel.GetPinnedMessagesAsync(RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<IMessage>> | A task that represents the asynchronous get operation for retrieving pinned messages in this channel. The task result contains a collection of messages found in the pinned messages.

| Improve this Doc View Source

#### IMessageChannel.SendFileAsync(Stream, String, String, Boolean, Embed, RequestOptions, Boolean)

Sends a file to this message channel with an optional caption.

##### Declaration

    Task<IUserMessage> IMessageChannel.SendFileAsync(Stream stream, string filename, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler)

##### Parameters

Type | Name | Description
--- | --- | ---
System.IO.Stream | stream | The System.IO.Stream of the file to be sent.
System.String | filename | The name of the attachment.
System.String | text | The message to be sent.
System.Boolean | isTTS | Whether the message should be read aloud by Discord or not.
Embed | embed | The Rich Embed to be sent.
RequestOptions | options | The options to be used when sending the request.
System.Boolean | isSpoiler | Whether the message attachment should be hidden as a spoiler.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IUserMessage> | A task that represents an asynchronous send operation for delivering the message. The task result contains the sent message.

##### Remarks

This method sends a file as if you are uploading an attachment directly from your Discord client.

##### note

If you wish to upload an image and have it embedded in a Rich embed, you may upload the file and refer to the file with "attachment://filename.ext" in the ImageUrl. See the example section for its usage.

| Improve this Doc View Source

#### IMessageChannel.SendFileAsync(String, String, Boolean, Embed, RequestOptions, Boolean)

Sends a file to this message channel with an optional caption.

##### Declaration

    Task<IUserMessage> IMessageChannel.SendFileAsync(string filePath, string text, bool isTTS, Embed embed, RequestOptions options, bool isSpoiler)

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | filePath | The file path of the file.
System.String | text | The message to be sent.
System.Boolean | isTTS | Whether the message should be read aloud by Discord or not.
Embed | embed | The Rich Embed to be sent.
RequestOptions | options | The options to be used when sending the request.
System.Boolean | isSpoiler | Whether the message attachment should be hidden as a spoiler.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IUserMessage> | A task that represents an asynchronous send operation for delivering the message. The task result contains the sent message.

##### Remarks

This method sends a file as if you are uploading an attachment directly from your Discord client.

##### note

If you wish to upload an image and have it embedded in a Rich embed, you may upload the file and refer to the file with "attachment://filename.ext" in the ImageUrl. See the example section for its usage.

| Improve this Doc View Source

#### IMessageChannel.SendMessageAsync(String, Boolean, Embed, RequestOptions)

Sends a message to this message channel.

##### Declaration

    Task<IUserMessage> IMessageChannel.SendMessageAsync(string text, bool isTTS, Embed embed, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | text | The message to be sent.
System.Boolean | isTTS | Determines whether the message should be read aloud by Discord or not.
Embed | embed | The Rich Embed to be sent.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IUserMessage> | A task that represents an asynchronous send operation for delivering the message. The task result contains the sent message.

| Improve this Doc View Source

#### INestedChannel.GetCategoryAsync(CacheMode, RequestOptions)

Gets the parent (category) channel of this channel.

##### Declaration

    Task<ICategoryChannel> INestedChannel.GetCategoryAsync(CacheMode mode, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
CacheMode | mode | The CacheMode that determines whether the object should be fetched from cache.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<ICategoryChannel> | A task that represents the asynchronous get operation. The task result contains the category channel representing the parent of this channel; `null` if none is set.

| Improve this Doc View Source

#### ITextChannel.CreateWebhookAsync(String, Stream, RequestOptions)

Creates a webhook in this text channel.

##### Declaration

    Task<IWebhook> ITextChannel.CreateWebhookAsync(string name, Stream avatar, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | name | The name of the webhook.
System.IO.Stream | avatar | The avatar of the webhook.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IWebhook> | A task that represents the asynchronous creation operation. The task result contains the newly created webhook.

| Improve this Doc View Source

#### ITextChannel.GetWebhookAsync(UInt64, RequestOptions)

Gets a webhook available in this text channel.

##### Declaration

    Task<IWebhook> ITextChannel.GetWebhookAsync(ulong id, RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id | The identifier of the webhook.
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IWebhook> | A task that represents the asynchronous get operation. The task result contains a webhook associated with the identifier; `null` if the webhook is not found.

| Improve this Doc View Source

#### ITextChannel.GetWebhooksAsync(RequestOptions)

Gets the webhooks available in this text channel.

##### Declaration

    Task<IReadOnlyCollection<IWebhook>> ITextChannel.GetWebhooksAsync(RequestOptions options)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<IWebhook>> | A task that represents the asynchronous get operation. The task result contains a read-only collection of webhooks that is available in this channel.

### Implements

IUpdateable
IRestMessageChannel
ITextChannel
IMessageChannel
IMentionable
INestedChannel
IGuildChannel
IChannel
ISnowflakeEntity
IEntity<TId>
IDeletable