class DMChannel

extends

BaseChannel
export class DMChannel extends BaseChannel

Represents a direct message channel between two users.

appPermissions : Readonly<PermissionsBitField> | null

The computed permissions of the application in this channel, including overwrites. This is only present on channels received through an interaction's resolved data, and only when the application's bot user is in the guild.

Inherited from: BaseChannel

readonly
client : Client<true>

The client that instantiated this

Inherited from: Base

readonly
createdAt : Date | null

The time the channel was created at

Inherited from: BaseChannel

readonly
createdTimestamp : number | null

The timestamp the channel was created at

Inherited from: BaseChannel

The flags that are applied to the channel. This is only null in a PartialGroupDMChannel. In all other cases, it is not null.

id : Snowflake

The channel's id

Inherited from: BaseChannel

readonlyoptional
lastMessage? : Message

The Message object of the last message in the channel, if one was sent

optional
lastMessageId? : Snowflake

The channel's last message id, if one was sent

readonlyoptional
lastPinAt? : Date

The date when the last pinned message was pinned, if there was one

optional
lastPinTimestamp? : number

The timestamp when the last pinned message was pinned, if there was one

messages : DMMessageManager

A manager of the messages belonging to this channel

readonly
partial : false

Whether this Channel is a partial This is always false outside of DM channels.

Inherited from: BaseChannel

The computed permissions of the user who invoked the interaction in this channel, including overwrites. This is only present on channels received through an interaction's resolved data.

Inherited from: BaseChannel

readonly
recipient : User | null

The recipient on the other end of the DM, if this is a DMChannel with the client user.

readonly
recipientId : Snowflake | null

The recipient's id, if this is a DMChannel with the client user.

recipientIds : Snowflake[]

The recipients' ids

The type of the channel

readonly
url : string

The URL to the channel

Inherited from: BaseChannel

awaitMessageComponent() : Promise<MessageComponentInteraction>

Collects a single component interaction that passes the filter. The Promise will reject if the time expires.

Examples:
// Collect a message component interaction
const filter = (interaction) => interaction.customId === 'button' && interaction.user.id === 'someId';
channel.awaitMessageComponent({ filter, time: 15_000 })
  .then(interaction => console.log(`${interaction.customId} was clicked!`))
  .catch(console.error);

awaitMessages(
options?: AwaitMessagesOptions = {}
) : Promise<Collection<Snowflake, Message>>

Similar to createMessageCollector but in promise form. Resolves with a collection of messages that pass the specified filter.

Examples:
// Await !vote messages
const filter = m => m.content.startsWith('!vote');
// Errors: ['time'] treats ending because of the time limit as an error
channel.awaitMessages({ filter, max: 4, time: 60_000, errors: ['time'] })
  .then(collected => console.log(collected.size))
  .catch(collected => console.log(`After a minute, only ${collected.size} out of 4 voted.`));

createMessageCollector() : MessageCollector

Creates a Message Collector.

Examples:
// Create a message collector
const filter = message => message.content.includes('discord');
const collector = channel.createMessageCollector({ filter, time: 15_000 });
collector.on('collect', message => console.log(`Collected ${message.content}`));
collector.on('end', collected => console.log(`Collected ${collected.size} items`));

createMessageComponentCollector() : InteractionCollector

Creates a component interaction collector.

Examples:
// Create a button interaction collector
const filter = (interaction) => interaction.customId === 'button' && interaction.user.id === 'someId';
const collector = channel.createMessageComponentCollector({ filter, time: 15_000 });
collector.on('collect', interaction => console.log(`Collected ${interaction.customId}`));
collector.on('end', collected => console.log(`Collected ${collected.size} items`));

delete() : Promise<this>

Deletes this channel.

Examples:
// Delete the channel
channel.delete()
  .then(console.log)
  .catch(console.error);

Inherited from: BaseChannel

fetch(
force?: boolean = true
) : Promise<this>

Fetch this DMChannel.

Indicates whether this channel is DM-based (either a DMChannel or a PartialGroupDMChannel).

Inherited from: BaseChannel

isSendable() : this is SendableChannels

Indicates whether this channel is sendable.

Inherited from: BaseChannel

isTextBased() : this is TextBasedChannel

Indicates whether this channel is text-based.

Inherited from: BaseChannel

isThread() : this is AnyThreadChannel

Indicates whether this channel is a ThreadChannel.

Inherited from: BaseChannel

isThreadOnly() : this is ThreadOnlyChannel

Indicates whether this channel is thread-only.

Inherited from: BaseChannel

isVoiceBased() : this is VoiceBasedChannel

Indicates whether this channel is voice-based.

Inherited from: BaseChannel

Sends a message to this channel.

Examples:
// Send a basic message
channel.send('hello!')
  .then(message => console.log(`Sent message: ${message.content}`))
  .catch(console.error);
// Send a remote file
channel.send({
  files: ['https://github.com/discordjs.png']
})
  .then(console.log)
  .catch(console.error);
// Send a local file
channel.send({
  files: [{
    attachment: 'entire/path/to/file.jpg',
    name: 'file.jpg',
    description: 'A description of the file'
  }]
})
  .then(console.log)
  .catch(console.error);

sendTyping() : Promise<void>

Sends a typing indicator in the channel.

Examples:
// Start typing in a channel
channel.sendTyping();

Returns: Resolves upon the typing status being sent *

toJSON(
...props: Record<string, boolean | string>[]
) : unknown

Inherited from: Base

toString() : UserMention

When concatenated with a string, this automatically returns the recipient's mention instead of the DMChannel object.

Examples:
// Logs: Hello from <@123456789012345678>!
console.log(`Hello from ${channel}!`);

valueOf() : string

Inherited from: Base