options?: ReactionCollectorOptions & { errors?: ReactionCollectorEndReason[] } → Promise<Collection<string, CollectedReaction>>
Wait for reactions matching the filter, then resolve the collected set. Pass errors: ['time'] to reject when the timer fires instead of resolving.
message.awaitReactions();
options?: ReactionCollectorOptions → ReactionCollector
Create a ReactionCollector for this message.
message.createReactionCollector();
→ Promise<void>
Delete this message.
attachmentId: string → Promise<void>
Delete a specific attachment from this message.
await message.deleteAttachment(attachmentId);
options: MessageEditOptions → Promise<Message>
Edit this message (requires author or admin permissions).
await message.edit(options);
→ Promise<Message>
Fetch the latest version of this message from the API.
emoji: EmojiInput, options?: { limit?: number; after?: string; } → Promise<User[]>
Fetch users who reacted with a specific emoji.
await message.fetchReactionUsers(emoji);
emoji: EmojiInput, options?: { limit?: number; after?: string; } → Promise<{ users: User[]; hasMore: boolean; nextAfter: string | null }>
Fetch reaction users with pagination metadata.
await message.fetchReactionUsersPage(emoji);
→ Promise<void>
Pin this message in the channel.
emoji: EmojiInput → Promise<void>
React to this message with an emoji.
await message.react(emoji);
→ Promise<void>
Remove all reactions from this message.
await message.removeAllReactions();
emoji: EmojiInput, userId?: string → Promise<void>
Remove a reaction (bot's own or a user's if ID is provided).
await message.removeReaction(emoji);
emoji: EmojiInput → Promise<void>
Remove all reactions of a specific emoji.
await message.removeReactionEmoji(emoji);
options: string | (MessageSendOptions & ReplyOptions), replyOptions?: ReplyOptions → Promise<Message>
Reply to this message.
await message.reply('Pong!');
await message.reply('No ping!', { ping: false });
await message.reply({ content: 'Silent', allowedMentions: AllowedMentions.suppressReplyPing });
message: Message | PartialMessage → Promise<Message>
Hydrate a partial message, or return the message as-is.
client.on(Events.MessageUpdate, async (_old, msg) => {
const message = await Message.resolve(msg);
});
→ Promise<Channel>
Fetch this message's channel (cache first). The returned Channel has channel.delete and channel.send.
const channel = await message.resolveChannel();
await channel.delete();
→ Promise<Guild | null>
Fetch and resolve the guild, or null if a DM. Propagates network/auth errors; only returns null when there is no guildId.
const guild = await message.resolveGuild();
options: MessagePrepareInput → Promise<Message>
Send a standalone message in this channel (not a reply). Prefer channel.send or reply when you already have the channel or are answering.
await message.send(options);
channelId: string, options: MessagePrepareInput → Promise<Message>
Send a message to another channel by ID. Prefer client.channels.fetch(channelId) then channel.send.
await message.sendTo(channelId, options);
→ Promise<void>
Unpin this message from the channel.