class DMChannel
extends
BaseChannelexport class DMChannel extends BaseChannelRepresents 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
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
permissions : Readonly<PermissionsBitField> | null
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
The recipient on the other end of the DM, if this is a DMChannel with the client user.
The recipient's id, if this is a DMChannel with the client user.
recipientIds : Snowflake[]
The recipients' ids
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 DMChannel | PartialDMChannel | PartialGroupDMChannel
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.
// 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);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}!`);