class DMChannel
extends
BaseChannelexport class DMChannel extends BaseChannelRepresents a direct message channel between two users.
The timestamp the channel was created at
Inherited from: BaseChannel
flags : Readonly<ChannelFlagsBitField>
The flags that are applied to the channel. This is only null in a PartialGroupDMChannel. In all other cases, it is not null.
readonlyoptionallastMessage? : Message
The Message object of the last message in the channel, if one was sent
optionallastMessageId? : Snowflake
The channel's last message id, if one was sent
readonlyoptionallastPinAt? : Date
The date when the last pinned message was pinned, if there was one
optionallastPinTimestamp? : 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
Whether this Channel is a partial This is always false outside of DM channels.
Inherited from: BaseChannel
recipientId : Snowflake
The recipient's id
type : ChannelType.DM
The type of the channel
awaitMessageComponent(options?: AwaitMessageComponentOptions) : Promise<MessageComponentInteraction>
Collects a single component interaction that passes the filter. The Promise will reject if the time expires.
// 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.
// 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(options?: MessageCollectorOptions) : MessageCollector
Creates a Message Collector.
// 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(options?: MessageComponentCollectorOptions) : InteractionCollector
Creates a component interaction collector.
// 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.
// Delete the channel
channel.delete()
.then(console.log)
.catch(console.error);Inherited from: BaseChannel
isDMBased() : this is PartialGroupDMChannel | DMChannel | PartialDMChannel
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
send(options: string | MessagePayload | MessageCreateOptions) : Promise<Message>
Sends a message to this channel.
// 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);Sends a typing indicator in the channel.
// Start typing in a channel
channel.sendTyping();Returns: Resolves upon the typing status being sent *
toString() : UserMention
When concatenated with a string, this automatically returns the recipient's mention instead of the DMChannel object.
// Logs: Hello from <@123456789012345678>!
console.log(`Hello from ${channel}!`);