Show / Hide Table of Contents

# Class SocketDMChannel

Represents a WebSocket-based direct-message channel.

##### Inheritance

System.Object
SocketEntity<System.UInt64>
SocketChannel
SocketDMChannel

##### Implements

IDMChannel
ISocketPrivateChannel
IPrivateChannel
ISocketMessageChannel
IMessageChannel
IChannel
ISnowflakeEntity
IEntity<System.UInt64>

##### Inherited Members

SocketChannel.CreatedAt
SocketEntity<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.WebSocket

###### Assembly: Discord.Net.WebSocket.dll

##### Syntax

    public class SocketDMChannel : SocketChannel, IDMChannel, ISocketPrivateChannel, IPrivateChannel, ISocketMessageChannel, IMessageChannel, IChannel, ISnowflakeEntity, IEntity<ulong>

### Properties

| Improve this Doc View Source

#### CachedMessages

##### Declaration

    public IReadOnlyCollection<SocketMessage> CachedMessages { get; }

##### Property Value

Type | Description
--- | ---
System.Collections.Generic.IReadOnlyCollection<SocketMessage> |

| Improve this Doc View Source

#### Recipient

Gets the recipient of the channel.

##### Declaration

    public SocketUser Recipient { get; }

##### Property Value

Type | Description
--- | ---
SocketUser |

| Improve this Doc View Source

#### Users

Gets a collection that is the current logged-in user and the recipient.

##### Declaration

    public IReadOnlyCollection<SocketUser> Users { get; }

##### Property Value

Type | Description
--- | ---
System.Collections.Generic.IReadOnlyCollection<SocketUser> |

### Methods

| Improve this Doc View Source

#### CloseAsync(RequestOptions)

##### Declaration

    public Task CloseAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task |

| Improve this Doc View Source

#### DeleteMessageAsync(IMessage, RequestOptions)

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
IMessage | message |
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task |

| Improve this Doc View Source

#### DeleteMessageAsync(UInt64, RequestOptions)

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | messageId |
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task |

| Improve this Doc View Source

#### EnterTypingState(RequestOptions)

##### Declaration

    public IDisposable EnterTypingState(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.IDisposable |

| Improve this Doc View Source

#### GetCachedMessage(UInt64)

##### Declaration

    public SocketMessage GetCachedMessage(ulong id)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id |

##### Returns

Type | Description
--- | ---
SocketMessage |

| Improve this Doc View Source

#### GetCachedMessages(IMessage, Direction, Int32)

##### Declaration

    public IReadOnlyCollection<SocketMessage> GetCachedMessages(IMessage fromMessage, Direction dir, int limit = 100)

##### Parameters

Type | Name | Description
--- | --- | ---
IMessage | fromMessage |
Direction | dir |
System.Int32 | limit |

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IReadOnlyCollection<SocketMessage> |

| Improve this Doc View Source

#### GetCachedMessages(Int32)

##### Declaration

    public IReadOnlyCollection<SocketMessage> GetCachedMessages(int limit = 100)

##### Parameters

Type | Name | Description
--- | --- | ---
System.Int32 | limit |

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IReadOnlyCollection<SocketMessage> |

| Improve this Doc View Source

#### GetCachedMessages(UInt64, Direction, Int32)

##### Declaration

    public IReadOnlyCollection<SocketMessage> GetCachedMessages(ulong fromMessageId, Direction dir, int limit = 100)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | fromMessageId |
Direction | dir |
System.Int32 | limit |

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IReadOnlyCollection<SocketMessage> |

| Improve this Doc View Source

#### GetMessageAsync(UInt64, RequestOptions)

Gets the message associated with the given `id`.

##### Declaration

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

##### Parameters

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

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IMessage> | The message gotten from either the cache or the download, or `null` if none is found.

| Improve this Doc View Source

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

Gets a collection of messages in this channel.

##### Declaration

    public IAsyncEnumerable<IReadOnlyCollection<IMessage>> 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<IMessage>> | 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<IMessage>> 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<IMessage>> | 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<IMessage>> 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<IMessage>> | 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)

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<RestMessage>> |

| Improve this Doc View Source

#### GetUser(UInt64)

Gets a user in this channel from the provided `id`.

##### Declaration

    public SocketUser GetUser(ulong id)

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id | The snowflake identifier of the user.

##### Returns

Type | Description
--- | ---
SocketUser | A SocketUser object that is a recipient of this channel; otherwise `null`.

| Improve this Doc View Source

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

##### 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 |
System.String | filename |
System.String | text |
System.Boolean | isTTS |
Embed | embed |
RequestOptions | options |
System.Boolean | isSpoiler |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestUserMessage> |

##### 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)

##### 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 |
System.String | text |
System.Boolean | isTTS |
Embed | embed |
RequestOptions | options |
System.Boolean | isSpoiler |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestUserMessage> |

| Improve this Doc View Source

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

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | text |
System.Boolean | isTTS |
Embed | embed |
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<RestUserMessage> |

##### Exceptions

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

| Improve this Doc View Source

#### ToString()

Returns the recipient user.

##### Declaration

    public override string ToString()

##### Returns

Type | Description
--- | ---
System.String |

##### Overrides

System.Object.ToString()
| Improve this Doc View Source

#### TriggerTypingAsync(RequestOptions)

##### Declaration

    public Task TriggerTypingAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task |

### Explicit Interface Implementations

| Improve this Doc View Source

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

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id |
CacheMode | mode |
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IUser> |

| Improve this Doc View Source

#### IChannel.Name

##### Declaration

    string IChannel.Name { get; }

##### Returns

Type | Description
--- | ---
System.String |

| Improve this Doc View Source

#### IDMChannel.Recipient

##### Declaration

    IUser IDMChannel.Recipient { get; }

##### Returns

Type | Description
--- | ---
IUser |

| Improve this Doc View Source

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

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
System.UInt64 | id |
CacheMode | mode |
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IMessage> |

| Improve this Doc View Source

#### IMessageChannel.GetPinnedMessagesAsync(RequestOptions)

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<IMessage>> |

| Improve this Doc View Source

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

##### 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 |
System.String | filename |
System.String | text |
System.Boolean | isTTS |
Embed | embed |
RequestOptions | options |
System.Boolean | isSpoiler |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IUserMessage> |

| Improve this Doc View Source

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

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | filePath |
System.String | text |
System.Boolean | isTTS |
Embed | embed |
RequestOptions | options |
System.Boolean | isSpoiler |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IUserMessage> |

| Improve this Doc View Source

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

##### Declaration

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

##### Parameters

Type | Name | Description
--- | --- | ---
System.String | text |
System.Boolean | isTTS |
Embed | embed |
RequestOptions | options |

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IUserMessage> |

| Improve this Doc View Source

#### IPrivateChannel.Recipients

##### Declaration

    IReadOnlyCollection<IUser> IPrivateChannel.Recipients { get; }

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IReadOnlyCollection<IUser> |

| Improve this Doc View Source

#### ISocketPrivateChannel.Recipients

##### Declaration

    IReadOnlyCollection<SocketUser> ISocketPrivateChannel.Recipients { get; }

##### Returns

Type | Description
--- | ---
System.Collections.Generic.IReadOnlyCollection<SocketUser> |

### Implements

IDMChannel
ISocketPrivateChannel
IPrivateChannel
ISocketMessageChannel
IMessageChannel
IChannel
ISnowflakeEntity
IEntity<TId>