Skip to content

Instantly share code, notes, and snippets.

@sudojunior
Created April 12, 2018 20:55
Show Gist options
  • Save sudojunior/a62891993bfa40286d2ffeefb2c51e43 to your computer and use it in GitHub Desktop.
Save sudojunior/a62891993bfa40286d2ffeefb2c51e43 to your computer and use it in GitHub Desktop.
A gist definition file based of Discord's Documentation, just more compatible with editors like VS and VSCode. (README.md Included)

Discord Documentation Definitions

Credits

First off, I would like to thank Discord for creating this documentation in the first place. You can find their documentation here.

Contact

If any of the following occur, please contact me using any of the details above:

  • Documentation Update
  • Incorrect Content

Notes

  • Move to a repository to manage all type definitions?
  • Should re-order all definitions in alphabetical order...
  • Finish adding link references for definitions.
/// #A#udit
/** {@link https://discordapp.com/developers/docs/resources/audit-log#audit-log-object-audit-log-structure | Audit}
* @typedef {Object} Audit
* @prop {Webhook[]} webhooks
* @prop {User[]} users
* @prop {AuditEntry[]} audit_log_entries
*/
/** {@link https://discordapp.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-entry-structure | Audit Entry}
* @typedef {Object} AuditEntry
* @prop {?String} target_id
* @prop {AuditChange[]} [changes]
* @prop {Snowflake} user_id
* @prop {Snowflake} id
* @prop {AuditEvent} action_type
* @prop {AuditEntryInfo} [options]
* @prop {String} [reason]
*/
/** {@link https://discordapp.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events | Audit Events}
* @typedef {Number} AuditEvent
* @description
* - GUILD_UPDATE: 1
* - CHANNEL_CREATE: 10
* - CHANNEL_UPDATE: 11
* - CHNANEL_DELETE: 12
* - CHANNEL_OVERWRITE_CREATE: 13
* - CHANNEL_OVERWRITE_UPDATE: 14
* - CHANNEL_OVERWRITE_DELETE: 15
* - MEMBER_KICK: 20
* - MEMBER_PRUNE: 21
* - MEMBER_BAN_ADD: 22
* - MEMBER_BAN_REMOVE: 23
* - MEMBER_UPDATE: 24
* - MEMBER_ROLE_UPDATE: 25
* - ROLE_CREATE: 30
* - ROLE_UPDATE: 31
* - ROLE_DELETE: 32
* - INVITE_CREATE: 40
* - INVITE_UPDATE: 41
* - INVITE_DELETE: 42
* - WEBHOOK_CREATE: 50
* - WEBHOOK_UPDATE: 51
* - WEBHOOK_DELETE: 52
* - EMOJI_CREATE: 60
* - EMOJI_UPDATE: 61
* - EMOJI_DELETE: 62
* - MESSAGE_DELETE: 72
*/
/** {@link https://discordapp.com/developers/docs/resources/audit-log#audit-log-entry-object-optional-audit-entry-info | Optional Audit Entry Info}
* @typedef {Object} AuditEntryInfo
* @prop {String} delete_member_days (21)
* @prop {String} members_removed (21)
* @prop {Snowflake} channel_id (72)
* @prop {String} count (72)
* @prop {Snowflake} id (13, 14, 15)
* @prop {ChannelOverwriteType} type (13, 14, 15)
* @prop {String} role_name (13, 14, 15)
*/
/** {@link https://discordapp.com/developers/docs/resources/audit-log#audit-log-entry-object-optional-audit-entry-info | Audit Change}
* @typedef {Object} AuditChange
* @prop {?Object} [new_value]
* @prop {?Object} [old_value]
* @prop {AuditChangeKey} key
*/
/** {@link | Audit Change Key}
* @typedef {String} AuditChangeKey
* @description
* - name: String (guild)
* - icon_hash: String (guild)
* - splash_hash: String (guild)
* - owner_id: {@see Snowflake} (guild)
* - region: String (guild)
* - afk_channel_id: {@see Snowflake} (guild)
* - afk_timeout: Number (guild)
* - mfa_level: Number (guild)
* - verification_level: Number (guild)
* - explict_content_filter: Number (guild)
* - default_message_notifications: Number (guild)
* - vanity_url_code: String (guild)
* - $add: {@see Role}[] (guild)
* - $remove: {@see Role}[] (guild)
* - prune_delete_days: Number (guild)
* - widget_enabled: Boolean (guild)
* - widget_channel_id: {@see Snowflake} (guild)
* - position: {@see Snowflake} (channel)
* - topic: String (channel)
* - bitrate: Number (channel)
* - permission_overwrites: {@see ChannelOverwrite}[] (channel)
* - nsfw: Boolean (channel)
* - application_id: {@see Snowflake} (channel)
* - permissions: Number (role)
* - color: Number (role)
* - hoist: Boolean (role)
* - mentionable: Boolean (role)
* - allow: Number (role)
* - deny: Number (role)
* - code: String (invite)
* - channel_id: {@see Snowflake} (invite)
* - inviter_id: {@see Snowflake} (invite)
* - max_uses: Number (invite)
* - uses: Number (invite)
* - max_age: Number (invite)
* - temporary: Boolean (invite)
* - deaf: Boolean (user)
* - mute: Boolean (user)
* - nick: Boolean (user)
* - avatar_hash: String (user)
* - id: {@see Snowflake} (*)
* - type: {@see ChannelType} | String (*)
*/
/// #C#hannel
/** {@link https://discordapp.com/developers/docs/resources/channel#channel-object-channel-structure | Channel}
* @typedef {Object} Channel
* @prop {String} id
* @prop {ChanneType} type
* @prop {String} [guild_id]
* @prop {Number} [position]
* @prop {RawChannelOverwrite[]} [permission_overwrites]
* @prop {String} [name]
* @prop {String} [topic]
* @prop {Boolean} [nsfw]
* @prop {Snowflake} [last_message_id]
* @prop {Number} [bitrate]
* @prop {Number} [user_limit]
* @prop {UserObject[]} [recipients]
* @prop {String} [icon]
* @prop {Snowflake} [owner_id]
* @prop {Snowflake} [application_id]
* @prop {Snowflake} [parent_id]
* @prop {String} [last_pin_timestamp]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#channel-object-channel-types | Channel Type}
* @typedef {Number} ChannelType
* @description
* - GUILD_TEXT: 0
* - DM: 1
* - GUILD_VOICE: 2
* - GROUP_DM: 3
* - GUILD_CATEGORY: 4
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#overwrite-object-overwrite-structure | Channel Overwrite}
* @typedef {Object} ChannelOverwrite
* @prop {Snowflake} id
* @prop {ChannelOverwriteType} type
* @prop {Number} allow
* @prop {Number} deny
*/
/** {@link | Channel Overwrite Type}
* @typedef {String} ChannelOverwriteType
* @description
* - role
* - member
*/
/// #E#moji
/** {@link | Emoji}
* @typedef {Object} Emoji
* @prop {?Snowflake} id
* @prop {String} name
* @prop {Role[]} [roles]
* @prop {User} [user]
* @prop {Boolean} [require_colons]
* @prop {Boolean} [managed]
* @prop {Boolean} [animated]
*/
/// #G#uild
/** {@link | Guild}
* @typedef {Object} Guild
* @prop {Snowflake} id
* @prop {String} name
* @prop {?String} icon
* @prop {?String} splash
* @prop {Boolean} [owner]
* @prop {Snowflake} owner_id
* @prop {Number} [permissions]
* @prop {String} region
* @prop {Snowflake} [afk_channel_id]
* @prop {Number} afk_timeout
* @prop {Boolean} [embed_enabled]
* @prop {Snowflake} [embed_channel_id]
* @prop {Number} verification_level
* @prop {Number} default_message_notifications
* @prop {Number} explicit_content_filter
* @prop {Role[]} roles
* @prop {Emoji[]} emojis
* @prop {String[]} features
* @prop {Number} mfa_level
* @prop {Snowflake} [application_id]
* @prop {Boolean} [widget_enabled]
* @prop {Snowflake} [widget_channel_id]
* @prop {?Snowflake} system_channel_id
* @prop {ISO8601} [joined_at]
* @prop {Boolean} [large]
* @prop {Boolean} [unavailable]
* @prop {Number} [member_count]
* @prop {?VoiceState[]} [voice_states]
* @prop {GuildMember[]} [members]
* @prop {Channel[]} [channels]
* @prop {Presence[]} [presences]
*/
/**
* @typedef {Object} GuildMember
* @prop {User} user
* @prop {String} nick
* @prop {Snowflake[]} roles
* @prop {ISO8601} joined_at
* @prop {Boolean} deaf
* @prop {Boolean} mute
*/
/**
* @typedef {Object} GuildIntegration
* @prop {Snowflake} id
* @prop {String} name
* @prop {GuildIntegrationType} type
* @prop {Boolean} enabled
* @prop {Boolean} syncing
* @prop {Snowflake} role_id
* @prop {Number} expire_behavior
* @prop {Number} expire_grace_period
* @prop {User} user
* @prop {GuildIntegrationAccount} account
*/
/**
* @typedef {Object} GuildIntegrationAccount
* @prop {String} id
* @prop {String} name
*/
/**
* @typedef {Object} GuildBanObject
* @prop {String} reason
* @prop {User} user
*/
/// #M#essage
/** {@link https://discordapp.com/developers/docs/resources/channel#message-object-message-structure | Message}
* @typedef {Object} Message
* @prop {String} id
* @prop {String} channel_id
* @prop {UserObject} author
* @prop {String} content
* @prop {ISO8601} timestamp
* @prop {ISO8601} [edited_timestamp]
* @prop {Boolean} tts
* @prop {Boolean} mention_everyone
* @prop {UserObject[]} mentions
* @prop {RoleObject[]} mention_roles
* @prop {MessageAttachment[]} attachments
* @prop {MessageEmbed[]} embeds
* @prop {MessageReaction[]} [reactions]
* @prop {String} [nonce]
* @prop {Boolean} pinned
* @prop {String} [webhook_id]
* @prop {MessageType} type
* @prop {MessageActivity} [activity]
* @prop {MessageApplication} [application]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#message-object-message-activity-structure | Message Activity Structure}
* @typedef {Object} MessageActivity
* @prop {Number} type
* @prop {String} [party_id]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#message-object-message-activity-types | Message Activity Type}
* @typedef {Number} MessageActivityType
* @description
* - JOIN: 1
* - SPECTATE: 2
* - LISTEN: 3
* - ?: 4
* - JOIN_REQUEST: 5
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#message-object-message-application-structure | Message Appliction Structure}
* @typedef {Object} MessageApplication
* @prop {Snowflake} id
* @prop {String} cover_image
* @prop {String} description
* @prop {String} icon
* @prop {String} name
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#attachment-object-attachment-structure | Message Attachment}
* @typedef {Object} MessageAttachment
* @prop {Snowflake} id
* @prop {String} filename
* @prop {Number} size
* @prop {String} url
* @prop {String} proxy_url
* @prop {Number} [height]
* @prop {Number} [width]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#embed-object-embed-structure | Message Embed}
* @typedef {Object} MessageEmbed
* @prop {String} [title]
* @prop {String} [type="rich"]
* @prop {String} [description]
* @prop {String} [url]
* @prop {ISO8601} [timestamp]
* @prop {Number} [color]
* @prop {MessageEmbedFooter} [footer]
* @prop {MessageEmbedImage} [image]
* @prop {MessageEmbedThumbnail} [thumbnail]
* @prop {MessageEmbedVideo} [video]
* @prop {MessageEmbedProvider} [provider]
* @prop {MessageEmbedAuthor} [author]
* @prop {MessageEmbedField[]} [fields]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#embed-object-embed-footer-structure | Message Embed Footer}
* @typedef {Object} MessageEmbedFooter
* @prop {String} [text]
* @prop {String} [icon_url]
* @prop {String} [proxy_icon_url]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#embed-object-embed-image-structure | Message Embed Image}
* @typedef {Object} MessageEmbedImage
* @prop {String} [url]
* @prop {String} [proxy_url]
* @prop {Number} [height]
* @prop {Number} [width]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#embed-object-embed-structure | Message Embed Thumbnail}
* @typedef {Object} MessageEmbedThumbnail
* @prop {String} [url]
* @prop {String} [proxy_url]
* @prop {Number} [height]
* @prop {Number} [width]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#embed-object-embed-video-structure | Message Embed Video}
* @typedef {Object} MessageEmbedVideo
* @prop {String} [url]
* @prop {Number} [height]
* @prop {Number} [width]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#embed-object-embed-provider-structure | Message Embed Provider}
* @typedef {Object} MessageEmbedProvider
* @prop {String} [url]
* @prop {String} [name]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#embed-object-embed-author-structure | Message Embed Author}
* @typedef {Object} MessageEmbedAuthor
* @prop {String} [name]
* @prop {String} [url]
* @prop {String} [icon_url]
* @prop {String} [proxy_icon_url]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#embed-object-embed-field-structure | Message Embed Field}
* @typedef {Object} MessageEmbedField
* @prop {String} name
* @prop {String} value
* @prop {Boolean} [inline]
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#reaction-object-reaction-structure | Message Reaction}
* @typedef {Object} MessageReaction
* @prop {Number} count
* @prop {Boolean} me
* @prop {?EmojiObject} emoji
*/
/** {@link https://discordapp.com/developers/docs/resources/channel#message-object-message-types | Message Type}
* @typedef {Number} MessageType
* @description
* - DEFAULT: 0
* - RECIPIENT_ADD: 1
* - RECIPIENT_REMOVE: 2
* - CALL: 3
* - CHANNEL_NAME_CHANGE: 4
* - CHANNEL_ICON_CHANGE: 5
* - CHANNEL_PINNED_MESSAGE: 6
* - GUILD_MEMBER_JOIN: 7
*/
/// #O#ther
/**
* {@link https://wikipedia.org/wiki/ISO_8601 | Wikipedia - ISO 8601}
* {@link https://www.iso.org/iso-8601-date-and-time-format.html | ISO.org - ISO 8601}
* @typedef {String} ISO8601
*/
/** {@link https://discordapp.com/developers/docs/reference#snowflakes | Snowflakes}
* @typedef {Number} Snowflake
*/
/// #P#resence
/** {@link https://discordapp.com/developers/docs/topics/gateway#presence-update-presence-update-event-fields | Presence}
* @typedef {Object} Presence
* @prop {User} user
* @prop {Snowflake[]} roles
* @prop {PresenceActivity} [game]
* @prop {Snowflake} guild_id
* @prop {PresenceStatus} status
*/
/** {@link https://discordapp.com/developers/docs/topics/gateway#activity-object-activity-structure | Presence Activity}
* @typedef {Object} PresenceActivity
* @prop {String} name
* @prop {PresenceType} type
* @prop {String} [url]
* @prop {PresenceTimestamps} [timestamps]
* @prop {Snowflake} [application_id]
* @prop {String} [details]
* @prop {String} [state]
* @prop {PresenceParty} [party]
* @prop {PresenceAssets} [assets]
* @prop {PresenceSecrets} [secrets]
* @prop {Boolean} [instance]
* @prop {PresenceFlags} [flags]
*/
/** {@link https://discordapp.com/developers/docs/topics/gateway#presence-update-presence-update-event-fields | Presence Status}
* @typedef {String} PresenceStatus
* @description
* - idle
* - dnd
* - online
* - offline
*/
/** {@link https://discordapp.com/developers/docs/topics/gateway#activity-object-activity-types | Presence Type}
* @typedef {Number} PresenceType
* @description
* - 0: Game (Playing {name})
* - 1: Streaming (Streaming {name})
* - 2: Listening (Listening to {name})
*/
/** {@link https://discordapp.com/developers/docs/topics/gateway#activity-object-activity-timestamps | Presence Timestamps}
* @typedef {Object} PresenceTimestamps
* @prop {Number} [start]
* @prop {Number} [end]
*/
/** {@link https://discordapp.com/developers/docs/topics/gateway#activity-object-activity-party | Presency Party}
* @typedef {Object} PresenceParty
* @prop {String} [id]
* @prop {[Number, Number]} [size]
*/
/** {@link https://discordapp.com/developers/docs/topics/gateway#activity-object-activity-assets | Presence Assets}
* @typedef {Object} PresenceAssets
* @prop {String} [large_image]
* @prop {String} [large_text]
* @prop {String} [small_image]
* @prop {String} [small_text]
*/
/** {@link https://discordapp.com/developers/docs/topics/gateway#activity-object-activity-secrets | Presence Secrets}
* @typedef {Object} PresenceSecrets
* @prop {String} [join]
* @prop {String} [spectate]
* @prop {String} [match]
*/
/** {@link https://discordapp.com/developers/docs/topics/gateway#activity-object-activity-flags | Presence Flags}
* @typedef {Number} PresenceFlags
* @description
* - INSTANCE: 1 << 0
* - JOIN: 1 << 1
* - SPECTATE: 1 << 2
* - JOIN_REQUEST: 1 << 3
* - SYNC: 1 << 4
* - PLAY: 1 << 5
*/
/// #R#ole
/** {@link | Role}
* @typedef {Object} Role
* @prop {Snowflake} id
* @prop {String} name
* @prop {Number} color
* @prop {Boolean} hoist
* @prop {Number} position
* @prop {Number} permissions
* @prop {Boolean} managed
* @prop {Boolean} mentionable
*/
/// #U#ser
/** {@link | User}
* @typedef {Object} User
* @prop {Snowflake} id
* @prop {String} username
* @prop {String} discriminator
* @prop {?String} avatar
* @prop {Boolean} [bot]
* @prop {Boolean} [mfa_enabled]
* @prop {Boolean} [verified]
* @prop {String} [email]
*/
/** {@link | User Connection}
* @typedef {Object} UserConnection
* @prop {String} id
* @prop {String} name
* @prop {String} type
* @prop {Boolean} revoked
* @prop {GuildIntegration[]} integrations
*/
/// #V#oice
/** {@link https://discordapp.com/developers/docs/resources/voice#voice-state-object | Voice State}
* @typedef {Object} VoiceState
* @prop {Snowflake} [guild_id]
* @prop {?Snowflake} channel_id
* @prop {Snowflake} user_id
* @prop {String} session_id
* @prop {Boolean} deaf
* @prop {Boolean} mute
* @prop {Boolean} self_deaf
* @prop {Boolean} self_mute
* @prop {Boolean} suppress
*/
/** {@link https://discordapp.com/developers/docs/resources/voice#voice-region-object | Voice Region}
* @typedef {Object} VoiceRegion
* @prop {String} id
* @prop {String} name
* @prop {Boolean} vip
* @prop {Boolean} optimal
* @prop {Boolean} deprecated
* @prop {Boolean} custom
*/
/// #W#ebhook
/** {@link https://discordapp.com/developers/docs/resources/webhook#webhook-object | Webhook}
* @typedef {Object} Webhook
* @prop {Snowflake} id
* @prop {Snowflake} [guild_id]
* @prop {Snowflake} channel_id
* @prop {User} [user]
* @prop {String} [name]
* @prop {String} [avatar]
* @prop {String} token
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment