class DMChannel

extends

BaseChannel
export class DMChannel extends BaseChannel

Represents a direct message channel between two users.

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

readonly
recipient : User | null

The recipient on the other end of the DM

recipientId : Snowflake

The recipient's id

The type of the channel

readonly
url : string

The URL to the channel

Inherited from: BaseChannel

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

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
) : Promise<this>

Fetch this DMChannel.

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

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://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']
})
  .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