Skip to main content
Some things have no class of their own: you get them as plain objects, with the fields of Discord written in camelCase. They have no methods, and nothing on them sends a request.
The structures that have a page of their own are listed in the overview. What a message contains when you send one is in Message options.
Two things hold everywhere on this page:
  • A date is a string in ISO 8601 ('2026-10-06T12:00:00.000000+00:00'): new Date(value) turns it into a Date.
  • A user inside plain data is plain data too (id, username, globalName, avatar…), not a User. Only Ban holds a real User.

Attachment

A file attached to a message. You read them in message.attachments.
Snowflake
required
The id of the attachment.
string
required
The name of the file.
string
The title of the file.
string
What the file shows, for people who can’t see it (1024 characters at most).
string
The media type of the file (image/png).
number
required
The size of the file, in bytes.
string
required
The URL of the file.
string
required
The URL of the file through the proxy of Discord.
number | null
The height, for an image or a video.
number | null
The width, for an image or a video.
string
A tiny blurred preview of an image or a video, as a thumbhash.
number
The version of that preview.
boolean
Whether the file belongs to an ephemeral message: it disappears with it.
number
The length of an audio or video file, in seconds.
string
The sampled waveform of a voice message, as base64.
number
The flags of the attachment, as a bit field.
object[]
For a clip of a stream, the users who were in the stream (plain data).
string
For a clip of a stream, when it was recorded.
object | null
For a clip of a stream, the application that was streamed, when Discord recognized it (plain data).
Discord documentation

Reaction

The reactions of one emoji on a message. You read them in message.reactions, one entry per emoji.
number
required
How many times the emoji was used, super reactions included.
object
required
The same count, split.
boolean
required
Whether the bot reacted with this emoji.
boolean
required
Whether the bot super-reacted with this emoji.
object
required
The emoji.
string[]
required
The colors of the super reactions, as hex text.
To react or read who reacted, see Message: react(), fetchReactionUsers(). Discord documentation

ReactionEmoji

The emoji of a reaction: a standard one has only a name ("👍"), a custom one has an id too. The reaction events give one.
Snowflake | null
required
The id of a custom emoji; null for a standard one.
string | null
required
The name of a custom emoji, or the character of a standard one.
boolean
Whether a custom emoji is animated.
Discord documentation

ForumTag

A tag the posts of a forum can have. You read them in forum.availableTags, and pass them in availableTags when you create or edit a forum channel.
Snowflake
required
The id of the tag.
string
required
The name of the tag (0-20 characters).
boolean
required
Whether only members with the ManageThreads permission can add the tag to a post or remove it.
Snowflake | null
required
The id of a custom emoji of the server shown next to the tag.
string | null
required
A standard emoji shown next to the tag, as its character.
A tag has either emojiId or emojiName, or neither. Discord documentation

ThreadMember

Someone in a thread, and since when. thread.fetchMembers() returns a list of them.
Snowflake
The id of the thread.
Snowflake
The id of the user.
string
required
When the user last joined the thread.
number
required
The settings of the user for the thread, as a bit field; today only about notifications.
To get the member behind it, use guild.fetchMember(threadMember.userId). Discord documentation

PermissionOverwrite

What a role or a member is allowed or denied in one channel. You read them in channel.permissionOverwrites.
Snowflake
required
The id of the role or of the member.
'role' | 'member'
required
Whether it applies to a role or to a member.
Permissions
required
What is allowed, whatever the server says.
Permissions
required
What is denied, whatever the server says.
allow and deny are Permissions sets, so overwrite.allow.has('SendMessages') works. To change an overwrite, use channel.setPermissions() and channel.deletePermissions(); the permissionOverwrites field of ChannelCreateOptions has another shape, the one Discord takes. Discord documentation

Ban

A ban of a server. guild.fetchBan() returns one, guild.fetchBans() a list.
User
required
Who is banned.
string | null
required
Why, when a reason was given.
Discord documentation

AuditLog

What moderators and bots did in a server: its entries, newest first, and what they refer to. guild.fetchAuditLog() returns one.
object[]
required
The entries, from the most recent to the oldest.
object[]
required
The users the entries refer to (plain data).
object[]
required
The webhooks the entries refer to (plain data).
object[]
required
The threads the entries refer to (plain data).
object[]
required
The integrations the entries refer to, partially (plain data).
object[]
required
The commands the entries refer to (plain data).
AutoModerationRule[]
required
The auto moderation rules the entries refer to.
ScheduledEvent[]
required
The scheduled events the entries refer to.
Discord documentation

AuditLogEntry

One thing a moderator or a bot did in a server: what, by whom, on what, and what changed. auditLogEntryCreate gives one; its fields are the ones of an entry of AuditLog: id, actionType, targetId, userId, reason, changes and options. Discord documentation

ScheduledEvent

An event scheduled in a server: when it happens, where, and how often. guild.fetchScheduledEvents() returns a list, guild.createScheduledEvent() the one it created.
Snowflake
required
The id of the event.
Snowflake
required
The id of the server.
Snowflake | null
required
The id of the channel where the event takes place; null when it takes place outside Discord.
Snowflake | null
The id of the user who created the event.
string
required
The name of the event (1-100 characters).
string | null
The description of the event (1-1000 characters).
string
required
When the event starts.
string | null
required
When the event ends; always set for an event outside Discord.
2
required
Who can see the event: 2, the members of the server.
1 | 2 | 3 | 4
required
1 scheduled, 2 active, 3 completed, 4 canceled.
1 | 2 | 3
required
Where it takes place: 1 a stage channel, 2 a voice channel, 3 outside Discord.
Snowflake | null
required
The id of what the event is tied to, when there is one.
object | null
required
More about the place.
object
The user who created the event (plain data).
number
How many users are interested in the event.
string | null
The hash of the cover image.
object | null
required
How often the event repeats; null when it happens once.
Discord documentation

AutoModerationRule

A rule Discord applies by itself to the messages of a server: what triggers it, and what it does then. guild.fetchAutoModerationRules() returns a list.
Snowflake
required
The id of the rule.
Snowflake
required
The id of the server.
string
required
The name of the rule.
Snowflake
required
The id of the user who created the rule.
1 | 2
required
When the rule is checked: 1 a member sends or edits a message, 2 a member edits their profile.
1 | 3 | 4 | 5 | 6
required
What triggers it: 1 words from a list, 3 spam, 4 words from a preset list of Discord, 5 too many mentions, 6 words from a list in the profile of a member.
object
required
The details of the trigger. Which fields are there depends on triggerType.
object[]
required
What happens when the rule is triggered.
boolean
required
Whether the rule is on.
Snowflake[]
required
The ids of the roles the rule ignores (20 at most).
Snowflake[]
required
The ids of the channels the rule ignores (50 at most).
Discord documentation

Sticker

A sticker: one of a server, or a standard one from a pack. guild.fetchStickers() returns the ones of a server.
Snowflake
required
The id of the sticker.
Snowflake
For a standard sticker, the id of its pack.
string
required
The name of the sticker.
string | null
required
The description of the sticker.
string
required
The words that suggest the sticker when typing (200 characters at most).
1 | 2
required
1 a standard sticker from a pack, 2 a sticker of a server.
1 | 2 | 3 | 4
required
The format of the image: 1 PNG, 2 APNG, 3 Lottie, 4 GIF.
boolean
Whether the sticker of a server can be used; false when the server lost the boosts it needed.
Snowflake
The id of the server that owns the sticker.
object
The user who uploaded the sticker (plain data).
number
The place of a standard sticker in its pack.
To send one, pass its id in the stickers of a message: see Message options. Discord documentation

VoiceState

Where someone is in voice, and how: muted, deafened, streaming… The voice events give one.
Snowflake | null
required
The id of the voice channel the person is in.
Snowflake
required
The id of the person.
string
required
The id of their voice session.
boolean
required
Whether the server deafened them.
boolean
required
Whether the server muted them.
boolean
required
Whether they deafened themselves.
boolean
required
Whether they muted themselves.
boolean
Whether they are streaming with Go Live.
boolean
required
Whether their camera is on.
boolean
required
Whether they may not speak (in a stage channel, an audience member).
string | null
required
When they asked to speak, in a stage channel.
Discord documentation

UserPresence

Whether someone is online and what they are doing: their status, their activities, and on which devices. presenceUpdate gives one.
'online' | 'idle' | 'dnd' | 'offline'
required
Their status.
object[]
required
What they are doing, the first one being what Discord shows.
object
required
Their status on each kind of device they use; a device they don’t use is left out.
Discord documentation