From f5212ed31eb9ba3fc64f99a67513cc7b9024d33e Mon Sep 17 00:00:00 2001 From: Izhar Ahmad <54180221+nerdguyahmad@users.noreply.github.com> Date: Wed, 13 Oct 2021 22:42:59 +0500 Subject: [PATCH 001/181] Add note for choice value type (#3953) * Add note for choice value type * Update docs/interactions/Application_Commands.md Co-authored-by: Lala Sabathil * Rephrase choice's value note a bit. Co-authored-by: Lala Sabathil --- docs/interactions/Application_Commands.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index d3e04330c9..61557f7318 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -66,10 +66,12 @@ Application commands are commands that an application can register to Discord. T If you specify `choices` for an option, they are the **only** valid values for a user to pick -| Field | Type | Description | -| ----- | -------------------------- |---------------------------------------------------- | -| name | string | 1-100 character choice name | -| value | string, integer, or double | value of the choice, up to 100 characters if string | +| Field | Type | Description | +| ----- | ----------------------------- | --------------------------------------------------- | +| name | string | 1-100 character choice name | +| value | string, integer, or double \* | value of the choice, up to 100 characters if string | + +\* Type of `value` depends on the [option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) that the choice belongs to. ###### Application Command Interaction Data Option Structure From c808c940459ed32ea654cebee92bec45c3ad1a0e Mon Sep 17 00:00:00 2001 From: Ian Mitchell Date: Wed, 13 Oct 2021 14:29:12 -0700 Subject: [PATCH 002/181] Update test.yaml --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 0825a84dd7..ab283f61f5 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,4 +1,4 @@ -name: Testing +name: Verify Links on: [push, pull_request] jobs: lint: From b7c07ebaafacf2e4331605608699b686cb0f1123 Mon Sep 17 00:00:00 2001 From: Ian Mitchell Date: Thu, 14 Oct 2021 09:39:32 -0700 Subject: [PATCH 003/181] Fix Broken Link (#3955) * Fix Broken Link * Update test.yaml --- .github/workflows/test.yaml | 2 ++ docs/interactions/Receiving_and_Responding.md | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ab283f61f5..cd784bc07f 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,5 +1,7 @@ name: Verify Links + on: [push, pull_request] + jobs: lint: name: ESLint diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index cd9189e367..dab081a7fb 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -1,8 +1,8 @@ # Interactions -An **[Interaction](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object)** is the message that your application receives when a user uses an application command or a message component. +An **[Interaction](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object)** is the message that your application receives when a user uses an application command or a message component. -For [Slash Commands](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/slash-commands), it includes the values that the user submitted. +For [Slash Commands](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/slash-commands), it includes the values that the user submitted. For [User Commands](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/user-commands) and [Message Commands](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/message-commands), it includes the resolved user or message on which the action was taken. @@ -137,7 +137,7 @@ An [Interaction](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object) - [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-interaction-object-sample-component-interaction) - [Select Menu Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menu-object-select-menu-interaction) -An explanation of all the fields can be found in our [data models](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/data-models-and-types). +An explanation of all the fields can be found in our [data models](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object). Now that you've gotten the data from the user, it's time to respond to them. From fb317e48cd868a5813c8e47c4ae09060d7c56bcf Mon Sep 17 00:00:00 2001 From: Rodry <38259440+ImRodry@users.noreply.github.com> Date: Thu, 14 Oct 2021 17:47:41 +0100 Subject: [PATCH 004/181] Mark auto_archive_duration as optional when creating a thread (#3567) * Mark auto_archive_duration as optional when creating a thread * Change default_auto_archive_duration --- docs/resources/Channel.md | 78 +++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 56645ea819..548d3c3f8b 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -6,34 +6,34 @@ Represents a guild or DM channel within Discord. ###### Channel Structure -| Field | Type | Description | -|--------------------------------|----------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| id | snowflake | the id of this channel | -| type | integer | the [type of channel](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | -| guild_id? | snowflake | the id of the guild (may be missing for some channel objects received over gateway guild dispatches) | -| position? | integer | sorting position of the channel | -| permission_overwrites? | array of [overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | explicit permission overwrites for members and roles | -| name? | string | the name of the channel (1-100 characters) | -| topic? | ?string | the channel topic (0-1024 characters) | -| nsfw? | boolean | whether the channel is nsfw | -| last_message_id? | ?snowflake | the id of the last message sent in this channel (may not point to an existing or valid message) | -| bitrate? | integer | the bitrate (in bits) of the voice channel | -| user_limit? | integer | the user limit of the voice channel | -| rate_limit_per_user?\* | integer | amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected | -| recipients? | array of [user](#DOCS_RESOURCES_USER/user-object) objects | the recipients of the DM | -| icon? | ?string | icon hash | -| owner_id? | snowflake | id of the creator of the group DM or thread | -| application_id? | snowflake | application id of the group DM creator if it is bot-created | -| parent_id? | ?snowflake | for guild channels: id of the parent category for a channel (each parent category can contain up to 50 channels), for threads: id of the text channel this thread was created | -| last_pin_timestamp? | ?ISO8601 timestamp | when the last pinned message was pinned. This may be `null` in events such as `GUILD_CREATE` when a message is not pinned. | -| rtc_region? | ?string | [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id for the voice channel, automatic when set to null | -| video_quality_mode? | integer | the camera [video quality mode](#DOCS_RESOURCES_CHANNEL/channel-object-video-quality-modes) of the voice channel, 1 when not present | -| message_count? | integer | an approximate count of messages in a thread, stops counting at 50 | -| member_count? | integer | an approximate count of users in a thread, stops counting at 50 | -| thread_metadata? | a [thread metadata](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) object | thread-specific fields not needed by other channels | -| member? | a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object | thread member object for the current user, if they have joined the thread, only included on certain API endpoints | -| default_auto_archive_duration? | integer | default duration for newly created threads, in minutes, to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | -| permissions? | string | computed permissions for the invoking user in the channel, including overwrites, only included when part of the `resolved` data received on a slash command interaction | +| Field | Type | Description | +|--------------------------------|----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| id | snowflake | the id of this channel | +| type | integer | the [type of channel](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | +| guild_id? | snowflake | the id of the guild (may be missing for some channel objects received over gateway guild dispatches) | +| position? | integer | sorting position of the channel | +| permission_overwrites? | array of [overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | explicit permission overwrites for members and roles | +| name? | string | the name of the channel (1-100 characters) | +| topic? | ?string | the channel topic (0-1024 characters) | +| nsfw? | boolean | whether the channel is nsfw | +| last_message_id? | ?snowflake | the id of the last message sent in this channel (may not point to an existing or valid message) | +| bitrate? | integer | the bitrate (in bits) of the voice channel | +| user_limit? | integer | the user limit of the voice channel | +| rate_limit_per_user?\* | integer | amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected | +| recipients? | array of [user](#DOCS_RESOURCES_USER/user-object) objects | the recipients of the DM | +| icon? | ?string | icon hash | +| owner_id? | snowflake | id of the creator of the group DM or thread | +| application_id? | snowflake | application id of the group DM creator if it is bot-created | +| parent_id? | ?snowflake | for guild channels: id of the parent category for a channel (each parent category can contain up to 50 channels), for threads: id of the text channel this thread was created | +| last_pin_timestamp? | ?ISO8601 timestamp | when the last pinned message was pinned. This may be `null` in events such as `GUILD_CREATE` when a message is not pinned. | +| rtc_region? | ?string | [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id for the voice channel, automatic when set to null | +| video_quality_mode? | integer | the camera [video quality mode](#DOCS_RESOURCES_CHANNEL/channel-object-video-quality-modes) of the voice channel, 1 when not present | +| message_count? | integer | an approximate count of messages in a thread, stops counting at 50 | +| member_count? | integer | an approximate count of users in a thread, stops counting at 50 | +| thread_metadata? | a [thread metadata](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) object | thread-specific fields not needed by other channels | +| member? | a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object | thread member object for the current user, if they have joined the thread, only included on certain API endpoints | +| default_auto_archive_duration? | integer | default duration that the clients (not the API) will use for newly created threads, in minutes, to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | +| permissions? | string | computed permissions for the invoking user in the channel, including overwrites, only included when part of the `resolved` data received on a slash command interaction | \* `rate_limit_per_user` also applies to thread creation. Users can send one message and create one thread during each `rate_limit_per_user` interval. @@ -814,7 +814,7 @@ Requires the `MANAGE_CHANNELS` permission for the guild. Fires a [Channel Update | parent_id | ?snowflake | id of the new parent category for a channel | Text, News, Store, Voice | | rtc_region | ?string | channel [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id, automatic when set to null | Voice | | video_quality_mode | ?integer | the camera [video quality mode](#DOCS_RESOURCES_CHANNEL/channel-object-video-quality-modes) of the voice channel | Voice | -| default_auto_archive_duration | ?integer | the default duration for newly created threads in the channel, in minutes, to automatically archive the thread after recent activity | Text, News | +| default_auto_archive_duration | ?integer | the default duration that the clients use (not the API) for newly created threads in the channel, in minutes, to automatically archive the thread after recent activity | Text, News | ###### JSON Params (Thread) @@ -1194,10 +1194,10 @@ When called on a `GUILD_TEXT` channel, creates a `GUILD_PUBLIC_THREAD`. When cal ###### JSON Params -| Field | Type | Description | -|-------------------------|---------|---------------------------------------------------------------------------------------------------------------------| -| name | string | 1-100 character channel name | -| auto_archive_duration\* | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | +| Field | Type | Description | +|--------------------------|---------|---------------------------------------------------------------------------------------------------------------------| +| name | string | 1-100 character channel name | +| auto_archive_duration?\* | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | \* The 3 day and 7 day archive durations require the server to be boosted. The [guild features](#DOCS_RESOURCES_GUILD/guild-object-guild-features) will indicate if a server is able to use those settings. @@ -1210,12 +1210,12 @@ Creates a new thread that is not connected to an existing message. The created t ###### JSON Params -| Field | Type | Description | -|---------------------------|---------|---------------------------------------------------------------------------------------------------------------------| -| name | string | 1-100 character channel name | -| auto_archive_duration\*\* | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | -| type?\*\*\* | integer | the [type of thread](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) to create | -| invitable? | boolean | whether non-moderators can add other non-moderators to a thread; only available when creating a private thread | +| Field | Type | Description | +|----------------------------|---------|---------------------------------------------------------------------------------------------------------------------| +| name | string | 1-100 character channel name | +| auto_archive_duration?\*\* | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | +| type?\*\*\* | integer | the [type of thread](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) to create | +| invitable? | boolean | whether non-moderators can add other non-moderators to a thread; only available when creating a private thread | \* Creating a private thread requires the server to be boosted. The [guild features](#DOCS_RESOURCES_GUILD/guild-object-guild-features) will indicate if that is possible for the guild. From b102d7cbaf8989a54d90ab828e1081759d62ca58 Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Wed, 20 Oct 2021 11:34:44 -0700 Subject: [PATCH 005/181] Update readme and add code of conduct (#3974) --- CODE_OF_CONDUCT.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 11 +++---- README.md | 8 +++++ 3 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..c9deead7e6 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,75 @@ +## **Our Pledge** + +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +## **Our Standards** + +Examples of behavior that contributes to a positive environment for our community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, hate speech, and personal or political attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or email address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + +## **Enforcement Responsibilities** + +Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. + +## **Scope** + +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. + +## **Enforcement** + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [https://dis.gd/contact](https://dis.gd/contact). All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the reporter of any incident. + +## **Enforcement Guidelines** + +Community leaders will follow the Community Impact Guidelines below in determining the consequences for any action they deem in violation of this Code of Conduct. We reserve the right to take a more severe enforcement action if a single violation is extremely egregious and harmful, for example: hate speech or threats of IRL violence. + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of actions. + +**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the community. + +## **Attribution** + +This Code of Conduct is adapted from the **[Contributor Covenant](https://www.contributor-covenant.org/)**, version 2.1, available at **[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html)**. + +Community Impact Guidelines were inspired by **[Mozilla’s code of conduct enforcement ladder](https://github.com/mozilla/diversity)**. + +For answers to common questions about this code of conduct, see the FAQ at **[https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq)**. Translations are available at **[https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations)**. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7df4f07e4c..d1c565e8ac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,14 +1,15 @@ ## Wanted Changes 1. Fixes to incorrect statements or inaccuracies within the documentation. -2. Rewording or extending documentation to clarify unclear wording or complicated explanations. -3. Additions that fill gaps or missing pieces in the current documentation. -4. Fixing of spelling and grammatical errors in the documentation. +1. Rewording or extending documentation to clarify unclear wording or complicated explanations. +1. Additions that fill gaps or missing pieces in the current documentation. +1. Fixing of spelling and grammatical errors in the documentation. ## Unwanted Changes 1. Whitespace or formatting changes. -2. Modifications to the overall structure and format of the API docs. -3. Additions that replicate or needlessly restructure current documentation. +1. Subjective wording changes. +1. Modifications to the overall structure and format of the API docs. +1. Additions that replicate or needlessly restructure current documentation. By submitting pull requests to this repository, you waive any rights or ownership of the included contents to Discord. Contributions to this repository must conform to the [Discord App TOS](https://discord.com/terms). diff --git a/README.md b/README.md index ae74015b9d..b69c154dd5 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,14 @@ This repo contains the official Discord API documentation, which can be viewed online [HERE](https://discord.com/developers/docs/intro). Before submitting pull-requests, please remember to _fully_ read the [Contributing](CONTRIBUTING.md) guidelines. +This repository reflects the Discord API as it is meant to be accessed by third-party applications. It omits features and capabilities that are not generally available, or are not fully supported for third-party usage. + +We welcome your contributions! + +- Issue tracker: Discord API bugs +- Discussions: Discord API feature and improvement requests +- Pull Requests: See [Contributing.md](https://github.com/discord/discord-api-docs/blob/master/CONTRIBUTING.md) + ## Markdown Syntax This repository uses special markdown syntax that helps style the resulting web version of the documentation. From 46b9d00f9feb313b7c757ce0c2a6053e6fcf90fa Mon Sep 17 00:00:00 2001 From: devsnek Date: Thu, 21 Oct 2021 14:54:39 -0500 Subject: [PATCH 006/181] admin perm overrides command permissions (#3976) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Florian Spieß --- docs/Change_Log.md | 6 ++++++ docs/interactions/Application_Commands.md | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index aa3eb50867..d3dabc1773 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -1,5 +1,11 @@ # Change Log +## Application Command Permissions Change + +#### October 20, 2021 + +Guild owners and members with the Administrator permission may now use application commands even when `default_permission` is set to `false`. + ## Updated Thread Permissions #### September 16, 2021 diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index 61557f7318..13f308a2ad 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -268,7 +268,7 @@ Need to keep some of your commands safe from prying eyes, or only available to t > info > For now, if you don't have permission to use a command, they'll show up in the command picker as disabled and unusable. They will **not** be hidden. -You can also set a `default_permission` on your commands if you want them to be disabled by default when your app is added to a new guild. Setting `default_permission` to `false` will disallow _anyone_ in a guild from using the command—even Administrators and guild owners—unless a specific overwrite is configured. It will also disable the command from being usable in DMs. +You can also set a `default_permission` on your commands if you want them to be disabled by default when your app is added to a new guild. Setting `default_permission` to `false` will disallow _anyone_ in a guild from using the command—except Administrators and guild owners—unless a specific overwrite is configured. It will also disable the command from being usable in DMs. For example, this command will not be usable by anyone in any guilds by default: From 4967eca72d034b54d35c31cdd1c419ebe992a54c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Fri, 22 Oct 2021 00:59:58 +0200 Subject: [PATCH 007/181] Document multi file upload (#3860) * Document multi file upload * Review suggestions * Update warning * Filename needs to be unique * Reformatting and new information * Fix link * Add description to attachment structure * Clarify attachments list for patch endpoints * Add footnote for attachments * Add docs for callback data * Review suggestions * Add info block for required fields in attachment structure * Rename file[n] to files[n] * Some rewording --- docs/Reference.md | 100 ++++++++++++++++ docs/interactions/Receiving_and_Responding.md | 20 ++-- docs/resources/Channel.md | 108 ++++-------------- docs/resources/Webhook.md | 35 +++--- 4 files changed, 150 insertions(+), 113 deletions(-) diff --git a/docs/Reference.md b/docs/Reference.md index 46f59e3937..7459fbad79 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -338,3 +338,103 @@ data:image/jpeg;base64,BASE64_ENCODED_JPEG_IMAGE_DATA ``` Ensure you use the proper content type (`image/jpeg`, `image/png`, `image/gif`) that matches the image data being provided. + +## Uploading Files + +Some endpoints support file attachments, indicated by the `files[n]` parameter. To add a file to the request, the standard `application/json` body must be replaced by a `multipart/form-data` body. The otherwise json body can instead be provided using a special `payload_json` parameter in addition to a number of `files[n]` parameters. + +All `files[n]` parameters must include a valid `Content-Disposition` subpart header with a `filename` and unique `name` parameter. Each file parameter must be uniquely named in the format `files[n]` such as `files[0]`, `files[1]`, or `files[42]`. The suffixed index `n` is the *snowflake placeholder* for the `attachments` json parameter that is supplied in `payload_json` (or [Callback Data Payloads](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object-interaction-callback-data-structure)). + +The file upload limit applies to the entire request, not individual files in a request. This limit depends on the **Boost Tier** of a Guild and is 8 MiB by default. + +Images can also be referenced in embeds using the `attachments://filename` URL. An example payload is provided below. + +### Editing Message Attachments + +All files added to a request, as described above, will be appended to the message in a `PATCH` request. The `attachments` json parameter has a special behavior for edit, as it is used for both removing attachments from the message as well as adding descriptions for new attachments added by the request. + +The `attachments` json parameter lists all files that should be attached to the message after the edit, including all new files added and the respective snowflake placeholders. To remove attachments, simply exclude them from this list. + +###### Example Request Bodies (multipart/form-data) + +Note that these examples are small sections of an HTTP request to demonstrate behaviour of this endpoint - client libraries will set their own form boundaries, `boundary` is just an example. For more information, refer to the [multipart/form-data spec](https://tools.ietf.org/html/rfc7578#section-4). + +This example demonstrates usage of the endpoint *without* `payload_json`. + +``` +--boundary +Content-Disposition: form-data; name="content" + +Hello, World! +--boundary +Content-Disposition: form-data; name="tts" + +true +--boundary-- +``` + +This example demonstrates usage of the endpoint *with* `payload_json` and all content fields (`content`, `embeds`, `files[n]`) set. + +``` +--boundary +Content-Disposition: form-data; name="payload_json" +Content-Type: application/json + +{ + "content": "Hello, World!", + "embeds": [{ + "title": "Hello, Embed!", + "description": "This is an embedded message.", + "thumbnail": { + "url": "attachment://myfilename.png" + }, + "image": { + "url": "attachment://mygif.gif" + } + }], + "message_reference": { + "message_id": "233648473390448641" + }, + "attachments": [{ + "id": 0, + "description": "Image of a cute little cat", + "filename": "file.png" + }, { + "id": 1, + "description": "Rickroll gif", + "filename": "mygif.gif" + }] +} +--boundary +Content-Disposition: form-data; name="files[0]"; filename="file.png" +Content-Type: image/png + +[image bytes] +--boundary +Content-Disposition: form-data; name="files[1]"; filename="mygif.gif" +Content-Type: image/gif + +[image bytes] +--boundary-- +``` + +###### Using Attachments within Embeds + +You can upload attachments when creating a message and use those attachments within your embed. To do this, you will want to upload files as part of your `multipart/form-data` body. Make sure that you're uploading files that contain a filename, as you will need a filename to reference against. + +> warn +> Only filenames with proper image extensions are supported for the time being. + +In the embed object, you can then set an image to use an attachment as its url with our attachment scheme syntax: `attachment://filename.png` + +For example: + +```json +{ + "embeds": [{ + "image": { + "url": "attachment://screenshot.png" + } + }] +} +``` \ No newline at end of file diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index dab081a7fb..ada22de970 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -172,14 +172,17 @@ There are a number of ways you can respond to an interaction: Not all message fields are currently supported. -| Name | Type | Description | -| ----------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| tts? | boolean | is the response TTS | -| content? | string | message content | -| embeds? | array of [embeds](#DOCS_RESOURCES_CHANNEL/embed-object) | supports up to 10 embeds | -| allowed_mentions? | [allowed mentions](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | [allowed mentions](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) object | -| flags? | integer | [interaction callback data flags](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object-interaction-callback-data-flags) | -| components? | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) | message components | +| Name | Type | Description | +| ----------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| tts? | boolean | is the response TTS | +| content? | string | message content | +| embeds? | array of [embeds](#DOCS_RESOURCES_CHANNEL/embed-object) | supports up to 10 embeds | +| allowed_mentions? | [allowed mentions](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | [allowed mentions](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) object | +| flags? | integer | [interaction callback data flags](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object-interaction-callback-data-flags) | +| components? | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) | message components | +| attachments? \* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | + +\* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. ###### Interaction Callback Data Flags @@ -311,6 +314,7 @@ We highly recommend checking out our [Community Resources](#DOCS_TOPICS_COMMUNIT ## Create Interaction Response % POST /interactions/{interaction.id#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/callback Create a response to an Interaction from the gateway. Takes an [interaction response](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object). +This endpoint also supports file attachments similar to the webhook endpoints. Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on uploading files and `multipart/form-data` requests. ## Get Original Interaction Response % GET /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/@original diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 548d3c3f8b..19e1ba0fe6 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -630,10 +630,14 @@ Embed types are "loosely defined" and, for the most part, are not used by our cl ###### Attachment Structure +> info +> For the `attachments` array in Message Create/Edit requests, only the `id` is required. + | Field | Type | Description | |---------------|-----------|-------------------------------------------------------------------------------------| | id | snowflake | attachment id | | filename | string | name of file attached | +| description? | string | description for the file | | content_type? | string | the attachment's [media type](https://en.wikipedia.org/wiki/Media_type) | | size | integer | size of file in bytes | | url | string | source url of file | @@ -873,6 +877,10 @@ Returns a specific message in the channel. If operating on a guild channel, this Post a message to a guild text or DM channel. Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object. Fires a [Message Create](#DOCS_TOPICS_GATEWAY/message-create) Gateway event. See [message formatting](#DOCS_REFERENCE/message-formatting) for more information on how to properly format messages. +You may create a message as a reply to another message. To do so, include a [`message_reference`](#DOCS_RESOURCES_CHANNEL/message-reference-object-message-reference-structure) with a `message_id`. The `channel_id` and `guild_id` in the `message_reference` are optional, but will be validated if provided. + +Files must be attached using a `multipart/form-data` body as described in [Uploading Files](#DOCS_REFERENCE/uploading-files). + ###### Limitations - When operating on a guild channel, the current user must have the `SEND_MESSAGES` permission. @@ -881,20 +889,9 @@ Post a message to a guild text or DM channel. Returns a [message](#DOCS_RESOURCE - The referenced message must exist and cannot be a system message. - The maximum request size when sending a message is **8MB** - For the embed object, you can set every field except `type` (it will be `rich` regardless of if you try to set it), `provider`, `video`, and any `height`, `width`, or `proxy_url` values for images. -- **Files can only be uploaded when using the `multipart/form-data` content type.** - -You may create a message as a reply to another message. To do so, include a [`message_reference`](#DOCS_RESOURCES_CHANNEL/message-reference-object-message-reference-structure) with a `message_id`. The `channel_id` and `guild_id` in the `message_reference` are optional, but will be validated if provided. > info -> Note that when sending a message, you must provide a value for at **least one of** `content`, `embeds`, or `file`. - -> info -> For a `file` attachment, the `Content-Disposition` subpart header MUST contain a `filename` parameter. - -> warn -> This endpoint supports both `application/json` and `multipart/form-data` bodies. When uploading files the `multipart/form-data` content type must be used. -> Note that in multipart form data, the `embeds` and `allowed_mentions` fields cannot be used. You can pass a stringified JSON body as a form value as `payload_json` instead. -> **If you supply a `payload_json` form value, all fields except for `file` fields will be ignored in the form data**. +> Note that when sending a message, you must provide a value for at **least one of** `content`, `embeds`, or `files[n]`. ###### JSON/Form Params @@ -902,14 +899,17 @@ You may create a message as a reply to another message. To do so, include a [`me | -------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------- | | content | string | the message contents (up to 2000 characters) | one of content, file, embed(s), sticker_ids | | tts | boolean | true if this is a TTS message | false | -| file | file contents | the contents of the file being sent | one of content, file, embed(s), sticker_ids | | embeds | array of [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | embedded `rich` content (up to 6000 characters) | one of content, file, embed(s), sticker_ids | | embed *(deprecated)* | [embed](#DOCS_RESOURCES_CHANNEL/embed-object) object | embedded `rich` content, deprecated in favor of `embeds` | one of content, file, embed(s), sticker_ids | -| payload_json | string | JSON encoded body of non-file params | `multipart/form-data` only | | allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | false | | message_reference | [message reference](#DOCS_RESOURCES_CHANNEL/message-reference-object-message-reference-structure) | include to make your message a reply | false | | components | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) objects | the components to include with the message | false | | sticker_ids | array of snowflakes | IDs of up to 3 [stickers](#DOCS_RESOURCES_STICKER/sticker-object) in the server to send in the message | one of content, file, embed(s), sticker_ids | +| files[n] \* | file contents | the contents of the file being sent | one of content, file, embed(s), sticker_ids | +| payload_json \* | string | JSON encoded body of non-file params | `multipart/form-data` only | +| attachments \* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | + +\* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. ###### Example Request Body (application/json) @@ -924,69 +924,7 @@ You may create a message as a reply to another message. To do so, include a [`me } ``` -###### Example Request Bodies (multipart/form-data) - -Note that these examples are small sections of an HTTP request to demonstrate behaviour of this endpoint - client libraries will set their own form boundaries, `boundary` is just an example. For more information, refer to the [multipart/form-data spec](https://tools.ietf.org/html/rfc7578#section-4). - -This example demonstrates usage of the endpoint *without* `payload_json`. - -``` ---boundary -Content-Disposition: form-data; name="content" - -Hello, World! ---boundary -Content-Disposition: form-data; name="tts" - -true ---boundary-- -``` - -This example demonstrates usage of the endpoint *with* `payload_json` and all content fields (`content`, `embeds`, `file`) set. - -``` ---boundary -Content-Disposition: form-data; name="payload_json" -Content-Type: application/json - -{ - "content": "Hello, World!", - "embeds": [{ - "title": "Hello, Embed!", - "description": "This is an embedded message." - }], - "message_reference": { - "message_id": "233648473390448641" - } -} ---boundary -Content-Disposition: form-data; name="file"; filename="myfilename.png" -Content-Type: image/png - -[image bytes] ---boundary-- -``` - -###### Using Attachments within Embeds - -You can upload attachments when creating a message and use those attachments within your embed. To do this, you will want to upload files as part of your `multipart/form-data` body. Make sure that you're uploading files that contain a filename, as you will need a filename to reference against. - -> warn -> Only filenames with proper image extensions are supported for the time being. - -In the embed object, you can then set an image to use an attachment as its url with our attachment scheme syntax: `attachment://filename.png` - -For example: - -```json -{ - "embeds": [{ - "image": { - "url": "attachment://screenshot.png" - } - }] -} -``` +Examples for file uploads are available in [Uploading Files](#DOCS_REFERENCE/uploading-files). ## Crosspost Message % POST /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object}/crosspost @@ -1038,13 +976,11 @@ When the `content` field is edited, the `mentions` array in the message object w Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object. Fires a [Message Update](#DOCS_TOPICS_GATEWAY/message-update) Gateway event. -> info -> For a `file` attachment, the `Content-Disposition` subpart header MUST contain a `filename` parameter. +Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on attachments and `multipart/form-data` requests. +Any provided files will be **appended** to the message. To remove or replace files you will have to supply the `attachments` field which specifies the files to retain on the message after edit. > warn -> This endpoint supports both `application/json` and `multipart/form-data` bodies. When uploading files the `multipart/form-data` content type must be used. -> Note that in multipart form data, the `embeds`, `allowed_mentions`, and `attachments` fields cannot be used. You can pass a stringified JSON body as a form value as `payload_json` instead. -> **If you supply a `payload_json` form value, all fields except for `file` fields will be ignored in the form data**. +> Starting with API v10, the `attachments` array must contain all attachments that should be present after edit, including **retained and new** attachments provided in the request body. > info > All parameters to this endpoint are optional and nullable. @@ -1057,11 +993,13 @@ Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object. Fires a [Mes | embeds | array of [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | embedded `rich` content (up to 6000 characters) | | embed *(deprecated)* | [embed](#DOCS_RESOURCES_CHANNEL/embed-object) object | embedded `rich` content, deprecated in favor of `embeds` | | flags | integer | edit the [flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) of a message (only `SUPPRESS_EMBEDS` can currently be set/unset) | -| file | file contents | the contents of the file being sent/edited | -| payload_json | string | JSON encoded body of non-file params (multipart/form-data only) | | allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | -| attachments | array of [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attached files to keep | | components | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | the components to include with the message | +| filse[n] \* | file contents | the contents of the file being sent/edited | +| payload_json \* | string | JSON encoded body of non-file params (multipart/form-data only) | +| attachments \* | array of [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attached files to keep and possible descriptions for new files | + +\* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. ## Delete Message % DELETE /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index c68f7686bf..098caad563 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -155,16 +155,10 @@ Same as above, except this call does not require authentication. ## Execute Webhook % POST /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object} -> info -> Note that when sending a message, you must provide a value for at **least one of** `content`, `embeds`, or `file`. +Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on attachments and `multipart/form-data` requests. > info -> For a `file` attachment, the `Content-Disposition` subpart header MUST contain a `filename` parameter. - -> warn -> This endpoint supports both `application/json` and `multipart/form-data` bodies. When uploading files the `multipart/form-data` content type must be used. -> Note that in multipart form data, the `embeds` and `allowed_mentions` fields cannot be used. You can pass a stringified JSON body as a form value as `payload_json` instead. -> **If you supply a `payload_json` form value, all fields except for `file` fields will be ignored in the form data**. +> Note that when sending a message, you must provide a value for at **least one of** `content`, `embeds`, or `file`. ###### Query String Params @@ -181,13 +175,15 @@ Same as above, except this call does not require authentication. | username | string | override the default username of the webhook | false | | avatar_url | string | override the default avatar of the webhook | false | | tts | boolean | true if this is a TTS message | false | -| file | file contents | the contents of the file being sent | one of content, file, embeds | | embeds | array of up to 10 [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | embedded `rich` content | one of content, file, embeds | -| payload_json | string | JSON encoded body of non-file params | `multipart/form-data` only | | allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | false | -| components\* | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | the components to include with the message | false | +| components \* | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | the components to include with the message | false | +| files[n] \*\* | file contents | the contents of the file being sent | one of content, file, embeds | +| payload_json \*\*| string | JSON encoded body of non-file params | `multipart/form-data` only | +| attachments \*\* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | \* Requires an application-owned webhook +\*\* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. > info > For the webhook embed objects, you can set every field except `type` (it will be `rich` regardless of if you try to set it), `provider`, `video`, and any `height`, `width`, or `proxy_url` values for images. @@ -222,13 +218,11 @@ Edits a previously-sent webhook message from the same token. Returns a [message] When the `content` field is edited, the `mentions` array in the message object will be reconstructed from scratch based on the new content. The `allowed_mentions` field of the edit request controls how this happens. If there is no explicit `allowed_mentions` in the edit request, the content will be parsed with _default_ allowances, that is, without regard to whether or not an `allowed_mentions` was present in the request that originally created the message. -> info -> For a `file` attachment, the `Content-Disposition` subpart header MUST contain a `filename` parameter. +Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on attachments and `multipart/form-data` requests. +Any provided files will be **appended** to the message. To remove or replace files you will have to supply the `attachments` field which specifies the files to retain on the message after edit. > warn -> This endpoint supports both `application/json` and `multipart/form-data` bodies. When uploading files the `multipart/form-data` content type must be used. -> Note that in multipart form data, the `embeds`, `allowed_mentions`, and `attachments` fields cannot be used. You can pass a stringified JSON body as a form value as `payload_json` instead. -> **If you supply a `payload_json` form value, all fields except for `file` fields will be ignored in the form data**. +> Starting with API v10, the `attachments` array must contain all attachments that should be present after edit, including **retained and new** attachments provided in the request body. > info > All parameters to this endpoint are optional and nullable. @@ -239,13 +233,14 @@ When the `content` field is edited, the `mentions` array in the message object w | ---------------- | ------------------------------------------------------------------------------------ | --------------------------------------------------------------- | | content | string | the message contents (up to 2000 characters) | | embeds | array of up to 10 [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | embedded `rich` content | -| file | file contents | the contents of the file being sent/edited | -| payload_json | string | JSON encoded body of non-file params (multipart/form-data only) | | allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | -| attachments | array of [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attached files to keep | -| components\* | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | the components to include with the message | +| components \* | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | the components to include with the message | +| files[n] \*\* | file contents | the contents of the file being sent/edited | +| payload_json \*\*| string | JSON encoded body of non-file params (multipart/form-data only) | +| attachments \*\* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attached files to keep and possible descriptions for new files | \* Requires an application-owned webhook +\*\* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. # Delete Webhook Message % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} From 0de6c49cd7f69df40f835bb273441dbacfb36f5b Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Mon, 25 Oct 2021 13:14:24 -0700 Subject: [PATCH 008/181] Fix a typo. Closes #3997 --- docs/resources/Channel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 19e1ba0fe6..9efd2ba756 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -995,7 +995,7 @@ Any provided files will be **appended** to the message. To remove or replace fil | flags | integer | edit the [flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) of a message (only `SUPPRESS_EMBEDS` can currently be set/unset) | | allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | | components | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | the components to include with the message | -| filse[n] \* | file contents | the contents of the file being sent/edited | +| files[n] \* | file contents | the contents of the file being sent/edited | | payload_json \* | string | JSON encoded body of non-file params (multipart/form-data only) | | attachments \* | array of [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attached files to keep and possible descriptions for new files | From 457926101da0dc8e5e872ad3b87a1d443d15be75 Mon Sep 17 00:00:00 2001 From: AJ Palkovic Date: Mon, 25 Oct 2021 16:22:37 -0700 Subject: [PATCH 009/181] Document get-thread-member endpoint (#3998) https://github.com/discord/discord-api-docs/discussions/3491 --- docs/resources/Channel.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 9efd2ba756..a766b8d207 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -1177,6 +1177,10 @@ Removes the current user from a thread. Also requires the thread is not archived Removes another member from a thread. Requires the `MANAGE_THREADS` permission, or the creator of the thread if it is a `GUILD_PRIVATE_THREAD`. Also requires the thread is not archived. Returns a 204 empty response on success. Fires a [Thread Members Update](#DOCS_TOPICS_GATEWAY/thread-members-update) Gateway event. +## Get Thread Member % GET /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/thread-members/{user.id#DOCS_RESOURCES_USER/user-object} + +Returns a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object for the specified user if they are a member of the thread, returns a 404 response otherwise. + ## List Thread Members % GET /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/thread-members Returns array of [thread members](#DOCS_RESOURCES_CHANNEL/thread-member-object) objects that are members of the thread. From 727077eb028a56982fa95bc9e91fcd2d56a3e270 Mon Sep 17 00:00:00 2001 From: Patrick Yang Date: Tue, 26 Oct 2021 16:02:34 -0700 Subject: [PATCH 010/181] Update and alphabetize accepted locales (#4004) We support Hindi, Thai, and Vietnamese. --- docs/dispatch/Field_Values.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/dispatch/Field_Values.md b/docs/dispatch/Field_Values.md index c2d6971163..e67a168f6b 100644 --- a/docs/dispatch/Field_Values.md +++ b/docs/dispatch/Field_Values.md @@ -9,31 +9,34 @@ | ------ | ----------------------- | | en-US | English (United States) | | en-GB | English (Great Britain) | +| bg | Bulgarian | | zh-CN | Chinese (China) | | zh-TW | Chinese (Taiwan) | +| hr | Croatian | | cs | Czech | | da | Danish | | nl | Dutch | +| fi | Finnish | | fr | French | | de | German | | el | Greek | +| hi | Hindi | | hu | Hungarian | | it | Italian | | ja | Japanese | | ko | Korean | +| lt | Lithuanian | | no | Norwegian | | pl | Polish | | pt-BR | Portuguese (Brazil) | +| ro | Romanian | | ru | Russian | | es-ES | Spanish (Spain) | | sv-SE | Swedish | +| th | Thai | | tr | Turkish | -| bg | Bulgarian | | uk | Ukrainian | -| fi | Finnish | -| hr | Croatian | -| ro | Romanian | -| lt | Lithuanian | +| vi | Vietnamese | ## Manifests From 528975f5c2519c8548eccfe5ee288938382f2141 Mon Sep 17 00:00:00 2001 From: Zeyla Hellyer Date: Wed, 27 Oct 2021 11:50:53 -0400 Subject: [PATCH 011/181] Document webhook message and service threads (#3995) Webhooks can now operate on messages in threads by sending a `thread_id` query parameter on the DELETE, GET, and PATCH Webhook Message routes, as well as on GitHub/Slack execution routes. --- docs/resources/Webhook.md | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index 098caad563..d6ce4c440b 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -194,9 +194,10 @@ Refer to [Slack's documentation](https://api.slack.com/incoming-webhooks) for mo ###### Query String Params -| Field | Type | Description | Required | -| ----- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| wait | boolean | waits for server confirmation of message send before response (defaults to `true`; when `false` a message that is not saved does not return an error) | false | +| Field | Type | Description | Required | +| --------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| thread_id | snowflake | id of the thread to send the message in | false | +| wait | boolean | waits for server confirmation of message send before response (defaults to `true`; when `false` a message that is not saved does not return an error) | false | ## Execute GitHub-Compatible Webhook % POST /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/github @@ -204,14 +205,21 @@ Add a new webhook to your GitHub repo (in the repo's settings), and use this end ###### Query String Params -| Field | Type | Description | Required | -| ----- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| wait | boolean | waits for server confirmation of message send before response (defaults to `true`; when `false` a message that is not saved does not return an error) | false | +| Field | Type | Description | Required | +| --------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| thread_id | snowflake | id of the thread to send the message in | false | +| wait | boolean | waits for server confirmation of message send before response (defaults to `true`; when `false` a message that is not saved does not return an error) | false | ## Get Webhook Message % GET /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} Returns a previously-sent webhook message from the same token. Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object on success. +###### Query String Params + +| Field | Type | Description | Required | +| --------- | --------- | ---------------------------------- | -------- | +| thread_id | snowflake | id of the thread the message is in | false | + ## Edit Webhook Message % PATCH /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} Edits a previously-sent webhook message from the same token. Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object on success. @@ -227,6 +235,12 @@ Any provided files will be **appended** to the message. To remove or replace fil > info > All parameters to this endpoint are optional and nullable. +###### Query String Params + +| Field | Type | Description | Required | +| --------- | --------- | ---------------------------------- | -------- | +| thread_id | snowflake | id of the thread the message is in | false | + ###### JSON/Form Params | Field | Type | Description | @@ -245,3 +259,9 @@ Any provided files will be **appended** to the message. To remove or replace fil # Delete Webhook Message % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} Deletes a message that was created by the webhook. Returns a 204 NO CONTENT response on success. + +###### Query String Params + +| Field | Type | Description | Required | +| --------- | --------- | ---------------------------------- | -------- | +| thread_id | snowflake | id of the thread the message is in | false | From 8f64155130e5a8ed2d9a737ddb7791a16562179c Mon Sep 17 00:00:00 2001 From: devsnek Date: Wed, 27 Oct 2021 14:28:59 -0500 Subject: [PATCH 012/181] document autocomplete (#3996) Co-authored-by: Advaith --- docs/Change_Log.md | 4 ++ docs/interactions/Application_Commands.md | 55 +++++++++++++++---- docs/interactions/Receiving_and_Responding.md | 35 ++++++++---- 3 files changed, 72 insertions(+), 22 deletions(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index d3dabc1773..0633b7bf88 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -2,6 +2,10 @@ ## Application Command Permissions Change +#### October 27, 2021 + +Autocomplete interactions are now available, allowing application commands to provide server completed options. Check out [the autocomplete interaction docs](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/autocomplete) for more information. + #### October 20, 2021 Guild owners and members with the Administrator permission may now use application commands even when `default_permission` is set to `false`. diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index 13f308a2ad..bf56efe2e5 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -37,15 +37,21 @@ Application commands are commands that an application can register to Discord. T > warn > Required `options` must be listed before optional options -| Field | Type | Description | -| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | -| type | one of [application command option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) | the type of option | -| name | string | [1-32 character name](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-naming) | -| description | string | 1-100 character description | -| required? | boolean | if the parameter is required or optional--default `false` | -| choices? | array of [application command option choice](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-choice-structure) | choices for `STRING`, `INTEGER`, and `NUMBER` types for the user to pick from, max 25 | -| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | if the option is a subcommand or subcommand group type, this nested options will be the parameters | -| channel_types? | array of [channel types](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | if the option is a channel type, the channels shown will be restricted to these types | +| Field | Type | Description | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | +| type | one of [application command option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) | the type of option | +| name | string | [1-32 character name](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-naming) | +| description | string | 1-100 character description | +| required? | boolean | if the parameter is required or optional--default `false` | +| choices? | array of [application command option choice](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-choice-structure) | choices for `STRING`, `INTEGER`, and `NUMBER` types for the user to pick from, max 25 | +| autocomplete? \* | boolean | enable autocomplete interactions for this option | +| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | if the option is a subcommand or subcommand group type, this nested options will be the parameters | +| channel_types? | array of [channel types](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | if the option is a channel type, the channels shown will be restricted to these types | + +\* `autocomplete` may not be set to true if `choices` are present. + +> note +> Options using `autocomplete` are not confined to only use choices given by the application. ###### Application Command Option Type @@ -79,12 +85,13 @@ All options have names, and an option can either be a parameter and input value- `value` and `options` are mutually exclusive. -| Field | Type | Description | +| Field | Type | Description | | -------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | name | string | the name of the parameter | | type | integer | value of [application command option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) | | value? | [application command option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) | the value of the pair | | options? | array of [application command interaction data option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-interaction-data-option-structure) | present if this option is a group or subcommand | +| focused? | boolean | true if this option is the currently focused option for autocomplete | ## Authorizing Your Application @@ -841,6 +848,34 @@ When someone uses a message command, your application will receive an interactio } ``` +## Autocomplete + +Autocomplete interactions allow your application to dynamically return option suggestions to a user as they type. + +An autocomplete interaction **can return partial data** for option values. Your application will receive partial data for any existing user input, as long as that input passes client-side validation. For example, you may receive partial strings, but not invalid numbers. The option the user is currently typing will be sent with a `focused: true` boolean field. + +> warn +> This validation is **client-side only**. + +```json +{ + "type": 4, + "data": { + "id": "816437322781949972", + "name": "airhorn", + "type": 1, + "version": "847194950382780532", + "options": [ + { + "type": 3, + "name": "variant", + "value": "data a user is typ", + "focused": true + } + ] + } +} +``` ### Endpoints diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index ada22de970..532756fee1 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -32,11 +32,12 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide ###### Interaction Type -| Name | Value | -| ------------------- | ----- | -| PING | 1 | -| APPLICATION_COMMAND | 2 | -| MESSAGE_COMPONENT | 3 | +| Name | Value | +| -------------------------------- | ----- | +| PING | 1 | +| APPLICATION_COMMAND | 2 | +| MESSAGE_COMPONENT | 3 | +| APPLICATION_COMMAND_AUTOCOMPLETE | 4 | ###### Interaction Data Structure @@ -158,20 +159,24 @@ There are a number of ways you can respond to an interaction: ###### Interaction Callback Type -| Name | Value | Description | -| ------------------------------------ | ----- | ------------------------------------------------------------------------------------------------------------- | -| PONG | 1 | ACK a `Ping` | -| CHANNEL_MESSAGE_WITH_SOURCE | 4 | respond to an interaction with a message | -| DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE | 5 | ACK an interaction and edit a response later, the user sees a loading state | -| DEFERRED_UPDATE_MESSAGE\* | 6 | for components, ACK an interaction and edit the original message later; the user does not see a loading state | -| UPDATE_MESSAGE\* | 7 | for components, edit the message the component was attached to | +| Name | Value | Description | +| --------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------- | +| PONG | 1 | ACK a `Ping` | +| CHANNEL_MESSAGE_WITH_SOURCE | 4 | respond to an interaction with a message | +| DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE | 5 | ACK an interaction and edit a response later, the user sees a loading state | +| DEFERRED_UPDATE_MESSAGE\* | 6 | for components, ACK an interaction and edit the original message later; the user does not see a loading state | +| UPDATE_MESSAGE\* | 7 | for components, edit the message the component was attached to | +| APPLICATION_COMMAND_AUTOCOMPLETE_RESULT | 8 | respond to an autocomplete interaction with suggested choices | \* Only valid for [component-based](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) interactions ###### Interaction Callback Data Structure +###### Messages + Not all message fields are currently supported. + | Name | Type | Description | | ----------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | tts? | boolean | is the response TTS | @@ -184,6 +189,12 @@ Not all message fields are currently supported. \* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. +###### Autocomplete + +| Name | Type | Description | +| -------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | +| choices | array of [choices](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-choice-structure) | autocomplete choices (max of 25 choices) | + ###### Interaction Callback Data Flags | Name | Value | Description | From 826c0a477a01bcd74abd31df1433ad7b0678db09 Mon Sep 17 00:00:00 2001 From: devsnek Date: Wed, 27 Oct 2021 14:32:54 -0500 Subject: [PATCH 013/181] Update Change_Log.md --- docs/Change_Log.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index 0633b7bf88..6bd1422411 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -1,11 +1,13 @@ # Change Log -## Application Command Permissions Change +## Application Command Autocomplete Interactions #### October 27, 2021 Autocomplete interactions are now available, allowing application commands to provide server completed options. Check out [the autocomplete interaction docs](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/autocomplete) for more information. +## Application Command Permissions Change + #### October 20, 2021 Guild owners and members with the Administrator permission may now use application commands even when `default_permission` is set to `false`. From eaa39a12992645c3239f39617683f933d5374a63 Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Mon, 1 Nov 2021 09:52:24 -0700 Subject: [PATCH 014/181] Add min_value and max_value on slash command options (#3967) --- docs/interactions/Application_Commands.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index bf56efe2e5..d7ee6e231d 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -44,6 +44,10 @@ Application commands are commands that an application can register to Discord. T | description | string | 1-100 character description | | required? | boolean | if the parameter is required or optional--default `false` | | choices? | array of [application command option choice](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-choice-structure) | choices for `STRING`, `INTEGER`, and `NUMBER` types for the user to pick from, max 25 | +| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | if the option is a subcommand or subcommand group type, these nested options will be the parameters | +| channel_types? | array of [channel types](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | if the option is a channel type, the channels shown will be restricted to these types | +| min_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the minimum value permitted | +| max_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the maximum value permitted | | autocomplete? \* | boolean | enable autocomplete interactions for this option | | options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | if the option is a subcommand or subcommand group type, this nested options will be the parameters | | channel_types? | array of [channel types](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | if the option is a channel type, the channels shown will be restricted to these types | From 9114a1bcb882619f1c42dd1c577f22a80e82b125 Mon Sep 17 00:00:00 2001 From: Advaith Date: Mon, 1 Nov 2021 09:52:40 -0700 Subject: [PATCH 015/181] Update Activity Flags (#3877) --- docs/topics/Gateway.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 480494b6dd..b5ee1a9d9c 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -1326,14 +1326,17 @@ Active sessions are indicated with an "online", "idle", or "dnd" string per plat ###### Activity Flags -| Name | Value | -|--------------|--------| -| INSTANCE | 1 << 0 | -| JOIN | 1 << 1 | -| SPECTATE | 1 << 2 | -| JOIN_REQUEST | 1 << 3 | -| SYNC | 1 << 4 | -| PLAY | 1 << 5 | +| Name | Value | +|-----------------------------|--------| +| INSTANCE | 1 << 0 | +| JOIN | 1 << 1 | +| SPECTATE | 1 << 2 | +| JOIN_REQUEST | 1 << 3 | +| SYNC | 1 << 4 | +| PLAY | 1 << 5 | +| PARTY_PRIVACY_FRIENDS | 1 << 6 | +| PARTY_PRIVACY_VOICE_CHANNEL | 1 << 7 | +| EMBEDDED | 1 << 8 | ###### Activity Buttons From 77ee0f906a3d9d2aff0bb3c285913e9db25d98dd Mon Sep 17 00:00:00 2001 From: Advaith Date: Mon, 1 Nov 2021 09:53:22 -0700 Subject: [PATCH 016/181] Document message content intent application flags (#3999) --- docs/resources/Application.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/resources/Application.md b/docs/resources/Application.md index 4c5e97964a..6bee168113 100644 --- a/docs/resources/Application.md +++ b/docs/resources/Application.md @@ -78,3 +78,5 @@ | 1 << 15 | GATEWAY_GUILD_MEMBERS_LIMITED | | 1 << 16 | VERIFICATION_PENDING_GUILD_LIMIT | | 1 << 17 | EMBEDDED | +| 1 << 18 | GATEWAY_MESSAGE_CONTENT | +| 1 << 19 | GATEWAY_MESSAGE_CONTENT_LIMITED | From 7dbe9c760513daa2d3f88d52ba650a97ccb3daf9 Mon Sep 17 00:00:00 2001 From: Almeida Date: Mon, 1 Nov 2021 16:58:26 +0000 Subject: [PATCH 017/181] feat: added new user flag (#3903) --- docs/resources/User.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/resources/User.md b/docs/resources/User.md index e0f56d5f4a..d6337037c3 100644 --- a/docs/resources/User.md +++ b/docs/resources/User.md @@ -78,6 +78,7 @@ There are other rules and restrictions not shared here for the sake of spam and | 1 << 16 | Verified Bot | | 1 << 17 | Early Verified Bot Developer | | 1 << 18 | Discord Certified Moderator | +| 1 << 19 | Bot HTTP Interactions | ###### Premium Types From 68e77e6efce44c6e35eb4a32721ac5ca733af811 Mon Sep 17 00:00:00 2001 From: Mason Sciotti Date: Mon, 1 Nov 2021 10:05:07 -0700 Subject: [PATCH 018/181] Add descriptions to user flags table (#4036) --- docs/resources/User.md | 56 +++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/resources/User.md b/docs/resources/User.md index d6337037c3..c4d8c4c4ac 100644 --- a/docs/resources/User.md +++ b/docs/resources/User.md @@ -62,23 +62,23 @@ There are other rules and restrictions not shared here for the sake of spam and ###### User Flags -| Value | Description | -| ------- | ---------------------------- | -| 0 | None | -| 1 << 0 | Discord Employee | -| 1 << 1 | Partnered Server Owner | -| 1 << 2 | HypeSquad Events | -| 1 << 3 | Bug Hunter Level 1 | -| 1 << 6 | House Bravery | -| 1 << 7 | House Brilliance | -| 1 << 8 | House Balance | -| 1 << 9 | Early Supporter | -| 1 << 10 | Team User | -| 1 << 14 | Bug Hunter Level 2 | -| 1 << 16 | Verified Bot | -| 1 << 17 | Early Verified Bot Developer | -| 1 << 18 | Discord Certified Moderator | -| 1 << 19 | Bot HTTP Interactions | +| Value | Name | Description | +| ------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- | +| 0 | None | None | +| 1 << 0 | STAFF | Discord Employee | +| 1 << 1 | PARTNER | Partnered Server Owner | +| 1 << 2 | HYPESQUAD | HypeSquad Events Coordinator | +| 1 << 3 | BUG_HUNTER_LEVEL_1 | Bug Hunter Level 1 | +| 1 << 6 | HYPESQUAD_ONLINE_HOUSE_1 | House Bravery Member | +| 1 << 7 | HYPESQUAD_ONLINE_HOUSE_2 | House Brilliance Member | +| 1 << 8 | HYPESQUAD_ONLINE_HOUSE_3 | House Balance Member | +| 1 << 9 | PREMIUM_EARLY_SUPPORTER | Early Nitro Supporter | +| 1 << 10 | TEAM_PSEUDO_USER | User is a [team](#DOCS_TOPICS_TEAMS/) | +| 1 << 14 | BUG_HUNTER_LEVEL_2 | Bug Hunter Level 2 | +| 1 << 16 | VERIFIED_BOT | Verified Bot | +| 1 << 17 | VERIFIED_DEVELOPER | Early Verified Bot Developer | +| 1 << 18 | CERTIFIED_MODERATOR | Discord Certified Moderator | +| 1 << 19 | BOT_HTTP_INTERACTIONS | Bot uses only [HTTP interactions](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/receiving-an-interaction) and is show in the online member list | ###### Premium Types @@ -96,17 +96,17 @@ The connection object that the user has attached. ###### Connection Structure -| Field | Type | Description | -| ------------- | ------- | ----------------------------------------------------------------------------------------- | -| id | string | id of the connection account | -| name | string | the username of the connection account | -| type | string | the service of the connection (twitch, youtube) | -| revoked? | boolean | whether the connection is revoked | -| integrations? | array | an array of partial [server integrations](#DOCS_RESOURCES_GUILD/integration-object) | -| verified | boolean | whether the connection is verified | -| friend_sync | boolean | whether friend sync is enabled for this connection | -| show_activity | boolean | whether activities related to this connection will be shown in presence updates | -| visibility | integer | [visibility](#DOCS_RESOURCES_USER/connection-object-visibility-types) of this connection | +| Field | Type | Description | +| ------------- | ------- | ---------------------------------------------------------------------------------------- | +| id | string | id of the connection account | +| name | string | the username of the connection account | +| type | string | the service of the connection (twitch, youtube) | +| revoked? | boolean | whether the connection is revoked | +| integrations? | array | an array of partial [server integrations](#DOCS_RESOURCES_GUILD/integration-object) | +| verified | boolean | whether the connection is verified | +| friend_sync | boolean | whether friend sync is enabled for this connection | +| show_activity | boolean | whether activities related to this connection will be shown in presence updates | +| visibility | integer | [visibility](#DOCS_RESOURCES_USER/connection-object-visibility-types) of this connection | ###### Visibility Types From 8a80d44d6107fa3c6b5cb27d63c611a1aea6205e Mon Sep 17 00:00:00 2001 From: Daedalus <16168171+RedDaedalus@users.noreply.github.com> Date: Mon, 1 Nov 2021 11:22:43 -0600 Subject: [PATCH 019/181] fix: show -> shown in flags (#4037) --- docs/resources/User.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/resources/User.md b/docs/resources/User.md index c4d8c4c4ac..a42f9708cc 100644 --- a/docs/resources/User.md +++ b/docs/resources/User.md @@ -62,23 +62,23 @@ There are other rules and restrictions not shared here for the sake of spam and ###### User Flags -| Value | Name | Description | -| ------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | None | None | -| 1 << 0 | STAFF | Discord Employee | -| 1 << 1 | PARTNER | Partnered Server Owner | -| 1 << 2 | HYPESQUAD | HypeSquad Events Coordinator | -| 1 << 3 | BUG_HUNTER_LEVEL_1 | Bug Hunter Level 1 | -| 1 << 6 | HYPESQUAD_ONLINE_HOUSE_1 | House Bravery Member | -| 1 << 7 | HYPESQUAD_ONLINE_HOUSE_2 | House Brilliance Member | -| 1 << 8 | HYPESQUAD_ONLINE_HOUSE_3 | House Balance Member | -| 1 << 9 | PREMIUM_EARLY_SUPPORTER | Early Nitro Supporter | -| 1 << 10 | TEAM_PSEUDO_USER | User is a [team](#DOCS_TOPICS_TEAMS/) | -| 1 << 14 | BUG_HUNTER_LEVEL_2 | Bug Hunter Level 2 | -| 1 << 16 | VERIFIED_BOT | Verified Bot | -| 1 << 17 | VERIFIED_DEVELOPER | Early Verified Bot Developer | -| 1 << 18 | CERTIFIED_MODERATOR | Discord Certified Moderator | -| 1 << 19 | BOT_HTTP_INTERACTIONS | Bot uses only [HTTP interactions](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/receiving-an-interaction) and is show in the online member list | +| Value | Name | Description | +| ------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| 0 | None | None | +| 1 << 0 | STAFF | Discord Employee | +| 1 << 1 | PARTNER | Partnered Server Owner | +| 1 << 2 | HYPESQUAD | HypeSquad Events Coordinator | +| 1 << 3 | BUG_HUNTER_LEVEL_1 | Bug Hunter Level 1 | +| 1 << 6 | HYPESQUAD_ONLINE_HOUSE_1 | House Bravery Member | +| 1 << 7 | HYPESQUAD_ONLINE_HOUSE_2 | House Brilliance Member | +| 1 << 8 | HYPESQUAD_ONLINE_HOUSE_3 | House Balance Member | +| 1 << 9 | PREMIUM_EARLY_SUPPORTER | Early Nitro Supporter | +| 1 << 10 | TEAM_PSEUDO_USER | User is a [team](#DOCS_TOPICS_TEAMS/) | +| 1 << 14 | BUG_HUNTER_LEVEL_2 | Bug Hunter Level 2 | +| 1 << 16 | VERIFIED_BOT | Verified Bot | +| 1 << 17 | VERIFIED_DEVELOPER | Early Verified Bot Developer | +| 1 << 18 | CERTIFIED_MODERATOR | Discord Certified Moderator | +| 1 << 19 | BOT_HTTP_INTERACTIONS | Bot uses only [HTTP interactions](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/receiving-an-interaction) and is shown in the online member list | ###### Premium Types From 4e8ec13a593445c1e529de86499cf07a79806d68 Mon Sep 17 00:00:00 2001 From: Jerry Jiang Date: Mon, 1 Nov 2021 10:52:35 -0700 Subject: [PATCH 020/181] Suppress member join sticker replies system channel flag. (#3977) * Suppress member join sticker replies system channel flag. * Update docs/resources/Guild.md Co-authored-by: Advaith Co-authored-by: Advaith --- docs/resources/Guild.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index b58a3ffb19..f03a97ba94 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -117,11 +117,12 @@ Guilds in Discord represent an isolated collection of users and channels, and ar ###### System Channel Flags -| Flag | Value | Description | -| ------------------------------------- | ------ | ----------------------------------- | -| SUPPRESS_JOIN_NOTIFICATIONS | 1 << 0 | Suppress member join notifications | -| SUPPRESS_PREMIUM_SUBSCRIPTIONS | 1 << 1 | Suppress server boost notifications | -| SUPPRESS_GUILD_REMINDER_NOTIFICATIONS | 1 << 2 | Suppress server setup tips | +| Flag | Value | Description | +| ------------------------------------- | ------ | -------------------------------------- | +| SUPPRESS_JOIN_NOTIFICATIONS | 1 << 0 | Suppress member join notifications | +| SUPPRESS_PREMIUM_SUBSCRIPTIONS | 1 << 1 | Suppress server boost notifications | +| SUPPRESS_GUILD_REMINDER_NOTIFICATIONS | 1 << 2 | Suppress server setup tips | +| SUPPRESS_JOIN_NOTIFICATION_REPLIES | 1 << 3 | Hide member join sticker reply buttons | ###### Guild Features From 39f1b745a008b34a7a86c15933acf63c25c1818a Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Mon, 1 Nov 2021 12:26:15 -0700 Subject: [PATCH 021/181] remove duplicated lines. #4039 --- docs/interactions/Application_Commands.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index d7ee6e231d..8dd94b45ee 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -49,8 +49,6 @@ Application commands are commands that an application can register to Discord. T | min_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the minimum value permitted | | max_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the maximum value permitted | | autocomplete? \* | boolean | enable autocomplete interactions for this option | -| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | if the option is a subcommand or subcommand group type, this nested options will be the parameters | -| channel_types? | array of [channel types](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | if the option is a channel type, the channels shown will be restricted to these types | \* `autocomplete` may not be set to true if `choices` are present. From 88331d8655b5a84b088422b0cb399b3dce9469aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josey=20W=C3=B6rmann?= Date: Mon, 8 Nov 2021 16:26:08 +0100 Subject: [PATCH 022/181] fix missing `requests`-import in code examples (#4062) --- docs/interactions/Receiving_and_Responding.md | 2 ++ docs/topics/OAuth2.md | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 532756fee1..60b094327a 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -231,6 +231,8 @@ If you are receiving Interactions over the gateway, you will **also need to resp To respond to a gateway Interaction, make a `POST` request like this. `interaction_id` is the unique id of that individual Interaction from the received payload. `interaction_token` is the unique token for that interaction from the received payload. **This endpoint is only valid for Interactions received over the gateway. Otherwise, respond to the `POST` request to issue an initial response.** ```py +import requests + url = "https://discord.com/api/v8/interactions///callback" json = { diff --git a/docs/topics/OAuth2.md b/docs/topics/OAuth2.md index a96408fa46..fb4b0ed247 100644 --- a/docs/topics/OAuth2.md +++ b/docs/topics/OAuth2.md @@ -91,6 +91,8 @@ https://nicememe.website/?code=NhhvTDYsFcdgNLnnLijcl7Ku7bEEeee&state=15773059ghq ###### Access Token Exchange Example ```python +import requests + API_ENDPOINT = 'https://discord.com/api/v8' CLIENT_ID = '332269999912132097' CLIENT_SECRET = '937it3ow87i4ery69876wqire' @@ -136,6 +138,8 @@ Having the user's access token allows your application to make certain requests ###### Refresh Token Exchange Example ```python +import requests + API_ENDPOINT = 'https://discord.com/api/v8' CLIENT_ID = '332269999912132097' CLIENT_SECRET = '937it3ow87i4ery69876wqire' @@ -191,6 +195,7 @@ You can specify scopes with the `scope` parameter, which is a list of [OAuth2 sc ```python import base64 +import requests API_ENDPOINT = 'https://discord.com/api/v8' CLIENT_ID = '332269999912132097' From 99d5ae215900df91c0baf9e44c428e54718152de Mon Sep 17 00:00:00 2001 From: Zeyla Hellyer Date: Mon, 8 Nov 2021 07:26:27 -0800 Subject: [PATCH 023/181] Getting own oauth application now returns flags (#4058) * Getting own oauth application now returns flags Getting your own OAuth Application via the `GET /oauth2/applications/@me` route now returns the `flags` field for the application. * actually don't even mention the flags --- docs/topics/OAuth2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/OAuth2.md b/docs/topics/OAuth2.md index fb4b0ed247..0be99dbaad 100644 --- a/docs/topics/OAuth2.md +++ b/docs/topics/OAuth2.md @@ -380,7 +380,7 @@ Any user that wishes to add your webhook to their channel will need to go throug ## Get Current Bot Application Information % GET /oauth2/applications/@me -Returns the bot's [application](#DOCS_RESOURCES_APPLICATION/application-object) object without `flags`. +Returns the bot's [application](#DOCS_RESOURCES_APPLICATION/application-object) object. ## Get Current Authorization Information % GET /oauth2/@me From cb84978b1a106f329200c0c33242c60f112cadfd Mon Sep 17 00:00:00 2001 From: That_Guy977 <72870724+That-Guy977@users.noreply.github.com> Date: Mon, 8 Nov 2021 22:27:51 +0700 Subject: [PATCH 024/181] Fix incorrect url (#4009) --- docs/Reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Reference.md b/docs/Reference.md index 7459fbad79..2896fc5c2c 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -347,7 +347,7 @@ All `files[n]` parameters must include a valid `Content-Disposition` subpart hea The file upload limit applies to the entire request, not individual files in a request. This limit depends on the **Boost Tier** of a Guild and is 8 MiB by default. -Images can also be referenced in embeds using the `attachments://filename` URL. An example payload is provided below. +Images can also be referenced in embeds using the `attachment://filename` URL. An example payload is provided below. ### Editing Message Attachments @@ -437,4 +437,4 @@ For example: } }] } -``` \ No newline at end of file +``` From 30b75ca85ef7e487270c9ebaa3c473bbec5cd285 Mon Sep 17 00:00:00 2001 From: Vitor Date: Mon, 8 Nov 2021 15:29:53 +0000 Subject: [PATCH 025/181] Using the internal page link system for applications page (#4011) * deleting useless redirects in some URLs * using the internal page link system --- docs/rich_presence/How_To.md | 2 +- docs/topics/Certified_Devices.md | 2 +- docs/topics/RPC.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/rich_presence/How_To.md b/docs/rich_presence/How_To.md index 853be26970..9215a80b1e 100644 --- a/docs/rich_presence/How_To.md +++ b/docs/rich_presence/How_To.md @@ -35,7 +35,7 @@ The header file also contains the `Discord_RunCallbacks()` function. This invoke ## Initialization -The first step in implementing Rich Presence is [creating an application](https://discord.com/developers/applications/me). Once you've created your application, note and save your `Client ID`. You will need this to initialize the SDK; this value will be referred to throughout this documentation as both `client_id` and `application_id`. Next, scroll down to the bottom of your application's page and hit the button that says "Enable Rich Presence". This will allow you to upload assets to your dashboard for later use. +The first step in implementing Rich Presence is [creating an application](#APPLICATIONS). Once you've created your application, note and save your `Client ID`. You will need this to initialize the SDK; this value will be referred to throughout this documentation as both `client_id` and `application_id`. Next, scroll down to the bottom of your application's page and hit the button that says "Enable Rich Presence". This will allow you to upload assets to your dashboard for later use. To begin, you'll register your callback functions to the six `DiscordEventHandlers` and then call `Discord_Initialize()` with your `APPLICATION_ID`. If your game is distributed via Steam, you should also pass your application's Steam ID so Discord can launch your game through Steam: diff --git a/docs/topics/Certified_Devices.md b/docs/topics/Certified_Devices.md index 122fa0cf99..0856325ee2 100644 --- a/docs/topics/Certified_Devices.md +++ b/docs/topics/Certified_Devices.md @@ -6,7 +6,7 @@ Baked into Discord is the ability for hardware manufacturers to tell us a little I'm glad you asked! -1. [Create an application](https://discord.com/developers/applications/me) for your hardware vendor—save the Client ID! +1. [Create an application](#APPLICATIONS) for your hardware vendor—save the Client ID! 2. Talk to Discord via one simple HTTP or WebSocket call 3. Send us a [`SET_CERTIFIED_DEVICES`](#DOCS_TOPICS_RPC/setcertifieddevices) WebSocket payload or equivalent HTTP POST whenever the state of the device changes diff --git a/docs/topics/RPC.md b/docs/topics/RPC.md index c8af7251ea..8976c84233 100644 --- a/docs/topics/RPC.md +++ b/docs/topics/RPC.md @@ -40,7 +40,7 @@ For WebSocket connections, the connection is always `ws://127.0.0.1:PORT/?v=VERS - `PORT` is the port of the RPC Server. - `ENCODING` is the type of encoding for this connection to use. `json` and `etf` are supported. -To begin, you'll need to create an app. Head to [your apps](https://discord.com/developers/applications/me) and click the big plus button. When you create an app on our Developers site, you must specify an "RPC Origin" and "Redirect URI" from which to permit connections and authorizations. **The origin you send when connecting and the redirect uri you send when exchanging an authorization code for an access token must match one of the ones entered on the Developers site.** +To begin, you'll need to create an app. Head to [your apps](#APPLICATIONS) and click the big plus button. When you create an app on our Developers site, you must specify an "RPC Origin" and "Redirect URI" from which to permit connections and authorizations. **The origin you send when connecting and the redirect uri you send when exchanging an authorization code for an access token must match one of the ones entered on the Developers site.** When establishing a WebSocket connection, we verify the Origin header on connection to prevent client ID spoofing. You will be instantly disconnected if the Origin does not match. From 60a0e3d99d014fa9036a1d30b0d2ac8ec7bfb987 Mon Sep 17 00:00:00 2001 From: Zack Date: Mon, 8 Nov 2021 20:46:38 -0500 Subject: [PATCH 026/181] Document X-RateLimit-Scope (#4071) --- docs/topics/Rate_Limits.md | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/docs/topics/Rate_Limits.md b/docs/topics/Rate_Limits.md index 49824210cc..cd654d1f7d 100644 --- a/docs/topics/Rate_Limits.md +++ b/docs/topics/Rate_Limits.md @@ -21,15 +21,17 @@ For most API requests made, we return optional HTTP response headers containing X-RateLimit-Limit: 5 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1470173023 +X-RateLimit-Reset-After: 1 X-RateLimit-Bucket: abcd1234 ``` -- **X-RateLimit-Global** - Returned only on a HTTP 429 response if the rate limit headers returned are of the global rate limit (not per-route) - **X-RateLimit-Limit** - The number of requests that can be made - **X-RateLimit-Remaining** - The number of remaining requests that can be made - **X-RateLimit-Reset** - Epoch time (seconds since 00:00:00 UTC on January 1, 1970) at which the rate limit resets - **X-RateLimit-Reset-After** - Total time (in seconds) of when the current rate limit bucket will reset. Can have decimals to match previous millisecond ratelimit precision - **X-RateLimit-Bucket** - A unique string denoting the rate limit being encountered (non-inclusive of major parameters in the route path) +- **X-RateLimit-Global** - Returned only on HTTP 429 responses if the rate limit headers returned are of the global rate limit (not per-route) +- **X-RateLimit-Scope** - Returned only on HTTP 429 responses. Value can be `user` (per user limit), `global` (per user global limit), or `shared` (per resource limit) ## Exceeding A Rate Limit @@ -40,12 +42,12 @@ In the case that a rate limit is exceeded, the API will return a HTTP 429 respon | Field | Type | Description | |-------------|------------------|------------------------------------------------------------------| | message | string | A message saying you are being rate limited. | -| retry_after | float | The number of seconds to wait before submitting another request. | +| retry_after | float | The number of seconds to wait before submitting another request. | | global | boolean | A value indicating if you are being globally rate limited or not | Note that the normal rate-limiting headers will be sent in this response. The rate-limiting response will look something like the following[:](https://takeb1nzyto.space/) -###### Example Rate Limit Response +###### Example Exceeded User Rate Limit Response ``` < HTTP/1.1 429 TOO MANY REQUESTS @@ -56,6 +58,7 @@ Note that the normal rate-limiting headers will be sent in this response. The ra < X-RateLimit-Reset: 1470173023.123 < X-RateLimit-Reset-After: 64.57 < X-RateLimit-Bucket: abcd1234 +< X-RateLimit-Scope: user { "message": "You are being rate limited.", "retry_after": 64.57, @@ -63,13 +66,34 @@ Note that the normal rate-limiting headers will be sent in this response. The ra } ``` -###### Example Global Rate Limit Response + +###### Example Exceeded Resource Rate Limit Response + +``` +< HTTP/1.1 429 TOO MANY REQUESTS +< Content-Type: application/json +< Retry-After: 65 +< X-RateLimit-Limit: 10 +< X-RateLimit-Remaining: 9 +< X-RateLimit-Reset: 1470173023.123 +< X-RateLimit-Reset-After: 64.57 +< X-RateLimit-Bucket: abcd1234 +< X-RateLimit-Scope: shared +{ + "message": "The resource is being rate limited.", + "retry_after": 64.57, + "global": false +} +``` + +###### Example Exceeded Global Rate Limit Response ``` < HTTP/1.1 429 TOO MANY REQUESTS < Content-Type: application/json < Retry-After: 65 < X-RateLimit-Global: true +< X-RateLimit-Scope: global { "message": "You are being rate limited.", "retry_after": 64.57, @@ -93,8 +117,8 @@ All applications should make reasonable attempts to avoid making invalid request - **401** responses are avoided by providing a valid token in the authorization header when required and by stopping further requests after a token becomes invalid - **403** responses are avoided by inspecting role or channel permissions and by not making requests that are restricted by such permissions -- **429** responses are avoided by inspecting the rate limit headers documented above and by not making requests on exhausted buckets until after they have reset +- **429** responses are avoided by inspecting the rate limit headers documented above and by not making requests on exhausted buckets until after they have reset. *429 errors returned with `X-RateLimit-Scope: shared` are not counted against you.* Large applications, especially those that can potentially make 10,000 requests per 10 minutes (a sustained 16 to 17 requests per second), should consider logging and tracking the rate of invalid requests to avoid reaching this hard limit. -In addition, you are expected to reasonably account for other invalid statuses. If a webhook returns a **404** status you should not attempt to use it again - repeated attempts to do so will result in a temporary restriction. \ No newline at end of file +In addition, you are expected to reasonably account for other invalid statuses. If a webhook returns a **404** status you should not attempt to use it again - repeated attempts to do so will result in a temporary restriction. From 5e60ddae608b9ecefba4ea5126c175116c9282c9 Mon Sep 17 00:00:00 2001 From: Zack Date: Thu, 11 Nov 2021 16:34:24 -0500 Subject: [PATCH 027/181] revert the administrator permission change log, as that will happen in permissions v2 --- docs/Change_Log.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index 6bd1422411..4d4b73cd6e 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -6,12 +6,6 @@ Autocomplete interactions are now available, allowing application commands to provide server completed options. Check out [the autocomplete interaction docs](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/autocomplete) for more information. -## Application Command Permissions Change - -#### October 20, 2021 - -Guild owners and members with the Administrator permission may now use application commands even when `default_permission` is set to `false`. - ## Updated Thread Permissions #### September 16, 2021 From 1e66727c499868d9fcdd471efbb71fca48d396ad Mon Sep 17 00:00:00 2001 From: Suspense Date: Sat, 13 Nov 2021 03:31:12 +0100 Subject: [PATCH 028/181] update application commands permission description (#4088) --- docs/interactions/Application_Commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index 8dd94b45ee..57bc7dc40b 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -277,7 +277,7 @@ Need to keep some of your commands safe from prying eyes, or only available to t > info > For now, if you don't have permission to use a command, they'll show up in the command picker as disabled and unusable. They will **not** be hidden. -You can also set a `default_permission` on your commands if you want them to be disabled by default when your app is added to a new guild. Setting `default_permission` to `false` will disallow _anyone_ in a guild from using the command—except Administrators and guild owners—unless a specific overwrite is configured. It will also disable the command from being usable in DMs. +You can also set a `default_permission` on your commands if you want them to be disabled by default when your app is added to a new guild. Setting `default_permission` to `false` will disallow _anyone_ in a guild from using the command, unless a specific overwrite is configured. It will also disable the command from being usable in DMs. For example, this command will not be usable by anyone in any guilds by default: From d56be860c5dd4c04e80337556d82eb3a04f971a2 Mon Sep 17 00:00:00 2001 From: AJ Palkovic Date: Mon, 15 Nov 2021 09:57:25 -0800 Subject: [PATCH 029/181] Add 'rate_limit_per_user' to thread creation endpoint --- docs/resources/Channel.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index a766b8d207..daab9b0531 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -1132,10 +1132,11 @@ When called on a `GUILD_TEXT` channel, creates a `GUILD_PUBLIC_THREAD`. When cal ###### JSON Params -| Field | Type | Description | -|--------------------------|---------|---------------------------------------------------------------------------------------------------------------------| -| name | string | 1-100 character channel name | -| auto_archive_duration?\* | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | +| Field | Type | Description | +|--------------------------|----------|---------------------------------------------------------------------------------------------------------------------| +| name | string | 1-100 character channel name | +| auto_archive_duration?\* | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | +| rate_limit_per_user? | ?integer | amount of seconds a user has to wait before sending another message (0-21600) | \* The 3 day and 7 day archive durations require the server to be boosted. The [guild features](#DOCS_RESOURCES_GUILD/guild-object-guild-features) will indicate if a server is able to use those settings. @@ -1148,12 +1149,14 @@ Creates a new thread that is not connected to an existing message. The created t ###### JSON Params -| Field | Type | Description | -|----------------------------|---------|---------------------------------------------------------------------------------------------------------------------| -| name | string | 1-100 character channel name | -| auto_archive_duration?\*\* | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | -| type?\*\*\* | integer | the [type of thread](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) to create | -| invitable? | boolean | whether non-moderators can add other non-moderators to a thread; only available when creating a private thread | +| Field | Type | Description | +|----------------------------|----------|---------------------------------------------------------------------------------------------------------------------| +| name | string | 1-100 character channel name | +| auto_archive_duration?\*\* | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | +| type?\*\*\* | integer | the [type of thread](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) to create | +| invitable? | boolean | whether non-moderators can add other non-moderators to a thread; only available when creating a private thread | +| rate_limit_per_user? | ?integer | amount of seconds a user has to wait before sending another message (0-21600) | + \* Creating a private thread requires the server to be boosted. The [guild features](#DOCS_RESOURCES_GUILD/guild-object-guild-features) will indicate if that is possible for the guild. @@ -1167,7 +1170,7 @@ Adds the current user to a thread. Also requires the thread is not archived. Ret ## Add Thread Member % PUT /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/thread-members/{user.id#DOCS_RESOURCES_USER/user-object} -Adds another member to a thread. Requires the ability to send messages in the thread. Also requires the thread is not archived. Returns a 204 empty response on success. Fires a [Thread Members Update](#DOCS_TOPICS_GATEWAY/thread-members-update) Gateway event. +Adds another member to a thread. Requires the ability to send messages in the thread. Also requires the thread is not archived. Returns a 204 empty response if the member is successfully added or was already a member of the thread. Fires a [Thread Members Update](#DOCS_TOPICS_GATEWAY/thread-members-update) Gateway event. ## Leave Thread % DELETE /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/thread-members/@me From 1298152172d3359abf069d1b24d4bbc85532b735 Mon Sep 17 00:00:00 2001 From: apacheopteryx <43933794+apacheli@users.noreply.github.com> Date: Mon, 15 Nov 2021 13:40:42 -0600 Subject: [PATCH 030/181] Document Guild Scheduled Event structure and HTTP methods (#3586) Add guild scheduled events endpoints, gateway events, audit log, invite, and permissions changes. Co-authored-by: Lala Sabathil Co-authored-by: Jupith <51760248+Jupith@users.noreply.github.com> Co-authored-by: Kaida Akatsuki <60681223+vBread@users.noreply.github.com> Co-authored-by: Davi <68123395+Davi-the-Mudkip@users.noreply.github.com> Co-authored-by: Hemu <1871299+hemu@users.noreply.github.com> --- docs/resources/Audit_Log.md | 104 +++++++++--------- docs/resources/Guild_Scheduled_Event.md | 136 ++++++++++++++++++++++++ docs/resources/Invite.md | 36 ++++--- docs/topics/Gateway.md | 62 ++++++++++- docs/topics/Permissions.md | 1 + 5 files changed, 270 insertions(+), 69 deletions(-) create mode 100644 docs/resources/Guild_Scheduled_Event.md diff --git a/docs/resources/Audit_Log.md b/docs/resources/Audit_Log.md index 1c2f27b8d3..e70a84d8ab 100644 --- a/docs/resources/Audit_Log.md +++ b/docs/resources/Audit_Log.md @@ -48,52 +48,55 @@ Whenever an admin action is performed on the API, an entry is added to the respe ###### Audit Log Events -| Event | Value | -| ------------------------ | ----- | -| GUILD_UPDATE | 1 | -| CHANNEL_CREATE | 10 | -| CHANNEL_UPDATE | 11 | -| CHANNEL_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 | -| MEMBER_MOVE | 26 | -| MEMBER_DISCONNECT | 27 | -| BOT_ADD | 28 | -| 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 | -| MESSAGE_BULK_DELETE | 73 | -| MESSAGE_PIN | 74 | -| MESSAGE_UNPIN | 75 | -| INTEGRATION_CREATE | 80 | -| INTEGRATION_UPDATE | 81 | -| INTEGRATION_DELETE | 82 | -| STAGE_INSTANCE_CREATE | 83 | -| STAGE_INSTANCE_UPDATE | 84 | -| STAGE_INSTANCE_DELETE | 85 | -| STICKER_CREATE | 90 | -| STICKER_UPDATE | 91 | -| STICKER_DELETE | 92 | -| THREAD_CREATE | 110 | -| THREAD_UPDATE | 111 | -| THREAD_DELETE | 112 | +| Event | Value | +| ---------------------------- | ----- | +| GUILD_UPDATE | 1 | +| CHANNEL_CREATE | 10 | +| CHANNEL_UPDATE | 11 | +| CHANNEL_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 | +| MEMBER_MOVE | 26 | +| MEMBER_DISCONNECT | 27 | +| BOT_ADD | 28 | +| 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 | +| MESSAGE_BULK_DELETE | 73 | +| MESSAGE_PIN | 74 | +| MESSAGE_UNPIN | 75 | +| INTEGRATION_CREATE | 80 | +| INTEGRATION_UPDATE | 81 | +| INTEGRATION_DELETE | 82 | +| STAGE_INSTANCE_CREATE | 83 | +| STAGE_INSTANCE_UPDATE | 84 | +| STAGE_INSTANCE_DELETE | 85 | +| STICKER_CREATE | 90 | +| STICKER_UPDATE | 91 | +| STICKER_DELETE | 92 | +| GUILD_SCHEDULED_EVENT_CREATE | 100 | +| GUILD_SCHEDULED_EVENT_UPDATE | 101 | +| GUILD_SCHEDULED_EVENT_DELETE | 102 | +| THREAD_CREATE | 110 | +| THREAD_UPDATE | 111 | +| THREAD_DELETE | 112 | ###### Optional Audit Entry Info @@ -135,16 +138,17 @@ Whenever an admin action is performed on the API, an entry is added to the respe | avatar_hash | [user](#DOCS_RESOURCES_USER/user-object) | string | user avatar changed | | banner_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | guild banner changed | | bitrate | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | voice channel bitrate changed | -| channel_id | [invite](#DOCS_RESOURCES_INVITE/invite-object) | snowflake | channel for invite code changed | +| channel_id | [invite](#DOCS_RESOURCES_INVITE/invite-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | snowflake | channel for invite code or guild scheduled event changed | | code | [invite](#DOCS_RESOURCES_INVITE/invite-object) | string | invite code changed | | color | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | integer | role color changed | | deaf | [user](#DOCS_RESOURCES_USER/user-object) | boolean | user server deafened/undeafened | | default_auto_archive_duration | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | default auto archive duration for newly created threads changed | | default_message_notifications | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | default [message notification level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) changed | | deny | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | a permission on a text or voice channel was denied for a role | -| description | [guild](#DOCS_RESOURCES_GUILD/guild-object) or [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | string | description changed | +| description | [guild](#DOCS_RESOURCES_GUILD/guild-object) or [sticker](#DOCS_RESOURCES_STICKER/sticker-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | string | description changed | | discovery_splash_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | discovery splash changed | | enable_emoticons | [integration](#DOCS_RESOURCES_GUILD/integration-object) | boolean | integration emoticons enabled/disabled | +| entity_type | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer | entity type of guild scheduled event was changed | | expire_behavior | [integration](#DOCS_RESOURCES_GUILD/integration-object) | integer | integration expiring subscriber behavior changed | | expire_grace_period | [integration](#DOCS_RESOURCES_GUILD/integration-object) | integer | integration expire grace period changed | | explicit_content_filter | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | change in [whose messages](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) are scanned and deleted for explicit content in the server | @@ -154,6 +158,7 @@ Whenever an admin action is performed on the API, an entry is added to the respe | icon_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) or [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | icon changed | | id | any | snowflake | the id of the changed entity - sometimes used in conjunction with other keys | | inviter_id | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | snowflake | person who created invite code changed | +| location | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | string | change in channel id for guild scheduled event | | locked | [thread](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) | bool | thread is now locked/unlocked | | max_age | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | how long invite code lasts changed | | max_uses | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | change to max number of times invite code can be used | @@ -168,13 +173,14 @@ Whenever an admin action is performed on the API, an entry is added to the respe | permissions | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | [permissions](#DOCS_TOPICS_PERMISSIONS/permissions-bitwise-permission-flags) for a role changed | | position | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | text or voice channel position changed | | preferred_locale | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | preferred locale changed | -| privacy_level | [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) | integer ([privacy level](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-privacy-level)) | privacy level of the stage instance changed | +| privacy_level | [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer ([privacy level](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-privacy-level)) | privacy level of the stage instance changed | | prune_delete_days | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | change in number of days after which inactive and role-unassigned members are kicked | | public_updates_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the public updates channel changed | | rate_limit_per_user | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | amount of seconds a user has to wait before sending another message changed | | region | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | region changed | | rules_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the rules channel changed | | splash_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | invite splash page artwork changed | +| status | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer [(status)](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | status of guild scheduled event was changed | | system_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the system channel changed | | tags | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | string | related emoji of sticker changed | | temporary | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | boolean | invite code is temporary/never expires | diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md new file mode 100644 index 0000000000..ef31003aec --- /dev/null +++ b/docs/resources/Guild_Scheduled_Event.md @@ -0,0 +1,136 @@ +# Guild Scheduled Event + +A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). + +### Guild Scheduled Event Object + +###### Guild Scheduled Event Structure + +| Field | Type | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | +| id | snowflake | the id of the scheduled event | +| guild_id | snowflake | the guild id which the scheduled event belongs to | +| channel_id | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | +| creator_id? | snowflake | the id of the user that created the scheduled event | +| name | string | the name of the scheduled event | +| description? | string | the description of the scheduled event | +| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | +| scheduled_end_time | ?ISO8601 timestamp | the time the scheduled event will end, or `null` if the event does not have a scheduled time to end | +| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| status | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | +| entity_type | [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of hosting entity associated with a scheduled event, e.g. voice channel or stage channel | +| entity_id | ?snowflake | any additional id of the hosting entity associated with event, e.g. [stage instance id](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object)) | +| entity_metadata | ?[entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata for the scheduled event | +| creator? | [user](#DOCS_RESOURCES_USER/user-object) object | the user that created the scheduled event | +| user_count? | integer | the number of users subscribed to the scheduled event | + +###### Guild Scheduled Event Privacy Level + +| Level | Value | Description | +| ---------- | ----- | -------------------------------------------------------- | +| PUBLIC | 1 | the scheduled event is public and available in discovery | +| GUILD_ONLY | 2 | the scheduled event is only accessible to guild members | + +###### Guild Scheduled Event Entity Types + +| Type | Value | +| -------------- | ----- | +| NONE | 0 | +| STAGE_INSTANCE | 1 | +| VOICE | 2 | +| EXTERNAL | 3 | + +###### Guild Scheduled Event Status + +| Type | Value | +| --------- | ----- | +| SCHEDULED | 1 | +| ACTIVE | 2 | +| COMPLETED | 3 | +| CANCELED | 4 | + +###### Guild Scheduled Event Entity Metadata + +| Field | Type | Description | +| ------------ | ------------------- | --------------------------------- | +| speaker_ids? | array of snowflakes | the speakers of the stage channel | +| location? | string | location of the event | + +## List Scheduled Events for Guild % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events + +Returns a list of [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) objects for the given guild. + +###### Query String Params + +| Field | Type | Description | +| ---------------- | ------- | ------------------------------------------------ | +| with_user_count? | boolean | include number of users subscribed to each event | + +## Create Guild Scheduled Event % POST /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events + +Create a guild scheduled event in the guild. Returns a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object on success. + +> info +> A guild can have a maximum of 100 events with `SCHEDULED` or `ACTIVE` status at any time. + +###### JSON Params + +| Field | Type | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| channel_id? | snowflake | the channel id of the scheduled event, if for a stage instance of voice channel | +| entity_metadata? | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | +| name | string | the name of the scheduled event | +| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| scheduled_start_time | ISO8601 timestamp | the time to schedule the scheduled event | +| scheduled_end_time? | ISO8601 timestamp | the time when the scheduled event is scheduled to end | +| description? | string | the description of the scheduled event | +| entity_type | [entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | + +## Get Guild Scheduled Event % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object} + +Get a guild scheduled event. Returns a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object on success. + +## Modify Guild Scheduled Event % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object} + +Modify a guild scheduled event. Returns the modified [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object on success. + +> info +> All parameters to this endpoint are optional + +> info +> To start or end an event, use this endpoint to modify the event's [status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) field. + +###### JSON Params + +| Field | Type | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| channel_id | snowflake | the channel id of the scheduled event, required if [entity_type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `STAGE_INSTANCE` or `VOICE` +| entity_metadata | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | +| name | string | the name of the scheduled event | +| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| scheduled_start_time | ISO8601 timestamp | the time to schedule the scheduled event | +| scheduled_end_time | ISO8601 timestamp | the time when the scheduled event is scheduled to end | +| description | string | the description of the scheduled event | +| entity_type | [event entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | +| status | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | + +## Delete Guild Scheduled Event % DELETE /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object} + +Delete a guild scheduled event. Returns a `204` on success. + +## Get Guild Scheduled Event Users % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object}/users + +Get a list of users RSVP'd to the guild scheduled event. Returns a list of [user](#DOCS_RESOURCES_USER/user-object) objects on success with an optional `guild_member` property for each user if `with_member` query parameter is passed in. + +###### Query String Params + +| Field | Type | Description | Default | +| ------------ | ------- | ------------------------------------------------------------------------------ | ------- | +| limit? | number | how many users to receive from the event | 100 | +| with_member? | boolean | include guild member data. attaches `guild_member` property to the user object | false | + +###### Response Structure + +| Field | Type | +| ------------- | ---------------------------------------------------------------------------------------------------------------- | +| users | array of [user](#DOCS_RESOURCES_USER/user-object) objects with an optional `guild_member` property for each user | diff --git a/docs/resources/Invite.md b/docs/resources/Invite.md index 6d6894656a..67dd9b2923 100644 --- a/docs/resources/Invite.md +++ b/docs/resources/Invite.md @@ -6,19 +6,20 @@ Represents a code that when used, adds a user to a guild or group DM channel. ###### Invite Structure -| Field | Type | Description | -|-----------------------------|-------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------| -| code | string | the invite code (unique ID) | -| guild? | partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object | the guild this invite is for | -| channel | partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the channel this invite is for | -| inviter? | [user](#DOCS_RESOURCES_USER/user-object) object | the user who created the invite | -| target_type? | integer | the [type of target](#DOCS_RESOURCES_INVITE/invite-object-invite-target-types) for this voice channel invite | -| target_user? | [user](#DOCS_RESOURCES_USER/user-object) object | the user whose stream to display for this voice channel stream invite | -| target_application? | partial [application](#DOCS_RESOURCES_APPLICATION/application-object) object | the embedded application to open for this voice channel embedded application invite | -| approximate_presence_count? | integer | approximate count of online members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | -| approximate_member_count? | integer | approximate count of total members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | -| expires_at? | ?ISO8601 timestamp | the expiration date of this invite, returned from the `GET /invites/` endpoint when `with_expiration` is `true` | -| stage_instance? | [invite stage instance](#DOCS_RESOURCES_INVITE/invite-stage-instance-object) object | stage instance data if there is a [public Stage instance](#DOCS_RESOURCES_STAGE_INSTANCE) in the Stage channel this invite is for | +| Field | Type | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| code | string | the invite code (unique ID) | +| guild? | partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object | the guild this invite is for | +| channel | partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the channel this invite is for | +| inviter? | [user](#DOCS_RESOURCES_USER/user-object) object | the user who created the invite | +| target_type? | integer | the [type of target](#DOCS_RESOURCES_INVITE/invite-object-invite-target-types) for this voice channel invite | +| target_user? | [user](#DOCS_RESOURCES_USER/user-object) object | the user whose stream to display for this voice channel stream invite | +| target_application? | partial [application](#DOCS_RESOURCES_APPLICATION/application-object) object | the embedded application to open for this voice channel embedded application invite | +| approximate_presence_count? | integer | approximate count of online members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | +| approximate_member_count? | integer | approximate count of total members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | +| expires_at? | ?ISO8601 timestamp | the expiration date of this invite, returned from the `GET /invites/` endpoint when `with_expiration` is `true` | +| stage_instance? | [invite stage instance](#DOCS_RESOURCES_INVITE/invite-stage-instance-object) object | stage instance data if there is a [public Stage instance](#DOCS_RESOURCES_STAGE_INSTANCE) in the Stage channel this invite is for | +| guild_scheduled_event? | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object | guild scheduled event data, only included if `guild_scheduled_event_id` contains a valid guild scheduled event id | ###### Invite Target Types @@ -130,10 +131,11 @@ Returns an [invite](#DOCS_RESOURCES_INVITE/invite-object) object for the given c ###### Query String Params -| Field | Type | Description | -| ---------------- | ------- | ----------------------------------------------------------- | -| with_counts? | boolean | whether the invite should contain approximate member counts | -| with_expiration? | boolean | whether the invite should contain the expiration date | +| Field | Type | Description | +| ------------------------- | --------- | ----------------------------------------------------------- | +| with_counts? | boolean | whether the invite should contain approximate member counts | +| with_expiration? | boolean | whether the invite should contain the expiration date | +| guild_scheduled_event_id? | snowflake | the guild scheduled event to include with the invite | ## Delete Invite % DELETE /invites/{invite.code#DOCS_RESOURCES_INVITE/invite-object} diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index b5ee1a9d9c..73c948f2a2 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -302,10 +302,19 @@ DIRECT_MESSAGE_REACTIONS (1 << 13) DIRECT_MESSAGE_TYPING (1 << 14) - TYPING_START + +GUILD_SCHEDULED_EVENTS (1 << 16) + - GUILD_SCHEDULED_EVENT_CREATE + - GUILD_SCHEDULED_EVENT_UPDATE + - GUILD_SCHEDULED_EVENT_DELETE + - GUILD_SCHEDULED_EVENT_USER_ADD ** + - GUILD_SCHEDULED_EVENT_USER_REMOVE ** ``` \* [Thread Members Update](#DOCS_TOPICS_GATEWAY/thread-members-update) contains different data depending on which intents are used. +\*\* [Guild Scheduled Event User Add](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-user-add) and [Guild Scheduled Event User Remove](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-user-remove) are currently experimental and not officially supported. + ### Caveats Any [events not defined in an intent](#DOCS_TOPICS_GATEWAY/commands-and-events-gateway-events) are considered "passthrough" and will always be sent to you. @@ -504,6 +513,11 @@ Events are payloads sent over the socket to a client that correspond to events i | [Guild Role Create](#DOCS_TOPICS_GATEWAY/guild-role-create) | guild role was created | | [Guild Role Update](#DOCS_TOPICS_GATEWAY/guild-role-update) | guild role was updated | | [Guild Role Delete](#DOCS_TOPICS_GATEWAY/guild-role-delete) | guild role was deleted | +| [Guild Scheduled Event Create](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-create) | guild scheduled event was created | +| [Guild Scheduled Event Update](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-update) | guild scheduled event was updated | +| [Guild Scheduled Event Delete](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-delete) | guild scheduled event was deleted | +| [Guild Scheduled Event User Add](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-user-add) | user subscribed to a guild scheduled event | +| [Guild Scheduled Event User Remove](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-user-remove) | user unsubscribed from a guild scheduled event | | [Integration Create](#DOCS_TOPICS_GATEWAY/integration-create) | guild integration was created | | [Integration Update](#DOCS_TOPICS_GATEWAY/integration-update) | guild integration was updated | | [Integration Delete](#DOCS_TOPICS_GATEWAY/integration-delete) | guild integration was deleted | @@ -519,9 +533,9 @@ Events are payloads sent over the socket to a client that correspond to events i | [Message Reaction Remove All](#DOCS_TOPICS_GATEWAY/message-reaction-remove-all) | all reactions were explicitly removed from a message | | [Message Reaction Remove Emoji](#DOCS_TOPICS_GATEWAY/message-reaction-remove-emoji) | all reactions for a given emoji were explicitly removed from a message | | [Presence Update](#DOCS_TOPICS_GATEWAY/presence-update) | user was updated | -| [Stage Instance Create](#DOCS_TOPICS_GATEWAY/stage-instance-create) | stage instance was created | -| [Stage Instance Delete](#DOCS_TOPICS_GATEWAY/stage-instance-delete) | stage instance was deleted or closed | -| [Stage Instance Update](#DOCS_TOPICS_GATEWAY/stage-instance-update) | stage instance was updated | +| [Stage Instance Create](#DOCS_TOPICS_GATEWAY/stage-instance-create) | stage instance was created | +| [Stage Instance Delete](#DOCS_TOPICS_GATEWAY/stage-instance-delete) | stage instance was deleted or closed | +| [Stage Instance Update](#DOCS_TOPICS_GATEWAY/stage-instance-update) | stage instance was updated | | [Typing Start](#DOCS_TOPICS_GATEWAY/typing-start) | user started typing in a channel | | [User Update](#DOCS_TOPICS_GATEWAY/user-update) | properties about the user changed | | [Voice State Update](#DOCS_TOPICS_GATEWAY/voice-state-update) | someone joined, left, or moved a voice channel | @@ -1054,6 +1068,48 @@ Sent when a guild role is deleted. | guild_id | snowflake | id of the guild | | role_id | snowflake | id of the role | +### Guild Scheduled Event Create + +Sent when a guild scheduled event is created. The inner payload is a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object. + +### Guild Scheduled Event Update + +Sent when a guild scheduled event is updated. The inner payload is a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object. + +### Guild Scheduled Event Delete + +Sent when a guild scheduled event is deleted. The inner payload is a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object. See [Guild Scheduled Event Status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) to determine how the event was deleted. + +### Guild Scheduled Event User Add + +Sent when a user has subscribed to a guild scheduled event. + +> info +> NOTE: this event is currently experimental and not officially supported + +###### Guild Scheduled Event User Add Event Fields + +| Field | Type | Description | +| ------------------------ | --------- | ------------------------------- | +| guild_scheduled_event_id | snowflake | id of the guild scheduled event | +| user_id | snowflake | id of the user | +| guild_id | snowflake | id of the guild | + +### Guild Scheduled Event User Remove + +Sent when a user has unsubscribed from a guild scheduled event. + +> info +> NOTE: this event is currently experimental and not officially supported + +###### Guild Scheduled Event User Remove Event Fields + +| Field | Type | Description | +| ------------------------ | --------- | ------------------------------- | +| guild_scheduled_event_id | snowflake | id of the guild scheduled event | +| user_id | snowflake | id of the user | +| guild_id | snowflake | id of the guild | + ### Integrations #### Integration Create diff --git a/docs/topics/Permissions.md b/docs/topics/Permissions.md index b653155491..c06707ddfd 100644 --- a/docs/topics/Permissions.md +++ b/docs/topics/Permissions.md @@ -61,6 +61,7 @@ Below is a table of all current permissions, their integer values in hexadecimal | MANAGE_EMOJIS_AND_STICKERS \* | `0x0040000000` `(1 << 30)` | Allows management and editing of emojis and stickers | | | USE_APPLICATION_COMMANDS | `0x0080000000` `(1 << 31)` | Allows members to use application commands, including slash commands and context menu commands. | T | | REQUEST_TO_SPEAK | `0x0100000000` `(1 << 32)` | Allows for requesting to speak in stage channels. (_This permission is under active development and may be changed or removed._) | S | +| MANAGE_EVENTS | `0x0200000000` `(1 << 33)` | Allows for creating, editing, and deleting scheduled events | V, S | | MANAGE_THREADS \* | `0x0400000000` `(1 << 34)` | Allows for deleting and archiving threads, and viewing all private threads | T | | CREATE_PUBLIC_THREADS | `0x0800000000` `(1 << 35)` | Allows for creating threads | T | | CREATE_PRIVATE_THREADS | `0x1000000000` `(1 << 36)` | Allows for creating private threads | T | From c436af994d5c96fb729804ae794e60238f785a9d Mon Sep 17 00:00:00 2001 From: Lala Sabathil Date: Wed, 17 Nov 2021 00:15:18 +0100 Subject: [PATCH 031/181] Remove speaker_ids from scheduled event metadata object (#4107) --- docs/resources/Guild_Scheduled_Event.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index ef31003aec..1b15615e02 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -53,7 +53,6 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). | Field | Type | Description | | ------------ | ------------------- | --------------------------------- | -| speaker_ids? | array of snowflakes | the speakers of the stage channel | | location? | string | location of the event | ## List Scheduled Events for Guild % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events From 8849f7c9eb7d8edfb2dc37a19d55619573d81d8f Mon Sep 17 00:00:00 2001 From: james <41456914+goverfl0w@users.noreply.github.com> Date: Wed, 17 Nov 2021 12:15:57 -0500 Subject: [PATCH 032/181] Document guild event character limits. (#4104) --- docs/resources/Guild_Scheduled_Event.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index 1b15615e02..8700c63951 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -12,8 +12,8 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). | guild_id | snowflake | the guild id which the scheduled event belongs to | | channel_id | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | | creator_id? | snowflake | the id of the user that created the scheduled event | -| name | string | the name of the scheduled event | -| description? | string | the description of the scheduled event | +| name | string | the name of the scheduled event (1-100 characters) | +| description? | string | the description of the scheduled event (1-1000 characters) | | scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | | scheduled_end_time | ?ISO8601 timestamp | the time the scheduled event will end, or `null` if the event does not have a scheduled time to end | | privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | @@ -51,9 +51,9 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). ###### Guild Scheduled Event Entity Metadata -| Field | Type | Description | -| ------------ | ------------------- | --------------------------------- | -| location? | string | location of the event | +| Field | Type | Description | +| ------------ | ------------------- | ----------------------------------------- | +| location? | string | location of the event (1-100 characters) | ## List Scheduled Events for Guild % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events From 84f3290eb8155dac0a479e748f524542f2eda882 Mon Sep 17 00:00:00 2001 From: Hemu <1871299+hemu@users.noreply.github.com> Date: Thu, 18 Nov 2021 16:16:20 -0500 Subject: [PATCH 033/181] Add breaking change to guild scheduled events and more details for guild scheduled events feature (#4113) Co-authored-by: james <41456914+goverfl0w@users.noreply.github.com> --- docs/Change_Log.md | 14 ++ docs/resources/Guild_Scheduled_Event.md | 251 ++++++++++++++++++------ 2 files changed, 204 insertions(+), 61 deletions(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index 4d4b73cd6e..28d3580be6 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -1,5 +1,19 @@ # Change Log +## Guild Scheduled Events + +#### Nov 18, 2021 + +- Breaking change for return type for `GET /guilds/{guild.id}/scheduled-events/{guild_scheduled_event.id}/users` +- Add `with_user_count` query param for `GET /guilds/{guild.id}/scheduled-events/{guild_scheduled_event.id}` +- Return additional `creator` field by default in response for `GET /guilds/{guild.id}/scheduled-events/{guild_scheduled_event.id}` +- More details and clarification for the guild scheduled events feature. +- Document support for `before` and `after` query params for `GET /guilds/{guild.id}/scheduled-events/{guild_scheduled_event.id}/users` + +#### Nov 15, 2021 + +Add new documentation for recently released Guild Scheduled Events feature. + ## Application Command Autocomplete Interactions #### October 27, 2021 diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index 8700c63951..4cc248c480 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -6,54 +6,100 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). ###### Guild Scheduled Event Structure -| Field | Type | Description | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | -| id | snowflake | the id of the scheduled event | -| guild_id | snowflake | the guild id which the scheduled event belongs to | -| channel_id | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | -| creator_id? | snowflake | the id of the user that created the scheduled event | -| name | string | the name of the scheduled event (1-100 characters) | -| description? | string | the description of the scheduled event (1-1000 characters) | -| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | -| scheduled_end_time | ?ISO8601 timestamp | the time the scheduled event will end, or `null` if the event does not have a scheduled time to end | -| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | -| status | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | -| entity_type | [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of hosting entity associated with a scheduled event, e.g. voice channel or stage channel | -| entity_id | ?snowflake | any additional id of the hosting entity associated with event, e.g. [stage instance id](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object)) | -| entity_metadata | ?[entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata for the scheduled event | -| creator? | [user](#DOCS_RESOURCES_USER/user-object) object | the user that created the scheduled event | -| user_count? | integer | the number of users subscribed to the scheduled event | +| Field | Type | Description | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | +| id | snowflake | the id of the scheduled event | +| guild_id | snowflake | the guild id which the scheduled event belongs to | +| channel_id ** | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | +| creator_id * | ?snowflake | the id of the user that created the scheduled event * | +| name | string | the name of the scheduled event (1-100 characters) | +| description? | string | the description of the scheduled event (1-1000 characters) | +| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | +| scheduled_end_time ** | ?ISO8601 timestamp | the time the scheduled event will end, required if entity_type is `EXTERNAL` | +| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| status | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | +| entity_type | [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of the scheduled event | +| entity_id | ?snowflake | the id of an entity associated with a guild scheduled event | +| entity_metadata ** | ?[entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | additional metadata for the guild scheduled event | +| creator? | [user](#DOCS_RESOURCES_USER/user-object) object | the user that created the scheduled event | +| user_count? | integer | the number of users subscribed to the scheduled event | + + +\* `creator_id` will be null and `creator` will not be included for events created before October 25th, 2021, when the concept of `creator_id` was introduced and tracked. + +\** See [field requirements by entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-field-requirements-by-entity-type) to understand the relationship between `entity_type` and the following fields: `channel_id`, `entity_metadata`, and `scheduled_end_time` ###### Guild Scheduled Event Privacy Level | Level | Value | Description | | ---------- | ----- | -------------------------------------------------------- | -| PUBLIC | 1 | the scheduled event is public and available in discovery | | GUILD_ONLY | 2 | the scheduled event is only accessible to guild members | ###### Guild Scheduled Event Entity Types | Type | Value | | -------------- | ----- | -| NONE | 0 | | STAGE_INSTANCE | 1 | | VOICE | 2 | | EXTERNAL | 3 | +###### Field Requirements By Entity Type + +The following table shows field requirements based on current entity type. + +`value` : This field is required to be a non-null value + +`null` : This field is required to be null + +`-` : No strict requirements + +| Entity Type | channel_id | entity_metadata | scheduled_end_time | +| -------------- | ---------- | --------------- | ------------------ | +| STAGE_INSTANCE | value | null | - | +| VOICE | value | null | - | +| EXTERNAL | null | value * | value | + +\* `entity_metadata` with a non-null `location` must be provided + + ###### Guild Scheduled Event Status -| Type | Value | -| --------- | ----- | -| SCHEDULED | 1 | -| ACTIVE | 2 | -| COMPLETED | 3 | -| CANCELED | 4 | +| Type | Value | +| ----------- | ----- | +| SCHEDULED | 1 | +| ACTIVE | 2 | +| COMPLETED * | 3 | +| CANCELED * | 4 | + +\* Once `status` is set to `COMPLETED` or `CANCELED`, the `status` can no longer be updated + +###### Valid Guild Scheduled Event Status Transitions + +SCHEDULED --> ACTIVE + +ACTIVE --------> COMPLETED + +SCHEDULED --> CANCELED + ###### Guild Scheduled Event Entity Metadata -| Field | Type | Description | -| ------------ | ------------------- | ----------------------------------------- | -| location? | string | location of the event (1-100 characters) | +| Field | Type | Description | +| ------------ | ------------------- | ---------------------------------------- | +| location? * | string | location of the event (1-100 characters) | + +\* [required](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) for events with `'entity_type': EXTERNAL` + +### Guild Scheduled Event User Object + +###### Guild Scheduled Event User Structure + +| Field | Type | Description | +| -------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | +| guild_scheduled_event_id | snowflake | the scheduled event id which the user subscribed to | +| user | [user](#DOCS_RESOURCES_USER/user-object) | user which subscribed to an event | +| member? | [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) | guild member data for this user for the guild which this event belongs to, if any | + ## List Scheduled Events for Guild % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events @@ -74,44 +120,58 @@ Create a guild scheduled event in the guild. Returns a [guild scheduled event](# ###### JSON Params -| Field | Type | Description | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| channel_id? | snowflake | the channel id of the scheduled event, if for a stage instance of voice channel | -| entity_metadata? | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | -| name | string | the name of the scheduled event | -| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | -| scheduled_start_time | ISO8601 timestamp | the time to schedule the scheduled event | -| scheduled_end_time? | ISO8601 timestamp | the time when the scheduled event is scheduled to end | -| description? | string | the description of the scheduled event | -| entity_type | [entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | +| Field | Type | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | +| channel_id? * | snowflake * | the channel id of the scheduled event. | +| entity_metadata? | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | +| name | string | the name of the scheduled event | +| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| scheduled_start_time | ISO8601 timestamp | the time to schedule the scheduled event | +| scheduled_end_time? | ISO8601 timestamp | the time when the scheduled event is scheduled to end | +| description? | string | the description of the scheduled event | +| entity_type | [entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | + +\* Optional for events with `'entity_type': EXTERNAL` ## Get Guild Scheduled Event % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object} Get a guild scheduled event. Returns a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object on success. +###### Query String Params + +> warn +> The `with_user_count` query param was introduced on Thursday Nov 18, 2021 after the initial publication of this documentation to remain consitent with other guild scheduled events endpoints + +| Field | Type | Description | +| ---------------- | ------- | ------------------------------------------------ | +| with_user_count? | boolean | include number of users subscribed to this event | + ## Modify Guild Scheduled Event % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object} Modify a guild scheduled event. Returns the modified [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object on success. -> info -> All parameters to this endpoint are optional - > info > To start or end an event, use this endpoint to modify the event's [status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) field. ###### JSON Params -| Field | Type | Description | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| channel_id | snowflake | the channel id of the scheduled event, required if [entity_type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `STAGE_INSTANCE` or `VOICE` -| entity_metadata | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | -| name | string | the name of the scheduled event | -| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | -| scheduled_start_time | ISO8601 timestamp | the time to schedule the scheduled event | -| scheduled_end_time | ISO8601 timestamp | the time when the scheduled event is scheduled to end | -| description | string | the description of the scheduled event | -| entity_type | [event entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | -| status | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | +| Field | Type | Description | +| --------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | +| channel_id? * | ?snowflake | the channel id of the scheduled event, set to `null` if changing entity type to `EXTERNAL` | +| entity_metadata? | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | +| name? | string | the name of the scheduled event | +| privacy_level? | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| scheduled_start_time? | ISO8601 timestamp | the time to schedule the scheduled event | +| scheduled_end_time? * | ISO8601 timestamp | the time when the scheduled event is scheduled to end | +| description? | string | the description of the scheduled event | +| entity_type? * | [event entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | +| status? | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | + +\* If updating `entity_type` to `EXTERNAL`: + +- `channel_id` is required and [must be set to null](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-field-requirements-by-entity-type) +- `entity_metadata` with a `location` field must be provided +- `scheduled_end_time` must be provided ## Delete Guild Scheduled Event % DELETE /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object} @@ -119,17 +179,86 @@ Delete a guild scheduled event. Returns a `204` on success. ## Get Guild Scheduled Event Users % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object}/users -Get a list of users RSVP'd to the guild scheduled event. Returns a list of [user](#DOCS_RESOURCES_USER/user-object) objects on success with an optional `guild_member` property for each user if `with_member` query parameter is passed in. +> warn +> A breaking change was introduced for this endpoint on Thursday Nov 18, 2021 after the initial publication of this documentation in which the return type was changed in response to developer feedback. We apologize for the inconvenience and additional work this creates for developers. + +Get a list of guild scheduled event users subscribed to a guild scheduled event. Returns a list of [guild scheduled event user](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-user-object) objects on success. Guild member data, if it exists, is included if the `with_member` query parameter is set. ###### Query String Params -| Field | Type | Description | Default | -| ------------ | ------- | ------------------------------------------------------------------------------ | ------- | -| limit? | number | how many users to receive from the event | 100 | -| with_member? | boolean | include guild member data. attaches `guild_member` property to the user object | false | +| Field | Type | Description | Default | +| ------------ | ------- | ------------------------------------------------------------------------------ | ------- | +| limit? | number | how many users to receive from the event | 100 | +| with_member? | boolean | include guild member data if it exists | false | +| before? * | snowflake | consider only users before given user id | null | +| after? * | snowflake | consider only users after given user id | null | + +\* Provide a user id to `before` and `after` for pagination. Users will always be returned in ascending order by `user_id`. If both `before` and `after` are provided, only `before` is respected. Fetching users in-between `before` and `after` is not supported. + + +## Guild Scheduled Event Status Update Automation + +NOTE: `status` and `entity_type` here are expressed by name rather than their value for readability + +### An active scheduled event for a stage channel where all users have left the stage channel will automatically end a few minutes after the last user leaves the channel + +When an event with `'status': ACTIVE` and `'entity_type': STAGE_INSTANCE` has no users connected to the stage channel for a certain period of time (on the order of minutes), the event `status` will be automatically set to `COMPLETED`. + +### An active scheduled event for a voice channel where all users have left the voice channel will automatically end a few minutes after the last user leaves the channel + +When an event with `'status': ACTIVE` and `'entity_type': VOICE` has no users connected to the voice channel for a certain period of time (on the order of minutes), the event `status` will be automatically set to `COMPLETED`. + +### An external event will automatically begin at its scheduled start time + +An event with `'entity_type': EXTERNAL` at its `scheduled_start_time` will automatically have `status` set to `ACTIVE`. + +### An external event will automatically end at its scheduled end time + +An event with `'entity_type': EXTERNAL` at its `scheduled_end_time` will automatically have `status` set to `COMPLETED`. + +### Any scheduled event which has not begun after its scheduled start time will be automatically cancelled after a few hours + +Any event with `'status': SCHEDULED` after a certain time interval (on the order of hours) beyond its `scheduled_start_time` will have its `status` automatically set to `CANCELLED`. + +## Guild Scheduled Event Permissions Requirements + +NOTE: `entity_type` is expressed by name rather than value for readability + +> info +> A user must be a member of the guild and not banned from the guild. These two requirements must be met before other permissions are considered. + +### Permissions to create an event with entity_type: STAGE_INSTANCE + +#### Write Permissions (CREATE / UPDATE) + +- `MANAGE_EVENTS` at the guild level or at least `MANAGE_EVENTS` for the `channel_id` associated with the event +- `MANAGE_CHANNELS` +- `MUTE_MEMBERS` +- `MOVE_MEMBERS` + +#### Read Permissions (GET) + +- `READ_MESSAGES` for `channel_id` associated with the event + +### Permissions to create an event with entity_type: VOICE + +#### Write Permissions (CREATE / UPDATE) + +- `MANAGE_EVENTS` at the guild level or `MANAGE_EVENTS` for the `channel_id` associated with the event +- `READ_MESSAGES` for `channel_id` associated with event +- `CONNECT` for `channel_id` associated with event + +#### Read Permissions (GET) + +- `READ_MESSAGES` for `channel_id` associated with the event + + +### Permissions to create an event with entity_type: EXTERNAL + +#### Write Permissions (CREATE / UPDATE) + +- `MANAGE_EVENTS` at the guild level -###### Response Structure +#### Read Permissions (GET) -| Field | Type | -| ------------- | ---------------------------------------------------------------------------------------------------------------- | -| users | array of [user](#DOCS_RESOURCES_USER/user-object) objects with an optional `guild_member` property for each user | +* *No other permissions required* \ No newline at end of file From ff177aa6e9c01708758eeada68e79340e68bc569 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Fri, 19 Nov 2021 14:26:13 +0000 Subject: [PATCH 034/181] Add max scheduled events error (#3919) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 23fc7a24c2..4e5ac74061 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -174,6 +174,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 30033 | Max number of thread participants has been reached (1000) | | 30035 | Maximum number of bans for non-guild members have been exceeded | | 30037 | Maximum number of bans fetches has been reached | +| 30038 | Maximum number of uncompleted guild scheduled events reached (100) | | 30039 | Maximum number of stickers reached | | 30040 | Maximum number of prune requests has been reached. Try again later | | 30042 | Maximum number of guild widget settings updates has been reached. Try again later | From 410cbbaafb9f20b28d40846572e304cd0fd8745c Mon Sep 17 00:00:00 2001 From: Hemu <1871299+hemu@users.noreply.github.com> Date: Fri, 19 Nov 2021 09:59:56 -0500 Subject: [PATCH 035/181] Add scheduled events opcodes and rename READ_MESSAGES (#4117) Add opcodes and status codes rename READ_MESSAGES to VIEW_CHANNEL clearer guild membership requirement phrasing --- docs/resources/Guild_Scheduled_Event.md | 8 ++++---- docs/topics/Opcodes_and_Status_Codes.md | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index 4cc248c480..e1dbec2a60 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -225,7 +225,7 @@ Any event with `'status': SCHEDULED` after a certain time interval (on the order NOTE: `entity_type` is expressed by name rather than value for readability > info -> A user must be a member of the guild and not banned from the guild. These two requirements must be met before other permissions are considered. +> A user must be a member of the guild in order to access events for that guild. ### Permissions to create an event with entity_type: STAGE_INSTANCE @@ -238,19 +238,19 @@ NOTE: `entity_type` is expressed by name rather than value for readability #### Read Permissions (GET) -- `READ_MESSAGES` for `channel_id` associated with the event +- `VIEW_CHANNEL` for `channel_id` associated with the event ### Permissions to create an event with entity_type: VOICE #### Write Permissions (CREATE / UPDATE) - `MANAGE_EVENTS` at the guild level or `MANAGE_EVENTS` for the `channel_id` associated with the event -- `READ_MESSAGES` for `channel_id` associated with event +- `VIEW_CHANNEL` for `channel_id` associated with event - `CONNECT` for `channel_id` associated with event #### Read Permissions (GET) -- `READ_MESSAGES` for `channel_id` associated with the event +- `VIEW_CHANNEL` for `channel_id` associated with the event ### Permissions to create an event with entity_type: EXTERNAL diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 4e5ac74061..f91bb39275 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -231,6 +231,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 60003 | Two factor is required for this operation | | 80004 | No users with DiscordTag exist | | 90001 | Reaction was blocked | +| 10070 | Unknown Guild Scheduled Event | | 130000 | API resource is currently overloaded. Try again a little later | | 150006 | The Stage is already open | | 160002 | Cannot reply without permission to read message history | @@ -245,6 +246,8 @@ Along with the HTTP error code, our API can also return more detailed error code | 170005 | Lottie animation maximum dimensions exceeded | | 170006 | Sticker frame rate is either too small or too large | | 170007 | Sticker animation duration exceeds maximum of 5 seconds | +| 180000 | Cannot update a finished event | +| 180002 | Failed to create stage needed for stage event | ###### Example JSON Error Response From ce42fdd223c310bcec8067fa0cd703d9c5964f31 Mon Sep 17 00:00:00 2001 From: Shubham Parihar Date: Sat, 20 Nov 2021 13:54:49 +0530 Subject: [PATCH 036/181] fix: remove duplicate error code (#4122) --- docs/topics/Opcodes_and_Status_Codes.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index f91bb39275..608f1b9a08 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -231,7 +231,6 @@ Along with the HTTP error code, our API can also return more detailed error code | 60003 | Two factor is required for this operation | | 80004 | No users with DiscordTag exist | | 90001 | Reaction was blocked | -| 10070 | Unknown Guild Scheduled Event | | 130000 | API resource is currently overloaded. Try again a little later | | 150006 | The Stage is already open | | 160002 | Cannot reply without permission to read message history | From 46673b96b9bcfffa25bca3fd4f8633edcb7b780f Mon Sep 17 00:00:00 2001 From: Almeida Date: Mon, 22 Nov 2021 18:25:20 +0000 Subject: [PATCH 037/181] added missing newline in between notes (#4128) --- docs/resources/Webhook.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index d6ce4c440b..e52bc33ced 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -182,7 +182,8 @@ Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on attac | payload_json \*\*| string | JSON encoded body of non-file params | `multipart/form-data` only | | attachments \*\* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | -\* Requires an application-owned webhook +\* Requires an application-owned webhook. + \*\* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. > info @@ -253,7 +254,8 @@ Any provided files will be **appended** to the message. To remove or replace fil | payload_json \*\*| string | JSON encoded body of non-file params (multipart/form-data only) | | attachments \*\* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attached files to keep and possible descriptions for new files | -\* Requires an application-owned webhook +\* Requires an application-owned webhook. + \*\* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. # Delete Webhook Message % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} From d4b823f73aa893aa14dab97ee1971d31aa31c043 Mon Sep 17 00:00:00 2001 From: Izhar Ahmad <54180221+nerdguyahmad@users.noreply.github.com> Date: Wed, 24 Nov 2021 03:20:18 +0500 Subject: [PATCH 038/181] Document guild_scheduled_events on guild object. (#4139) add guild_scheduled_events field sent as part of GUILD_CREATE --- docs/resources/Guild.md | 105 ++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 52 deletions(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index f03a97ba94..daadd3c74f 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -6,58 +6,59 @@ Guilds in Discord represent an isolated collection of users and channels, and ar ###### Guild Structure -| Field | Type | Description | -| ----------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| id | snowflake | guild id | -| name | string | guild name (2-100 characters, excluding trailing and leading whitespace) | -| icon | ?string | [icon hash](#DOCS_REFERENCE/image-formatting) | -| icon_hash? | ?string | [icon hash](#DOCS_REFERENCE/image-formatting), returned when in the template object | -| splash | ?string | [splash hash](#DOCS_REFERENCE/image-formatting) | -| discovery_splash | ?string | [discovery splash hash](#DOCS_REFERENCE/image-formatting); only present for guilds with the "DISCOVERABLE" feature | -| owner? \*\* | boolean | true if [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) is the owner of the guild | -| owner_id | snowflake | id of owner | -| permissions? \*\* | string | total permissions for [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) in the guild (excludes overwrites) | -| region? \*\*\* | ?string | [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id for the guild (deprecated) | -| afk_channel_id | ?snowflake | id of afk channel | -| afk_timeout | integer | afk timeout in seconds | -| widget_enabled? | boolean | true if the server widget is enabled | -| widget_channel_id? | ?snowflake | the channel id that the widget will generate an invite to, or `null` if set to no invite | -| verification_level | integer | [verification level](#DOCS_RESOURCES_GUILD/guild-object-verification-level) required for the guild | -| default_message_notifications | integer | default [message notifications level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) | -| explicit_content_filter | integer | [explicit content filter level](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) | -| roles | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | roles in the guild | -| emojis | array of [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) objects | custom guild emojis | -| features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | -| mfa_level | integer | required [MFA level](#DOCS_RESOURCES_GUILD/guild-object-mfa-level) for the guild | -| application_id | ?snowflake | application id of the guild creator if it is bot-created | -| system_channel_id | ?snowflake | the id of the channel where guild notices such as welcome messages and boost events are posted | -| system_channel_flags | integer | [system channel flags](#DOCS_RESOURCES_GUILD/guild-object-system-channel-flags) | -| rules_channel_id | ?snowflake | the id of the channel where Community guilds can display rules and/or guidelines | -| joined_at? \* | ISO8601 timestamp | when this guild was joined at | -| large? \* | boolean | true if this is considered a large guild | -| unavailable? \* | boolean | true if this guild is unavailable due to an outage | -| member_count? \* | integer | total number of members in this guild | -| voice_states? \* | array of partial [voice state](#DOCS_RESOURCES_VOICE/voice-state-object) objects | states of members currently in voice channels; lacks the `guild_id` key | -| members? \* | array of [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) objects | users in the guild | -| channels? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | channels in the guild | -| threads? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | all active threads in the guild that current user has permission to view | -| presences? \* | array of partial [presence update](#DOCS_TOPICS_GATEWAY/presence-update) objects | presences of the members in the guild, will only include non-offline members if the size is greater than `large threshold` | -| max_presences? | ?integer | the maximum number of presences for the guild (`null` is always returned, apart from the largest of guilds) | -| max_members? | integer | the maximum number of members for the guild | -| vanity_url_code | ?string | the vanity url code for the guild | -| description | ?string | the description of a Community guild | -| banner | ?string | [banner hash](#DOCS_REFERENCE/image-formatting) | -| premium_tier | integer | [premium tier](#DOCS_RESOURCES_GUILD/guild-object-premium-tier) (Server Boost level) | -| premium_subscription_count? | integer | the number of boosts this guild currently has | -| preferred_locale | string | the preferred locale of a Community guild; used in server discovery and notices from Discord; defaults to "en-US" | -| public_updates_channel_id | ?snowflake | the id of the channel where admins and moderators of Community guilds receive notices from Discord | -| max_video_channel_users? | integer | the maximum amount of users in a video channel | -| approximate_member_count? | integer | approximate number of members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | -| approximate_presence_count? | integer | approximate number of non-offline members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | -| welcome_screen? | [welcome screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object | the welcome screen of a Community guild, shown to new members, returned in an [Invite](#DOCS_RESOURCES_INVITE/invite-object)'s guild object | -| nsfw_level | integer | [guild NSFW level](#DOCS_RESOURCES_GUILD/guild-object-guild-nsfw-level) | -| stage_instances? \* | array of [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) objects | Stage instances in the guild | -| stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | +| Field | Type | Description | +| ----------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | +| id | snowflake | guild id | +| name | string | guild name (2-100 characters, excluding trailing and leading whitespace) | +| icon | ?string | [icon hash](#DOCS_REFERENCE/image-formatting) | +| icon_hash? | ?string | [icon hash](#DOCS_REFERENCE/image-formatting), returned when in the template object | +| splash | ?string | [splash hash](#DOCS_REFERENCE/image-formatting) | +| discovery_splash | ?string | [discovery splash hash](#DOCS_REFERENCE/image-formatting); only present for guilds with the "DISCOVERABLE" feature | +| owner? \*\* | boolean | true if [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) is the owner of the guild | +| owner_id | snowflake | id of owner | +| permissions? \*\* | string | total permissions for [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) in the guild (excludes overwrites) | +| region? \*\*\* | ?string | [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id for the guild (deprecated) | +| afk_channel_id | ?snowflake | id of afk channel | +| afk_timeout | integer | afk timeout in seconds | +| widget_enabled? | boolean | true if the server widget is enabled | +| widget_channel_id? | ?snowflake | the channel id that the widget will generate an invite to, or `null` if set to no invite | +| verification_level | integer | [verification level](#DOCS_RESOURCES_GUILD/guild-object-verification-level) required for the guild | +| default_message_notifications | integer | default [message notifications level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) | +| explicit_content_filter | integer | [explicit content filter level](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) | +| roles | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | roles in the guild | +| emojis | array of [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) objects | custom guild emojis | +| features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | +| mfa_level | integer | required [MFA level](#DOCS_RESOURCES_GUILD/guild-object-mfa-level) for the guild | +| application_id | ?snowflake | application id of the guild creator if it is bot-created | +| system_channel_id | ?snowflake | the id of the channel where guild notices such as welcome messages and boost events are posted | +| system_channel_flags | integer | [system channel flags](#DOCS_RESOURCES_GUILD/guild-object-system-channel-flags) | +| rules_channel_id | ?snowflake | the id of the channel where Community guilds can display rules and/or guidelines | +| joined_at? \* | ISO8601 timestamp | when this guild was joined at | +| large? \* | boolean | true if this is considered a large guild | +| unavailable? \* | boolean | true if this guild is unavailable due to an outage | +| member_count? \* | integer | total number of members in this guild | +| voice_states? \* | array of partial [voice state](#DOCS_RESOURCES_VOICE/voice-state-object) objects | states of members currently in voice channels; lacks the `guild_id` key | +| members? \* | array of [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) objects | users in the guild | +| channels? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | channels in the guild | +| threads? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | all active threads in the guild that current user has permission to view | +| presences? \* | array of partial [presence update](#DOCS_TOPICS_GATEWAY/presence-update) objects | presences of the members in the guild, will only include non-offline members if the size is greater than `large threshold` | +| max_presences? | ?integer | the maximum number of presences for the guild (`null` is always returned, apart from the largest of guilds) | +| max_members? | integer | the maximum number of members for the guild | +| vanity_url_code | ?string | the vanity url code for the guild | +| description | ?string | the description of a Community guild | +| banner | ?string | [banner hash](#DOCS_REFERENCE/image-formatting) | +| premium_tier | integer | [premium tier](#DOCS_RESOURCES_GUILD/guild-object-premium-tier) (Server Boost level) | +| premium_subscription_count? | integer | the number of boosts this guild currently has | +| preferred_locale | string | the preferred locale of a Community guild; used in server discovery and notices from Discord; defaults to "en-US" | +| public_updates_channel_id | ?snowflake | the id of the channel where admins and moderators of Community guilds receive notices from Discord | +| max_video_channel_users? | integer | the maximum amount of users in a video channel | +| approximate_member_count? | integer | approximate number of members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | +| approximate_presence_count? | integer | approximate number of non-offline members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | +| welcome_screen? | [welcome screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object | the welcome screen of a Community guild, shown to new members, returned in an [Invite](#DOCS_RESOURCES_INVITE/invite-object)'s guild object | +| nsfw_level | integer | [guild NSFW level](#DOCS_RESOURCES_GUILD/guild-object-guild-nsfw-level) | +| stage_instances? \* | array of [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) objects | Stage instances in the guild | +| stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | +| guild_scheduled_events \* | array of [guild scheduled events](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | the scheduled events in the guild | ** \* These fields are only sent within the [GUILD_CREATE](#DOCS_TOPICS_GATEWAY/guild-create) event ** From e230f408d0777209d3163e9bd640e89aa3cea3a9 Mon Sep 17 00:00:00 2001 From: Hemu <1871299+hemu@users.noreply.github.com> Date: Tue, 23 Nov 2021 18:09:01 -0500 Subject: [PATCH 039/181] update change log for guild_scheduled_events field addition (#4149) update change log and very minor rewording --- docs/Change_Log.md | 4 ++ docs/resources/Guild.md | 106 ++++++++++++++++++++-------------------- 2 files changed, 57 insertions(+), 53 deletions(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index 28d3580be6..082d4b10cf 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -2,6 +2,10 @@ ## Guild Scheduled Events +#### Nov 23, 2021 + +- Add official support for `guild_scheduled_events` field on `Guild` resource sent with `GUILD_CREATE` event + #### Nov 18, 2021 - Breaking change for return type for `GET /guilds/{guild.id}/scheduled-events/{guild_scheduled_event.id}/users` diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index daadd3c74f..b1d9f6d9a8 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -6,59 +6,59 @@ Guilds in Discord represent an isolated collection of users and channels, and ar ###### Guild Structure -| Field | Type | Description | -| ----------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | -| id | snowflake | guild id | -| name | string | guild name (2-100 characters, excluding trailing and leading whitespace) | -| icon | ?string | [icon hash](#DOCS_REFERENCE/image-formatting) | -| icon_hash? | ?string | [icon hash](#DOCS_REFERENCE/image-formatting), returned when in the template object | -| splash | ?string | [splash hash](#DOCS_REFERENCE/image-formatting) | -| discovery_splash | ?string | [discovery splash hash](#DOCS_REFERENCE/image-formatting); only present for guilds with the "DISCOVERABLE" feature | -| owner? \*\* | boolean | true if [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) is the owner of the guild | -| owner_id | snowflake | id of owner | -| permissions? \*\* | string | total permissions for [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) in the guild (excludes overwrites) | -| region? \*\*\* | ?string | [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id for the guild (deprecated) | -| afk_channel_id | ?snowflake | id of afk channel | -| afk_timeout | integer | afk timeout in seconds | -| widget_enabled? | boolean | true if the server widget is enabled | -| widget_channel_id? | ?snowflake | the channel id that the widget will generate an invite to, or `null` if set to no invite | -| verification_level | integer | [verification level](#DOCS_RESOURCES_GUILD/guild-object-verification-level) required for the guild | -| default_message_notifications | integer | default [message notifications level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) | -| explicit_content_filter | integer | [explicit content filter level](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) | -| roles | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | roles in the guild | -| emojis | array of [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) objects | custom guild emojis | -| features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | -| mfa_level | integer | required [MFA level](#DOCS_RESOURCES_GUILD/guild-object-mfa-level) for the guild | -| application_id | ?snowflake | application id of the guild creator if it is bot-created | -| system_channel_id | ?snowflake | the id of the channel where guild notices such as welcome messages and boost events are posted | -| system_channel_flags | integer | [system channel flags](#DOCS_RESOURCES_GUILD/guild-object-system-channel-flags) | -| rules_channel_id | ?snowflake | the id of the channel where Community guilds can display rules and/or guidelines | -| joined_at? \* | ISO8601 timestamp | when this guild was joined at | -| large? \* | boolean | true if this is considered a large guild | -| unavailable? \* | boolean | true if this guild is unavailable due to an outage | -| member_count? \* | integer | total number of members in this guild | -| voice_states? \* | array of partial [voice state](#DOCS_RESOURCES_VOICE/voice-state-object) objects | states of members currently in voice channels; lacks the `guild_id` key | -| members? \* | array of [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) objects | users in the guild | -| channels? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | channels in the guild | -| threads? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | all active threads in the guild that current user has permission to view | -| presences? \* | array of partial [presence update](#DOCS_TOPICS_GATEWAY/presence-update) objects | presences of the members in the guild, will only include non-offline members if the size is greater than `large threshold` | -| max_presences? | ?integer | the maximum number of presences for the guild (`null` is always returned, apart from the largest of guilds) | -| max_members? | integer | the maximum number of members for the guild | -| vanity_url_code | ?string | the vanity url code for the guild | -| description | ?string | the description of a Community guild | -| banner | ?string | [banner hash](#DOCS_REFERENCE/image-formatting) | -| premium_tier | integer | [premium tier](#DOCS_RESOURCES_GUILD/guild-object-premium-tier) (Server Boost level) | -| premium_subscription_count? | integer | the number of boosts this guild currently has | -| preferred_locale | string | the preferred locale of a Community guild; used in server discovery and notices from Discord; defaults to "en-US" | -| public_updates_channel_id | ?snowflake | the id of the channel where admins and moderators of Community guilds receive notices from Discord | -| max_video_channel_users? | integer | the maximum amount of users in a video channel | -| approximate_member_count? | integer | approximate number of members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | -| approximate_presence_count? | integer | approximate number of non-offline members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | -| welcome_screen? | [welcome screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object | the welcome screen of a Community guild, shown to new members, returned in an [Invite](#DOCS_RESOURCES_INVITE/invite-object)'s guild object | -| nsfw_level | integer | [guild NSFW level](#DOCS_RESOURCES_GUILD/guild-object-guild-nsfw-level) | -| stage_instances? \* | array of [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) objects | Stage instances in the guild | -| stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | -| guild_scheduled_events \* | array of [guild scheduled events](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | the scheduled events in the guild | +| Field | Type | Description | +| ----------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | +| id | snowflake | guild id | +| name | string | guild name (2-100 characters, excluding trailing and leading whitespace) | +| icon | ?string | [icon hash](#DOCS_REFERENCE/image-formatting) | +| icon_hash? | ?string | [icon hash](#DOCS_REFERENCE/image-formatting), returned when in the template object | +| splash | ?string | [splash hash](#DOCS_REFERENCE/image-formatting) | +| discovery_splash | ?string | [discovery splash hash](#DOCS_REFERENCE/image-formatting); only present for guilds with the "DISCOVERABLE" feature | +| owner? \*\* | boolean | true if [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) is the owner of the guild | +| owner_id | snowflake | id of owner | +| permissions? \*\* | string | total permissions for [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) in the guild (excludes overwrites) | +| region? \*\*\* | ?string | [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id for the guild (deprecated) | +| afk_channel_id | ?snowflake | id of afk channel | +| afk_timeout | integer | afk timeout in seconds | +| widget_enabled? | boolean | true if the server widget is enabled | +| widget_channel_id? | ?snowflake | the channel id that the widget will generate an invite to, or `null` if set to no invite | +| verification_level | integer | [verification level](#DOCS_RESOURCES_GUILD/guild-object-verification-level) required for the guild | +| default_message_notifications | integer | default [message notifications level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) | +| explicit_content_filter | integer | [explicit content filter level](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) | +| roles | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | roles in the guild | +| emojis | array of [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) objects | custom guild emojis | +| features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | +| mfa_level | integer | required [MFA level](#DOCS_RESOURCES_GUILD/guild-object-mfa-level) for the guild | +| application_id | ?snowflake | application id of the guild creator if it is bot-created | +| system_channel_id | ?snowflake | the id of the channel where guild notices such as welcome messages and boost events are posted | +| system_channel_flags | integer | [system channel flags](#DOCS_RESOURCES_GUILD/guild-object-system-channel-flags) | +| rules_channel_id | ?snowflake | the id of the channel where Community guilds can display rules and/or guidelines | +| joined_at? \* | ISO8601 timestamp | when this guild was joined at | +| large? \* | boolean | true if this is considered a large guild | +| unavailable? \* | boolean | true if this guild is unavailable due to an outage | +| member_count? \* | integer | total number of members in this guild | +| voice_states? \* | array of partial [voice state](#DOCS_RESOURCES_VOICE/voice-state-object) objects | states of members currently in voice channels; lacks the `guild_id` key | +| members? \* | array of [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) objects | users in the guild | +| channels? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | channels in the guild | +| threads? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | all active threads in the guild that current user has permission to view | +| presences? \* | array of partial [presence update](#DOCS_TOPICS_GATEWAY/presence-update) objects | presences of the members in the guild, will only include non-offline members if the size is greater than `large threshold` | +| max_presences? | ?integer | the maximum number of presences for the guild (`null` is always returned, apart from the largest of guilds) | +| max_members? | integer | the maximum number of members for the guild | +| vanity_url_code | ?string | the vanity url code for the guild | +| description | ?string | the description of a Community guild | +| banner | ?string | [banner hash](#DOCS_REFERENCE/image-formatting) | +| premium_tier | integer | [premium tier](#DOCS_RESOURCES_GUILD/guild-object-premium-tier) (Server Boost level) | +| premium_subscription_count? | integer | the number of boosts this guild currently has | +| preferred_locale | string | the preferred locale of a Community guild; used in server discovery and notices from Discord; defaults to "en-US" | +| public_updates_channel_id | ?snowflake | the id of the channel where admins and moderators of Community guilds receive notices from Discord | +| max_video_channel_users? | integer | the maximum amount of users in a video channel | +| approximate_member_count? | integer | approximate number of members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | +| approximate_presence_count? | integer | approximate number of non-offline members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | +| welcome_screen? | [welcome screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object | the welcome screen of a Community guild, shown to new members, returned in an [Invite](#DOCS_RESOURCES_INVITE/invite-object)'s guild object | +| nsfw_level | integer | [guild NSFW level](#DOCS_RESOURCES_GUILD/guild-object-guild-nsfw-level) | +| stage_instances? \* | array of [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) objects | Stage instances in the guild | +| stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | +| guild_scheduled_events \* | array of [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) objects | the scheduled events in the guild | ** \* These fields are only sent within the [GUILD_CREATE](#DOCS_TOPICS_GATEWAY/guild-create) event ** From 3a8c280f16e6eef44bf623836184e7dff16e8a91 Mon Sep 17 00:00:00 2001 From: Advaith Date: Sun, 28 Nov 2021 19:39:31 -0800 Subject: [PATCH 040/181] Fix position of Remora.Discord in library list (#4181) --- docs/topics/Community_Resources.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Community_Resources.md b/docs/topics/Community_Resources.md index c21798eb74..2e2325826c 100644 --- a/docs/topics/Community_Resources.md +++ b/docs/topics/Community_Resources.md @@ -17,9 +17,9 @@ Many of these libraries are represented in the [unofficial, community-driven Dis | Name | Language | | ------------------------------------------------------------ | ---------- | | [orca](https://github.com/cee-studio/orca) | C | -| [Remora.Discord](https://github.com/Nihlus/Remora.Discord) | C# | | [Discord.Net](https://github.com/RogueException/Discord.Net) | C# | | [DSharpPlus](https://github.com/DSharpPlus/DSharpPlus) | C# | +| [Remora.Discord](https://github.com/Nihlus/Remora.Discord) | C# | | [aegis.cpp](https://github.com/zeroxs/aegis.cpp) | C++ | | [D++](https://github.com/brainboxdotcc/DPP) | C++ | | [Discord++](https://github.com/DiscordPP/discordpp) | C++ | From 0b3fe86ad68cfc1c597dfc1c11b14b210d942320 Mon Sep 17 00:00:00 2001 From: ITOH Date: Tue, 30 Nov 2021 18:36:49 +0000 Subject: [PATCH 041/181] Clarify avatar_url and username behaviour for interaction followups (#4119) * clarify avatar_url and username behaviour for interaction followups * Update docs/interactions/Receiving_and_Responding.md Co-authored-by: spiral * Update Receiving_and_Responding.md Co-authored-by: spiral Co-authored-by: Ian Webster --- docs/interactions/Receiving_and_Responding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 60b094327a..37f1b8e07b 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -343,7 +343,7 @@ Deletes the initial Interaction response. Returns `204` on success. ## Create Followup Message % POST /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object} -Create a followup message for an Interaction. Functions the same as [Execute Webhook](#DOCS_RESOURCES_WEBHOOK/execute-webhook), but `wait` is always true, and `flags` can be set to `64` in the body to send an ephemeral message. The `thread_id` query parameter is not required (and is furthermore ignored) when using this endpoint for interaction followups. +Create a followup message for an Interaction. Functions the same as [Execute Webhook](#DOCS_RESOURCES_WEBHOOK/execute-webhook), but `wait` is always true, and `flags` can be set to `64` in the body to send an ephemeral message. The `thread_id`, `avatar_url`, and `username` parameters are not supported when using this endpoint for interaction followups. ## Get Followup Message % GET /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} From f38a8c9da60892400d8fad076b20b4aaff065b07 Mon Sep 17 00:00:00 2001 From: Khionu Sybiern Date: Tue, 30 Nov 2021 10:50:21 -0800 Subject: [PATCH 042/181] Clarify initial Heartbeat delay (#4014) * Clarify initial Heartbeat delay Currently, it has to be inferred that `random.random()` means [this Python API](https://docs.python.org/3/library/random.html#random.random). I'm open to input on how to improve this change, but having to infer language to go look up API docs to know the range of the multiplier is a lot for such a small detail. * Update Gateway.md Co-authored-by: Ian Webster --- docs/topics/Gateway.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 73c948f2a2..f931f554ff 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -133,7 +133,7 @@ Once connected, the client should immediately receive an [Opcode 10 Hello](#DOCS ### Heartbeating -After receiving [Opcode 10 Hello](#DOCS_TOPICS_GATEWAY/hello), the client may begin sending [Opcode 1 Heartbeat](#DOCS_TOPICS_GATEWAY/heartbeat) payloads after `heartbeat_interval * random.random()` milliseconds, and every `heartbeat_interval` milliseconds thereafter. You may send heartbeats before this interval elapses, but you should avoid doing so unless necessary. There is already tolerance in the `heartbeat_interval` that will cover network latency, so you do not need to account for it in your own implementation - waiting the precise interval will suffice. +After receiving [Opcode 10 Hello](#DOCS_TOPICS_GATEWAY/hello), the client may begin sending [Opcode 1 Heartbeat](#DOCS_TOPICS_GATEWAY/heartbeat) payloads after `heartbeat_interval * jitter` milliseconds (where jitter is between 0 and 1), and every `heartbeat_interval` milliseconds thereafter. You may send heartbeats before this interval elapses, but you should avoid doing so unless necessary. There is already tolerance in the `heartbeat_interval` that will cover network latency, so you do not need to account for it in your own implementation - waiting the precise interval will suffice. The gateway may request a heartbeat from the client in some situations by sending an [Opcode 1 Heartbeat](#DOCS_TOPICS_GATEWAY/heartbeat). When this occurs, the client should immediately send an [Opcode 1 Heartbeat](#DOCS_TOPICS_GATEWAY/heartbeat) without waiting the remainder of the current interval. From 54e92a5432ea24ba5e09854fc73479fff54d2a3d Mon Sep 17 00:00:00 2001 From: Izhar Ahmad <54180221+nerdguyahmad@users.noreply.github.com> Date: Tue, 30 Nov 2021 23:51:09 +0500 Subject: [PATCH 043/181] Document server boost progress bar (#4001) --- docs/resources/Guild.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index b1d9f6d9a8..87e3a6a8ad 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -59,6 +59,7 @@ Guilds in Discord represent an isolated collection of users and channels, and ar | stage_instances? \* | array of [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) objects | Stage instances in the guild | | stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | | guild_scheduled_events \* | array of [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) objects | the scheduled events in the guild | +| premium_progress_bar_enabled | boolean | whether the guild has the boost progress bar enabled | ** \* These fields are only sent within the [GUILD_CREATE](#DOCS_TOPICS_GATEWAY/guild-create) event ** @@ -637,6 +638,7 @@ Modify a guild's settings. Requires the `MANAGE_GUILD` permission. Returns the u | preferred_locale | ?string | the preferred locale of a Community guild used in server discovery and notices from Discord; defaults to "en-US" | | features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | | description | ?string | the description for the guild, if the guild is discoverable | +| premium_progress_bar_enabled | boolean | whether the guild's boost progress bar should be enabled. | ## Delete Guild % DELETE /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object} From b69389d0068f10ee5d1b66ab200bef372d41f1a7 Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Tue, 30 Nov 2021 19:16:50 -0500 Subject: [PATCH 044/181] jitter is a random value --- docs/topics/Gateway.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index f931f554ff..1ccad08048 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -133,7 +133,7 @@ Once connected, the client should immediately receive an [Opcode 10 Hello](#DOCS ### Heartbeating -After receiving [Opcode 10 Hello](#DOCS_TOPICS_GATEWAY/hello), the client may begin sending [Opcode 1 Heartbeat](#DOCS_TOPICS_GATEWAY/heartbeat) payloads after `heartbeat_interval * jitter` milliseconds (where jitter is between 0 and 1), and every `heartbeat_interval` milliseconds thereafter. You may send heartbeats before this interval elapses, but you should avoid doing so unless necessary. There is already tolerance in the `heartbeat_interval` that will cover network latency, so you do not need to account for it in your own implementation - waiting the precise interval will suffice. +After receiving [Opcode 10 Hello](#DOCS_TOPICS_GATEWAY/hello), the client may begin sending [Opcode 1 Heartbeat](#DOCS_TOPICS_GATEWAY/heartbeat) payloads after `heartbeat_interval * jitter` milliseconds (where jitter is a random value between 0 and 1), and every `heartbeat_interval` milliseconds thereafter. You may send heartbeats before this interval elapses, but you should avoid doing so unless necessary. There is already tolerance in the `heartbeat_interval` that will cover network latency, so you do not need to account for it in your own implementation - waiting the precise interval will suffice. The gateway may request a heartbeat from the client in some situations by sending an [Opcode 1 Heartbeat](#DOCS_TOPICS_GATEWAY/heartbeat). When this occurs, the client should immediately send an [Opcode 1 Heartbeat](#DOCS_TOPICS_GATEWAY/heartbeat) without waiting the remainder of the current interval. @@ -308,7 +308,7 @@ GUILD_SCHEDULED_EVENTS (1 << 16) - GUILD_SCHEDULED_EVENT_UPDATE - GUILD_SCHEDULED_EVENT_DELETE - GUILD_SCHEDULED_EVENT_USER_ADD ** - - GUILD_SCHEDULED_EVENT_USER_REMOVE ** + - GUILD_SCHEDULED_EVENT_USER_REMOVE ** ``` \* [Thread Members Update](#DOCS_TOPICS_GATEWAY/thread-members-update) contains different data depending on which intents are used. From 631a94b2b22aa95a841befd45b947f44eba254e4 Mon Sep 17 00:00:00 2001 From: Shubham Parihar Date: Wed, 1 Dec 2021 08:27:16 +0530 Subject: [PATCH 045/181] fix(Guild): mark guild_scheduled_events field as optional (#4150) mark guild_scheduled_events field as optional for Guild --- docs/resources/Guild.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index 87e3a6a8ad..5832572a7e 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -58,8 +58,8 @@ Guilds in Discord represent an isolated collection of users and channels, and ar | nsfw_level | integer | [guild NSFW level](#DOCS_RESOURCES_GUILD/guild-object-guild-nsfw-level) | | stage_instances? \* | array of [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) objects | Stage instances in the guild | | stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | -| guild_scheduled_events \* | array of [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) objects | the scheduled events in the guild | -| premium_progress_bar_enabled | boolean | whether the guild has the boost progress bar enabled | +| guild_scheduled_events? \* | array of [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) objects | the scheduled events in the guild | +| premium_progress_bar_enabled | boolean | whether the guild has the boost progress bar enabled | ** \* These fields are only sent within the [GUILD_CREATE](#DOCS_TOPICS_GATEWAY/guild-create) event ** From a80c210df2fba79ab95458d82f68633db7aaead6 Mon Sep 17 00:00:00 2001 From: Zane Pereira Date: Wed, 1 Dec 2021 08:35:17 +0530 Subject: [PATCH 046/181] Document guild_scheduled_events field on audit log object (#4152) Add guild_scheduled_events field on audit log object --- docs/resources/Audit_Log.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/resources/Audit_Log.md b/docs/resources/Audit_Log.md index e70a84d8ab..03ac34aac9 100644 --- a/docs/resources/Audit_Log.md +++ b/docs/resources/Audit_Log.md @@ -8,13 +8,14 @@ Whenever an admin action is performed on the API, an entry is added to the respe ###### Audit Log Structure -| Field | Type | Description | -| ----------------- | ------------------------------------------------------------------------------------ | ---------------------------------------- | -| audit_log_entries | array of [audit log entry](#DOCS_RESOURCES_AUDIT_LOG/audit-log-entry-object) objects | list of audit log entries | -| integrations | array of partial [integration](#DOCS_RESOURCES_GUILD/integration-object) objects | list of partial integration objects | -| threads | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | list of threads found in the audit log\* | -| users | array of [user](#DOCS_RESOURCES_USER/user-object) objects | list of users found in the audit log | -| webhooks | array of [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) objects | list of webhooks found in the audit log | +| Field | Type | Description | +| ---------------------- | ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------- | +| audit_log_entries | array of [audit log entry](#DOCS_RESOURCES_AUDIT_LOG/audit-log-entry-object) objects | list of audit log entries | +| guild_scheduled_events | array of [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) objects | list of guild scheduled events found in the audit log | +| integrations | array of partial [integration](#DOCS_RESOURCES_GUILD/integration-object) objects | list of partial integration objects | +| threads | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | list of threads found in the audit log\* | +| users | array of [user](#DOCS_RESOURCES_USER/user-object) objects | list of users found in the audit log | +| webhooks | array of [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) objects | list of webhooks found in the audit log | \* Threads referenced in THREAD_CREATE and THREAD_UPDATE events are included in the threads map, since archived threads might not be kept in memory by clients. From 05c790c1f6c44682365810935610a8e358f32a86 Mon Sep 17 00:00:00 2001 From: Mason Sciotti Date: Wed, 1 Dec 2021 19:34:01 -0500 Subject: [PATCH 047/181] Deprecate game store SKU sales (#4190) --- .../How_to_Get_Your_Game_on_Discord.md | 4 ++-- docs/game_sdk/Achievements.md | 4 ++-- docs/game_sdk/Activities.md | 4 ++-- docs/game_sdk/Applications.md | 4 ++-- docs/game_sdk/Discord.md | 4 ++-- docs/game_sdk/Discord_Voice.md | 4 ++-- docs/game_sdk/Images.md | 4 ++-- docs/game_sdk/Lobbies.md | 4 ++-- docs/game_sdk/Networking.md | 4 ++-- docs/game_sdk/Overlay.md | 4 ++-- docs/game_sdk/Relationships.md | 4 ++-- docs/game_sdk/SDK_Starter_Guide.md | 4 ++-- docs/game_sdk/Storage.md | 4 ++-- docs/game_sdk/Store.md | 4 ++-- docs/game_sdk/Users.md | 4 ++-- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/game_and_server_management/How_to_Get_Your_Game_on_Discord.md b/docs/game_and_server_management/How_to_Get_Your_Game_on_Discord.md index 9dcdd2035f..54cbe4ea7c 100644 --- a/docs/game_and_server_management/How_to_Get_Your_Game_on_Discord.md +++ b/docs/game_and_server_management/How_to_Get_Your_Game_on_Discord.md @@ -1,7 +1,7 @@ # How to Get Your Game on Discord -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) Welcome, adventurer! If you're here, you want to find out how to get your game up and running on Discord and learn about our awesome Server Commerce features. You've come to the right place, so let's get started. diff --git a/docs/game_sdk/Achievements.md b/docs/game_sdk/Achievements.md index 41c38dd31d..223eeb56b8 100644 --- a/docs/game_sdk/Achievements.md +++ b/docs/game_sdk/Achievements.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) There's no feeling quite like accomplishing a goal that you've set out to achieve. Is killing 1000 zombies in a game as great an achievement as climbing Mt. Everest? Of course it is, and I didn't even have to leave my house. So get off my back, society. diff --git a/docs/game_sdk/Activities.md b/docs/game_sdk/Activities.md index b8b6b8efc3..d145cbfadd 100644 --- a/docs/game_sdk/Activities.md +++ b/docs/game_sdk/Activities.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) Looking to integrate Rich Presence into your game? No need to manage multiple SDKs—this one does all that awesome stuff, too!. Delight your players with the ability to post game invites in chat and party up directly from Discord. Surface interesting live game data in their profile and on the Games Tab for their friends, encouraging them to group up and play together. diff --git a/docs/game_sdk/Applications.md b/docs/game_sdk/Applications.md index 33a87e8ba3..70092fba99 100644 --- a/docs/game_sdk/Applications.md +++ b/docs/game_sdk/Applications.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) Many games run their own backend servers for things like user authentication. If one of those many games is yours, then we've got something for you! This manager gives you access to a bearer token for the currently connected Discord user, which you can send off to your server to do user authentication. diff --git a/docs/game_sdk/Discord.md b/docs/game_sdk/Discord.md index e8d0be3794..e00f7185b2 100644 --- a/docs/game_sdk/Discord.md +++ b/docs/game_sdk/Discord.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) Making a game? Need a whole bunch of fancy APIs to help make it great and your players' lives a breeze? Look no further! The Discord GameSDK is an easy drop-in SDK to help you manage all the hard things that come with making a game. Well, all the hards things about coding it at least. Interpersonal communication skills are on you (have you heard of this cool chat app called Discord?). diff --git a/docs/game_sdk/Discord_Voice.md b/docs/game_sdk/Discord_Voice.md index 5153be883a..93006bc47d 100644 --- a/docs/game_sdk/Discord_Voice.md +++ b/docs/game_sdk/Discord_Voice.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) Discord's pride and joy is its voice chat. Well, ok, also its memes, but mostly the voice chat. Text and video chat are pretty great, too. And have you seen that store? Anyway. diff --git a/docs/game_sdk/Images.md b/docs/game_sdk/Images.md index 77a3d8dca8..802ea5b4c7 100644 --- a/docs/game_sdk/Images.md +++ b/docs/game_sdk/Images.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) Discord is like a book; it's better with pictures. The image manager helps you fetch image data for images in Discord, including user's avatars. They worked hard to pick out those photos and gifs. Show them you care, too. diff --git a/docs/game_sdk/Lobbies.md b/docs/game_sdk/Lobbies.md index b7abca6b0d..3f2c6ec055 100644 --- a/docs/game_sdk/Lobbies.md +++ b/docs/game_sdk/Lobbies.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) Looking to integrate multiplayer into your game? Lobbies are a great way to organize players into contexts to play together. This manager works hand in hand with the networking layer of our SDK to make multiplayer integrations a breeze by: diff --git a/docs/game_sdk/Networking.md b/docs/game_sdk/Networking.md index b4d27607ac..e57228ff65 100644 --- a/docs/game_sdk/Networking.md +++ b/docs/game_sdk/Networking.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) A note before starting: this documentation covers the "low layer" networking level of the Discord GameSDK. What that means is that using the network manager directly affords you the flexibility to update routes, open channels, and handle events directly emitted by the SDK. If you're looking for something a bit easier and faster to integrate, we recommend that you check out the networking wrapper around our lobby documentation: [Integrated Networking](#DOCS_GAME_SDK_LOBBIES/integrated-networking) diff --git a/docs/game_sdk/Overlay.md b/docs/game_sdk/Overlay.md index d08d72eb07..b88b2af9c8 100644 --- a/docs/game_sdk/Overlay.md +++ b/docs/game_sdk/Overlay.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) > warn > The overlay is only supported on Windows for DirectX or OpenGL games. Linux, Mac, and games using Vulkan are not supported. [Click here for more info.](https://support.discord.com/hc/en-us/articles/217659737-Games-Overlay-101) diff --git a/docs/game_sdk/Relationships.md b/docs/game_sdk/Relationships.md index 0b21644b22..94646360b9 100644 --- a/docs/game_sdk/Relationships.md +++ b/docs/game_sdk/Relationships.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) This manager helps you access the relationships your players have made on Discord. Unfortunately, it won't help them make relationships IRL. They're on their own for that. It lets you: diff --git a/docs/game_sdk/SDK_Starter_Guide.md b/docs/game_sdk/SDK_Starter_Guide.md index af6227a6a5..518c94b89a 100644 --- a/docs/game_sdk/SDK_Starter_Guide.md +++ b/docs/game_sdk/SDK_Starter_Guide.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) Welcome to the Discord GameSDK! We're glad you made it. This SDK is here to solve all your problems, if your problems include finding an awesome SDK to help develop your game. Our SDK is like Clippy, if Clippy were built on a modern tech stack, talked less, and was an awesome game development SDK. diff --git a/docs/game_sdk/Storage.md b/docs/game_sdk/Storage.md index a383d0a252..0af0473333 100644 --- a/docs/game_sdk/Storage.md +++ b/docs/game_sdk/Storage.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) We've been told that people playing games want to save their progress as they go, allowing them to come back where they left off and continue their epic journey of power. diff --git a/docs/game_sdk/Store.md b/docs/game_sdk/Store.md index cf77a4c1db..02f0aad136 100644 --- a/docs/game_sdk/Store.md +++ b/docs/game_sdk/Store.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) If your game has DLC or offers in-app purchases, this manager is for you! The Store Manager allows you to fetch a users' entitlements, as well as being notified when a user is granted an entitlement from a purchase flow for your game. diff --git a/docs/game_sdk/Users.md b/docs/game_sdk/Users.md index c412073c5b..2d063ab99c 100644 --- a/docs/game_sdk/Users.md +++ b/docs/game_sdk/Users.md @@ -3,8 +3,8 @@ > info > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -> warn -> Game approval submissions are currently paused due to unforeseen circumstances. We apologize for the inconvenience. [Click here for more info.](https://support-dev.discord.com/hc/en-us/articles/360041437171) +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) This manager helps retrieve basic user information for any user on Discord. From 267734ab63eb311c9ae6608062cd5001ec82ed71 Mon Sep 17 00:00:00 2001 From: Mason Sciotti Date: Mon, 6 Dec 2021 10:59:34 -0500 Subject: [PATCH 048/181] Fix wrong game store help center link (#4209) --- .../How_to_Get_Your_Game_on_Discord.md | 2 +- docs/game_sdk/Achievements.md | 2 +- docs/game_sdk/Activities.md | 2 +- docs/game_sdk/Applications.md | 2 +- docs/game_sdk/Discord.md | 2 +- docs/game_sdk/Discord_Voice.md | 2 +- docs/game_sdk/Images.md | 2 +- docs/game_sdk/Lobbies.md | 2 +- docs/game_sdk/Networking.md | 2 +- docs/game_sdk/Overlay.md | 2 +- docs/game_sdk/Relationships.md | 2 +- docs/game_sdk/SDK_Starter_Guide.md | 2 +- docs/game_sdk/Storage.md | 2 +- docs/game_sdk/Store.md | 2 +- docs/game_sdk/Users.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/game_and_server_management/How_to_Get_Your_Game_on_Discord.md b/docs/game_and_server_management/How_to_Get_Your_Game_on_Discord.md index 54cbe4ea7c..3aaa81e00e 100644 --- a/docs/game_and_server_management/How_to_Get_Your_Game_on_Discord.md +++ b/docs/game_and_server_management/How_to_Get_Your_Game_on_Discord.md @@ -1,7 +1,7 @@ # How to Get Your Game on Discord > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Welcome, adventurer! If you're here, you want to find out how to get your game up and running on Discord and learn about our awesome Server Commerce features. You've come to the right place, so let's get started. diff --git a/docs/game_sdk/Achievements.md b/docs/game_sdk/Achievements.md index 223eeb56b8..573442d52f 100644 --- a/docs/game_sdk/Achievements.md +++ b/docs/game_sdk/Achievements.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) There's no feeling quite like accomplishing a goal that you've set out to achieve. Is killing 1000 zombies in a game as great an achievement as climbing Mt. Everest? Of course it is, and I didn't even have to leave my house. So get off my back, society. diff --git a/docs/game_sdk/Activities.md b/docs/game_sdk/Activities.md index d145cbfadd..c11f00e376 100644 --- a/docs/game_sdk/Activities.md +++ b/docs/game_sdk/Activities.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Looking to integrate Rich Presence into your game? No need to manage multiple SDKs—this one does all that awesome stuff, too!. Delight your players with the ability to post game invites in chat and party up directly from Discord. Surface interesting live game data in their profile and on the Games Tab for their friends, encouraging them to group up and play together. diff --git a/docs/game_sdk/Applications.md b/docs/game_sdk/Applications.md index 70092fba99..45b5e40b03 100644 --- a/docs/game_sdk/Applications.md +++ b/docs/game_sdk/Applications.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Many games run their own backend servers for things like user authentication. If one of those many games is yours, then we've got something for you! This manager gives you access to a bearer token for the currently connected Discord user, which you can send off to your server to do user authentication. diff --git a/docs/game_sdk/Discord.md b/docs/game_sdk/Discord.md index e00f7185b2..2c53e97a2e 100644 --- a/docs/game_sdk/Discord.md +++ b/docs/game_sdk/Discord.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Making a game? Need a whole bunch of fancy APIs to help make it great and your players' lives a breeze? Look no further! The Discord GameSDK is an easy drop-in SDK to help you manage all the hard things that come with making a game. Well, all the hards things about coding it at least. Interpersonal communication skills are on you (have you heard of this cool chat app called Discord?). diff --git a/docs/game_sdk/Discord_Voice.md b/docs/game_sdk/Discord_Voice.md index 93006bc47d..4d93e04f5d 100644 --- a/docs/game_sdk/Discord_Voice.md +++ b/docs/game_sdk/Discord_Voice.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Discord's pride and joy is its voice chat. Well, ok, also its memes, but mostly the voice chat. Text and video chat are pretty great, too. And have you seen that store? Anyway. diff --git a/docs/game_sdk/Images.md b/docs/game_sdk/Images.md index 802ea5b4c7..984c65a0e3 100644 --- a/docs/game_sdk/Images.md +++ b/docs/game_sdk/Images.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Discord is like a book; it's better with pictures. The image manager helps you fetch image data for images in Discord, including user's avatars. They worked hard to pick out those photos and gifs. Show them you care, too. diff --git a/docs/game_sdk/Lobbies.md b/docs/game_sdk/Lobbies.md index 3f2c6ec055..aed4c5a80b 100644 --- a/docs/game_sdk/Lobbies.md +++ b/docs/game_sdk/Lobbies.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Looking to integrate multiplayer into your game? Lobbies are a great way to organize players into contexts to play together. This manager works hand in hand with the networking layer of our SDK to make multiplayer integrations a breeze by: diff --git a/docs/game_sdk/Networking.md b/docs/game_sdk/Networking.md index e57228ff65..a3595c26fd 100644 --- a/docs/game_sdk/Networking.md +++ b/docs/game_sdk/Networking.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) A note before starting: this documentation covers the "low layer" networking level of the Discord GameSDK. What that means is that using the network manager directly affords you the flexibility to update routes, open channels, and handle events directly emitted by the SDK. If you're looking for something a bit easier and faster to integrate, we recommend that you check out the networking wrapper around our lobby documentation: [Integrated Networking](#DOCS_GAME_SDK_LOBBIES/integrated-networking) diff --git a/docs/game_sdk/Overlay.md b/docs/game_sdk/Overlay.md index b88b2af9c8..f7ad8175a0 100644 --- a/docs/game_sdk/Overlay.md +++ b/docs/game_sdk/Overlay.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) > warn > The overlay is only supported on Windows for DirectX or OpenGL games. Linux, Mac, and games using Vulkan are not supported. [Click here for more info.](https://support.discord.com/hc/en-us/articles/217659737-Games-Overlay-101) diff --git a/docs/game_sdk/Relationships.md b/docs/game_sdk/Relationships.md index 94646360b9..f64bd3f718 100644 --- a/docs/game_sdk/Relationships.md +++ b/docs/game_sdk/Relationships.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) This manager helps you access the relationships your players have made on Discord. Unfortunately, it won't help them make relationships IRL. They're on their own for that. It lets you: diff --git a/docs/game_sdk/SDK_Starter_Guide.md b/docs/game_sdk/SDK_Starter_Guide.md index 518c94b89a..c2278774f4 100644 --- a/docs/game_sdk/SDK_Starter_Guide.md +++ b/docs/game_sdk/SDK_Starter_Guide.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Welcome to the Discord GameSDK! We're glad you made it. This SDK is here to solve all your problems, if your problems include finding an awesome SDK to help develop your game. Our SDK is like Clippy, if Clippy were built on a modern tech stack, talked less, and was an awesome game development SDK. diff --git a/docs/game_sdk/Storage.md b/docs/game_sdk/Storage.md index 0af0473333..71ac3377f1 100644 --- a/docs/game_sdk/Storage.md +++ b/docs/game_sdk/Storage.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) We've been told that people playing games want to save their progress as they go, allowing them to come back where they left off and continue their epic journey of power. diff --git a/docs/game_sdk/Store.md b/docs/game_sdk/Store.md index 02f0aad136..0b19e4611a 100644 --- a/docs/game_sdk/Store.md +++ b/docs/game_sdk/Store.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) If your game has DLC or offers in-app purchases, this manager is for you! The Store Manager allows you to fetch a users' entitlements, as well as being notified when a user is granted an entitlement from a purchase flow for your game. diff --git a/docs/game_sdk/Users.md b/docs/game_sdk/Users.md index 2d063ab99c..8a914266e1 100644 --- a/docs/game_sdk/Users.md +++ b/docs/game_sdk/Users.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support.discord.com/hc/en-us/articles/4414409793687) +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) This manager helps retrieve basic user information for any user on Discord. From 7e59173d986b1dae212cde148d278d6d84827f87 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Mon, 6 Dec 2021 21:41:36 +0000 Subject: [PATCH 049/181] Adds error 50055 (#4212) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 608f1b9a08..83931c47d4 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -219,6 +219,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 50045 | File uploaded exceeds the maximum size | | 50046 | Invalid file uploaded | | 50054 | Cannot self-redeem this gift | +| 50055 | Invalid Guild | | 50070 | Payment source required to redeem gift | | 50074 | Cannot delete a channel required for Community guilds | | 50081 | Invalid sticker sent | From 1e7863547a42a62f33218558cad85ffb244248a3 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Tue, 7 Dec 2021 17:11:31 +0000 Subject: [PATCH 050/181] Adds error 20029 (#4214) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 83931c47d4..a5dc6845ee 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -154,6 +154,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 20018 | Only the owner of this account can perform this action | | 20022 | This message cannot be edited due to announcement rate limits | | 20028 | The channel you are writing has hit the write rate limit | +| 20029 | The write action you are performing on the server has hit the write rate limit | | 20031 | Your Stage topic, server name, server description, or channel names contain words that are not allowed | | 20035 | Guild premium subscription level too low | | 30001 | Maximum number of guilds reached (100) | From b9663021282673f07d08728147a7bdc6cc45a82a Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Tue, 7 Dec 2021 14:00:32 -0500 Subject: [PATCH 051/181] Invite channel is nullable --- docs/resources/Invite.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Invite.md b/docs/resources/Invite.md index 67dd9b2923..afbd12db65 100644 --- a/docs/resources/Invite.md +++ b/docs/resources/Invite.md @@ -10,7 +10,7 @@ Represents a code that when used, adds a user to a guild or group DM channel. | --------------------------- | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | code | string | the invite code (unique ID) | | guild? | partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object | the guild this invite is for | -| channel | partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the channel this invite is for | +| channel | ?partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the channel this invite is for | | inviter? | [user](#DOCS_RESOURCES_USER/user-object) object | the user who created the invite | | target_type? | integer | the [type of target](#DOCS_RESOURCES_INVITE/invite-object-invite-target-types) for this voice channel invite | | target_user? | [user](#DOCS_RESOURCES_USER/user-object) object | the user whose stream to display for this voice channel stream invite | From 51227cb2d5e07818ebe0ddd39fda591f8d873104 Mon Sep 17 00:00:00 2001 From: Advaith Date: Tue, 7 Dec 2021 11:10:10 -0800 Subject: [PATCH 052/181] Document OAuth2 guilds.members.read (#4204) --- docs/resources/User.md | 4 ++++ docs/topics/OAuth2.md | 1 + 2 files changed, 5 insertions(+) diff --git a/docs/resources/User.md b/docs/resources/User.md index a42f9708cc..1ea1720680 100644 --- a/docs/resources/User.md +++ b/docs/resources/User.md @@ -165,6 +165,10 @@ Returns a list of partial [guild](#DOCS_RESOURCES_GUILD/guild-object) objects th | after | snowflake | get guilds after this guild ID | false | absent | | limit | integer | max number of guilds to return (1-200) | false | 200 | +## Get Current User Guild Member % GET /users/@me/guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/member + +Returns a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object for the current user. Requires the `guilds.members.read` OAuth2 scope. + ## Leave Guild % DELETE /users/@me/guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object} Leave a guild. Returns a 204 empty response on success. diff --git a/docs/topics/OAuth2.md b/docs/topics/OAuth2.md index 0be99dbaad..627ece3433 100644 --- a/docs/topics/OAuth2.md +++ b/docs/topics/OAuth2.md @@ -37,6 +37,7 @@ These are a list of all the OAuth2 scopes that Discord supports. Some scopes req | gdm.join | allows your app to [join users to a group dm](#DOCS_RESOURCES_CHANNEL/group-dm-add-recipient) | | guilds | allows [/users/@me/guilds](#DOCS_RESOURCES_USER/get-current-user-guilds) to return basic information about all of a user's guilds | | guilds.join | allows [/guilds/{guild.id}/members/{user.id}](#DOCS_RESOURCES_GUILD/add-guild-member) to be used for joining users to a guild | +| guilds.members.read | allows [/users/@me/guilds/{guild.id}/member](#DOCS_RESOURCES_USER/get-current-user-guild-member) to return a user's member information in a guild | | identify | allows [/users/@me](#DOCS_RESOURCES_USER/get-current-user) without `email` | | messages.read | for local rpc server api access, this allows you to read messages from all client channels (otherwise restricted to channels/guilds your app creates) | | relationships.read | allows your app to know a user's friends and implicit relationships - requires Discord approval | From 409c5c7dcd0556bf82d317307715c03aaa5e6cdb Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Tue, 7 Dec 2021 19:15:18 +0000 Subject: [PATCH 053/181] Update Guild Preview (#4191) * Update Guild Preview Public stages no longer make guilds "previewable" * Update docs/resources/Guild.md Co-authored-by: Vitor Co-authored-by: Vitor --- docs/resources/Guild.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index 5832572a7e..ef5c9077c0 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -603,7 +603,7 @@ Returns the [guild](#DOCS_RESOURCES_GUILD/guild-object) object for the given id. ## Get Guild Preview % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/preview -Returns the [guild preview](#DOCS_RESOURCES_GUILD/guild-preview-object) object for the given id. If the user is not in the guild, then the guild must be lurkable (it must be Discoverable or have a [live public stage](#DOCS_RESOURCES_STAGE_INSTANCE/definitions)). +Returns the [guild preview](#DOCS_RESOURCES_GUILD/guild-preview-object) object for the given id. If the user is not in the guild, then the guild must be lurkable. ## Modify Guild % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object} From c081c1f08f28ce8ab031aba1cfdc82e7213b3f00 Mon Sep 17 00:00:00 2001 From: Hemu <1871299+hemu@users.noreply.github.com> Date: Wed, 8 Dec 2021 12:42:19 -0500 Subject: [PATCH 054/181] Update scheduled events documentation (#4216) - Remove confusing gateway events statement - Document upcoming changes for event visibility for lurkers - Cleanup time sensitive warnings and caveats that are no longer necessary --- docs/resources/Guild_Scheduled_Event.md | 9 ++------- docs/topics/Gateway.md | 14 ++++---------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index e1dbec2a60..6bbdf33375 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -139,9 +139,6 @@ Get a guild scheduled event. Returns a [guild scheduled event](#DOCS_RESOURCES_G ###### Query String Params -> warn -> The `with_user_count` query param was introduced on Thursday Nov 18, 2021 after the initial publication of this documentation to remain consitent with other guild scheduled events endpoints - | Field | Type | Description | | ---------------- | ------- | ------------------------------------------------ | | with_user_count? | boolean | include number of users subscribed to this event | @@ -179,9 +176,6 @@ Delete a guild scheduled event. Returns a `204` on success. ## Get Guild Scheduled Event Users % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object}/users -> warn -> A breaking change was introduced for this endpoint on Thursday Nov 18, 2021 after the initial publication of this documentation in which the return type was changed in response to developer feedback. We apologize for the inconvenience and additional work this creates for developers. - Get a list of guild scheduled event users subscribed to a guild scheduled event. Returns a list of [guild scheduled event user](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-user-object) objects on success. Guild member data, if it exists, is included if the `with_member` query parameter is set. ###### Query String Params @@ -225,7 +219,8 @@ Any event with `'status': SCHEDULED` after a certain time interval (on the order NOTE: `entity_type` is expressed by name rather than value for readability > info -> A user must be a member of the guild in order to access events for that guild. +> A user must be a member of the guild in order to access events for that guild unless the guild is lurkable. If a guild is lurkable, +> events in that guild may be visible to lurkers depending on the event type and the permissions of any channels associated with the event. ### Permissions to create an event with entity_type: STAGE_INSTANCE diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 1ccad08048..3b8d1ceb23 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -513,9 +513,9 @@ Events are payloads sent over the socket to a client that correspond to events i | [Guild Role Create](#DOCS_TOPICS_GATEWAY/guild-role-create) | guild role was created | | [Guild Role Update](#DOCS_TOPICS_GATEWAY/guild-role-update) | guild role was updated | | [Guild Role Delete](#DOCS_TOPICS_GATEWAY/guild-role-delete) | guild role was deleted | -| [Guild Scheduled Event Create](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-create) | guild scheduled event was created | -| [Guild Scheduled Event Update](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-update) | guild scheduled event was updated | -| [Guild Scheduled Event Delete](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-delete) | guild scheduled event was deleted | +| [Guild Scheduled Event Create](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-create) | guild scheduled event was created | +| [Guild Scheduled Event Update](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-update) | guild scheduled event was updated | +| [Guild Scheduled Event Delete](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-delete) | guild scheduled event was deleted | | [Guild Scheduled Event User Add](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-user-add) | user subscribed to a guild scheduled event | | [Guild Scheduled Event User Remove](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-user-remove) | user unsubscribed from a guild scheduled event | | [Integration Create](#DOCS_TOPICS_GATEWAY/integration-create) | guild integration was created | @@ -1078,15 +1078,12 @@ Sent when a guild scheduled event is updated. The inner payload is a [guild sche ### Guild Scheduled Event Delete -Sent when a guild scheduled event is deleted. The inner payload is a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object. See [Guild Scheduled Event Status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) to determine how the event was deleted. +Sent when a guild scheduled event is deleted. The inner payload is a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object. ### Guild Scheduled Event User Add Sent when a user has subscribed to a guild scheduled event. -> info -> NOTE: this event is currently experimental and not officially supported - ###### Guild Scheduled Event User Add Event Fields | Field | Type | Description | @@ -1099,9 +1096,6 @@ Sent when a user has subscribed to a guild scheduled event. Sent when a user has unsubscribed from a guild scheduled event. -> info -> NOTE: this event is currently experimental and not officially supported - ###### Guild Scheduled Event User Remove Event Fields | Field | Type | Description | From ffd02778b71e39cf2479772fc222f018d3f547f7 Mon Sep 17 00:00:00 2001 From: Quin Lynch <49576606+quinchs@users.noreply.github.com> Date: Fri, 10 Dec 2021 00:48:21 -0400 Subject: [PATCH 055/181] Update Discord.Net's Github Url (#4221) --- docs/topics/Community_Resources.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Community_Resources.md b/docs/topics/Community_Resources.md index 2e2325826c..671c276423 100644 --- a/docs/topics/Community_Resources.md +++ b/docs/topics/Community_Resources.md @@ -17,7 +17,7 @@ Many of these libraries are represented in the [unofficial, community-driven Dis | Name | Language | | ------------------------------------------------------------ | ---------- | | [orca](https://github.com/cee-studio/orca) | C | -| [Discord.Net](https://github.com/RogueException/Discord.Net) | C# | +| [Discord.Net](https://github.com/discord-net/Discord.Net) | C# | | [DSharpPlus](https://github.com/DSharpPlus/DSharpPlus) | C# | | [Remora.Discord](https://github.com/Nihlus/Remora.Discord) | C# | | [aegis.cpp](https://github.com/zeroxs/aegis.cpp) | C++ | From 5b1fce29583d6f7abd6f165f542c23f59c94e43d Mon Sep 17 00:00:00 2001 From: Jake Date: Sun, 12 Dec 2021 01:34:39 -0800 Subject: [PATCH 056/181] package.json: allow node 14.17.x --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 66c8a0bdcf..1b062aef0a 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,6 @@ "typescript": "^4.4.3" }, "engines": { - "node": "^16.8.0" + "node": "^14.17.0" } } From 54779d826b772b1e429e6e842d27a93f7ee3094a Mon Sep 17 00:00:00 2001 From: Izhar Ahmad <54180221+nerdguyahmad@users.noreply.github.com> Date: Tue, 14 Dec 2021 23:41:43 +0500 Subject: [PATCH 057/181] Document guild_id field on thread member update. (#4228) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 👍 --- docs/topics/Gateway.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 3b8d1ceb23..b7567ebcf2 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -862,7 +862,14 @@ Sent when the current user _gains_ access to a channel. #### Thread Member Update -Sent when the [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object for the current user is updated. The inner payload is a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object. This event is documented for completeness, but unlikely to be used by most bots. For bots, this event largely is just a signal that you are a member of the thread. See the [threads docs](#DOCS_TOPICS_THREADS) for more details. +Sent when the [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object for the current user is updated. The inner payload is a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object with an extra `guild_id` field. This event is documented for completeness, but unlikely to be used by most bots. For bots, this event largely is just a signal that you are a member of the thread. See the [threads docs](#DOCS_TOPICS_THREADS) for more details. + +###### Thread Member Update Event Extra Fields + +| Field | Type | Description | +|-----------|--------------|--------------------------| +| guild_id | snowflake | the id of the guild | + #### Thread Members Update From afb4f1b93be3fc004162484509692e51a58eaeec Mon Sep 17 00:00:00 2001 From: 12932 <68835423+12932@users.noreply.github.com> Date: Wed, 15 Dec 2021 02:45:18 +0800 Subject: [PATCH 058/181] correct 8MB to 8MiB in Message Limitations (#4222) The https://discord.com/developers/docs/reference#uploading-files section says the maximum request size is 8MiB as in Mebibytes, 8 * 1024 * 1024. --- docs/resources/Channel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index daab9b0531..b1dfef3301 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -887,7 +887,7 @@ Files must be attached using a `multipart/form-data` body as described in [Uploa - When sending a message with `tts` (text-to-speech) set to `true`, the current user must have the `SEND_TTS_MESSAGES` permission. - When creating a message as a reply to another message, the current user must have the `READ_MESSAGE_HISTORY` permission. - The referenced message must exist and cannot be a system message. -- The maximum request size when sending a message is **8MB** +- The maximum request size when sending a message is **8MiB** - For the embed object, you can set every field except `type` (it will be `rich` regardless of if you try to set it), `provider`, `video`, and any `height`, `width`, or `proxy_url` values for images. > info From 494829f1448cf6e01e2e27f2d85dd6562f1c32ea Mon Sep 17 00:00:00 2001 From: Dooley_labs Date: Tue, 14 Dec 2021 13:45:57 -0500 Subject: [PATCH 059/181] Correction to Application Command Interaction Data Option Structure (#4233) --- docs/interactions/Application_Commands.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index 57bc7dc40b..5a8166c18e 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -88,10 +88,10 @@ All options have names, and an option can either be a parameter and input value- `value` and `options` are mutually exclusive. | Field | Type | Description | -| -------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| -------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---------------------------------------------------------------------------------------------------------------------------------------------- | | name | string | the name of the parameter | | type | integer | value of [application command option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) | -| value? | [application command option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) | the value of the pair | +| value? | string, integer, or double | the value of the option resulting from user input | | options? | array of [application command interaction data option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-interaction-data-option-structure) | present if this option is a group or subcommand | | focused? | boolean | true if this option is the currently focused option for autocomplete | From 6ace2e74ef750cd2c97b2e153ca26b04410c5734 Mon Sep 17 00:00:00 2001 From: EXPLOSION Date: Wed, 15 Dec 2021 03:48:11 +0900 Subject: [PATCH 060/181] More consistency in the documentation (#4000) * Reaction routes in guilds * Consistency with 204 naming * More consistency with 204s * Fix question mark ordering * Proper pluralization of "Webhooks Update" * I misunderstood a note, whoops --- docs/interactions/Application_Commands.md | 4 ++-- docs/interactions/Receiving_and_Responding.md | 4 ++-- docs/resources/Guild.md | 6 +++--- docs/resources/Webhook.md | 4 ++-- docs/topics/Gateway.md | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index 5a8166c18e..a93b8f6f5a 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -927,7 +927,7 @@ Edit a global command. Updates will be available in all guilds after 1 hour. Ret ## Delete Global Application Command % DELETE /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/commands/{command.id#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object} -Deletes a global command. Returns `204`. +Deletes a global command. Returns `204 No Content` on success. ## Bulk Overwrite Global Application Commands % PUT /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/commands @@ -979,7 +979,7 @@ Edit a guild command. Updates for guild commands will be available immediately. ## Delete Guild Application Command % DELETE /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/commands/{command.id#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object} -Delete a guild command. Returns `204` on success. +Delete a guild command. Returns `204 No Content` on success. ## Bulk Overwrite Guild Application Commands % PUT /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/commands diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 37f1b8e07b..741d031c72 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -339,7 +339,7 @@ Edits the initial Interaction response. Functions the same as [Edit Webhook Mess ## Delete Original Interaction Response % DELETE /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/@original -Deletes the initial Interaction response. Returns `204` on success. +Deletes the initial Interaction response. Returns `204 No Content` on success. ## Create Followup Message % POST /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object} @@ -355,4 +355,4 @@ Edits a followup message for an Interaction. Functions the same as [Edit Webhook ## Delete Followup Message % DELETE /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} -Deletes a followup message for an Interaction. Returns `204` on success. Does not support ephemeral followups. +Deletes a followup message for an Interaction. Returns `204 No Content` on success. Does not support ephemeral followups. diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index ef5c9077c0..b3bbbfd554 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -796,7 +796,7 @@ Modifies the current member in a guild. Returns a 200 with the updated member ob | Field | Type | Description | Permission | | ----- | ------- | ------------------------------ | --------------- | -| ?nick | ?string | value to set users nickname to | CHANGE_NICKNAME | +| nick? | ?string | value to set users nickname to | CHANGE_NICKNAME | ## Modify Current User Nick % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/members/@me/nick @@ -812,7 +812,7 @@ Modifies the nickname of the current user in a guild. Returns a 200 with the nic | Field | Type | Description | Permission | | ----- | ------- | ------------------------------ | --------------- | -| ?nick | ?string | value to set users nickname to | CHANGE_NICKNAME | +| nick? | ?string | value to set users nickname to | CHANGE_NICKNAME | ## Add Guild Member Role % PUT /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/members/{user.id#DOCS_RESOURCES_USER/user-object}/roles/{role.id#DOCS_TOPICS_PERMISSIONS/role-object} @@ -901,7 +901,7 @@ This endpoint takes a JSON array of parameters in the following format: | Field | Type | Description | | --------- | --------- | ---------------------------- | | id | snowflake | role | -| ?position | ?integer | sorting position of the role | +| position? | ?integer | sorting position of the role | ## Modify Guild Role % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/roles/{role.id#DOCS_TOPICS_PERMISSIONS/role-object} diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index e52bc33ced..31f7677630 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -147,7 +147,7 @@ Same as above, except this call does not require authentication, does not accept ## Delete Webhook % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object} -Delete a webhook permanently. Requires the `MANAGE_WEBHOOKS` permission. Returns a 204 NO CONTENT response on success. +Delete a webhook permanently. Requires the `MANAGE_WEBHOOKS` permission. Returns a `204 No Content` response on success. ## Delete Webhook with Token % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object} @@ -260,7 +260,7 @@ Any provided files will be **appended** to the message. To remove or replace fil # Delete Webhook Message % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} -Deletes a message that was created by the webhook. Returns a 204 NO CONTENT response on success. +Deletes a message that was created by the webhook. Returns a `204 No Content` response on success. ###### Query String Params diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index b7567ebcf2..85dce20c29 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -1504,7 +1504,7 @@ Sent when a guild's voice server is updated. This is sent when initially connect Sent when a guild channel's webhook is created, updated, or deleted. -###### Webhook Update Event Fields +###### Webhooks Update Event Fields | Field | Type | Description | |------------|-----------|-------------------| From 37a25dd805cdb9ba86002149faeb451e5d426f95 Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Tue, 14 Dec 2021 14:11:38 -0500 Subject: [PATCH 061/181] Document audit logs for scheduled events (#4237) --- docs/resources/Guild_Scheduled_Event.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index 6bbdf33375..4554ff01d4 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -27,7 +27,7 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). \* `creator_id` will be null and `creator` will not be included for events created before October 25th, 2021, when the concept of `creator_id` was introduced and tracked. -\** See [field requirements by entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-field-requirements-by-entity-type) to understand the relationship between `entity_type` and the following fields: `channel_id`, `entity_metadata`, and `scheduled_end_time` +\** See [field requirements by entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-field-requirements-by-entity-type) to understand the relationship between `entity_type` and the following fields: `channel_id`, `entity_metadata`, and `scheduled_end_time` ###### Guild Scheduled Event Privacy Level @@ -88,7 +88,7 @@ SCHEDULED --> CANCELED | ------------ | ------------------- | ---------------------------------------- | | location? * | string | location of the event (1-100 characters) | -\* [required](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) for events with `'entity_type': EXTERNAL` +\* [required](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) for events with `'entity_type': EXTERNAL` ### Guild Scheduled Event User Object @@ -118,6 +118,9 @@ Create a guild scheduled event in the guild. Returns a [guild scheduled event](# > info > A guild can have a maximum of 100 events with `SCHEDULED` or `ACTIVE` status at any time. +> info +> This endpoint supports the `X-Audit-Log-Reason` header. + ###### JSON Params | Field | Type | Description | @@ -150,6 +153,9 @@ Modify a guild scheduled event. Returns the modified [guild scheduled event](#DO > info > To start or end an event, use this endpoint to modify the event's [status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) field. +> info +> This endpoint supports the `X-Audit-Log-Reason` header. + ###### JSON Params | Field | Type | Description | @@ -256,4 +262,4 @@ NOTE: `entity_type` is expressed by name rather than value for readability #### Read Permissions (GET) -* *No other permissions required* \ No newline at end of file +* *No other permissions required* From 425d3ef6d1c004906e93ac6b6482fb230e0e2256 Mon Sep 17 00:00:00 2001 From: Hemu <1871299+hemu@users.noreply.github.com> Date: Tue, 14 Dec 2021 21:28:57 -0500 Subject: [PATCH 062/181] remove scheduled events gateway events experimental disclaimer (#4238) remove experimental disclaimer for gateway events which are stable and supported --- docs/topics/Gateway.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 85dce20c29..22f782e969 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -307,14 +307,12 @@ GUILD_SCHEDULED_EVENTS (1 << 16) - GUILD_SCHEDULED_EVENT_CREATE - GUILD_SCHEDULED_EVENT_UPDATE - GUILD_SCHEDULED_EVENT_DELETE - - GUILD_SCHEDULED_EVENT_USER_ADD ** - - GUILD_SCHEDULED_EVENT_USER_REMOVE ** + - GUILD_SCHEDULED_EVENT_USER_ADD + - GUILD_SCHEDULED_EVENT_USER_REMOVE ``` \* [Thread Members Update](#DOCS_TOPICS_GATEWAY/thread-members-update) contains different data depending on which intents are used. -\*\* [Guild Scheduled Event User Add](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-user-add) and [Guild Scheduled Event User Remove](#DOCS_TOPICS_GATEWAY/guild-scheduled-event-user-remove) are currently experimental and not officially supported. - ### Caveats Any [events not defined in an intent](#DOCS_TOPICS_GATEWAY/commands-and-events-gateway-events) are considered "passthrough" and will always be sent to you. From c4189a4940e6cc0b7bbf3c5be79e3bfd3887606c Mon Sep 17 00:00:00 2001 From: spiral Date: Wed, 15 Dec 2021 14:55:40 -0500 Subject: [PATCH 063/181] feat: document error code 50109 (#4241) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index a5dc6845ee..0bc5194d88 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -230,6 +230,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 50095 | This server is not available in your location | | 50097 | This server needs monetization enabled in order to perform this action | | 50101 | This server needs more boosts to perform this action | +| 50109 | The request body contains invalid JSON. | | 60003 | Two factor is required for this operation | | 80004 | No users with DiscordTag exist | | 90001 | Reaction was blocked | From b24e9e75b033b15f748f92ec9ec92cbae84981b7 Mon Sep 17 00:00:00 2001 From: John Furrow Date: Thu, 16 Dec 2021 09:31:14 -0800 Subject: [PATCH 064/181] Denotes sticker_pack.banner_asset_id as optional (#4245) --- docs/resources/Sticker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Sticker.md b/docs/resources/Sticker.md index c05ef7c0a1..a1595ef0f8 100644 --- a/docs/resources/Sticker.md +++ b/docs/resources/Sticker.md @@ -81,7 +81,7 @@ Represents a pack of standard stickers. | sku_id | snowflake | id of the pack's SKU | | cover_sticker_id? | snowflake | id of a sticker in the pack which is shown as the pack's icon | | description | string | description of the sticker pack | -| banner_asset_id | snowflake | id of the sticker pack's [banner image](#DOCS_REFERENCE/image-formatting) | +| banner_asset_id? | snowflake | id of the sticker pack's [banner image](#DOCS_REFERENCE/image-formatting) | ###### Example Sticker Pack From b51c34f8f50ae8455f351f869ed22d025c1d2852 Mon Sep 17 00:00:00 2001 From: Marvin Witt Date: Mon, 20 Dec 2021 22:39:30 +0100 Subject: [PATCH 065/181] Document guild time outs (#4075) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jake Ward Co-authored-by: Vitor Co-authored-by: Josey Wörmann Co-authored-by: Advaith Co-authored-by: Hemu <1871299+hemu@users.noreply.github.com> Co-authored-by: Lala Sabathil Co-authored-by: Ian Webster --- docs/resources/Guild.md | 54 +++++++++++------------ docs/topics/Gateway.md | 25 +++++------ docs/topics/Permissions.md | 87 +++++++++++++++++++------------------- 3 files changed, 85 insertions(+), 81 deletions(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index b3bbbfd554..5c91c884b4 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -280,18 +280,19 @@ A partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object. Represents an Offl ###### Guild Member Structure -| Field | Type | Description | -| -------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| user? | [user](#DOCS_RESOURCES_USER/user-object) object | the user this guild member represents | -| nick? | ?string | this users guild nickname | -| avatar? | ?string | the member's [guild avatar hash](#DOCS_REFERENCE/image-formatting) | -| roles | array of snowflakes | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) object ids | -| joined_at | ISO8601 timestamp | when the user joined the guild | -| premium_since? | ?ISO8601 timestamp | when the user started [boosting](https://support.discord.com/hc/en-us/articles/360028038352-Server-Boosting-) the guild | -| deaf | boolean | whether the user is deafened in voice channels | -| mute | boolean | whether the user is muted in voice channels | -| pending? | boolean | whether the user has not yet passed the guild's [Membership Screening](#DOCS_RESOURCES_GUILD/membership-screening-object) requirements | -| permissions? | string | total permissions of the member in the channel, including overwrites, returned when in the interaction object | +| Field | Type | Description | +| ----------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| user? | [user](#DOCS_RESOURCES_USER/user-object) object | the user this guild member represents | +| nick? | ?string | this user's guild nickname | +| avatar? | ?string | the member's [guild avatar hash](#DOCS_REFERENCE/image-formatting) | +| roles | array of snowflakes | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) object ids | +| joined_at | ISO8601 timestamp | when the user joined the guild | +| premium_since? | ?ISO8601 timestamp | when the user started [boosting](https://support.discord.com/hc/en-us/articles/360028038352-Server-Boosting-) the guild | +| deaf | boolean | whether the user is deafened in voice channels | +| mute | boolean | whether the user is muted in voice channels | +| pending? | boolean | whether the user has not yet passed the guild's [Membership Screening](#DOCS_RESOURCES_GUILD/membership-screening-object) requirements | +| permissions? | string | total permissions of the member in the channel, including overwrites, returned when in the interaction object | +| communication_disabled_until? | ?ISO8601 timestamp | when the user's [timeout](https://support.discord.com/hc/en-us/articles/4413305239191-Time-Out-FAQ) will expire and the user will be able to communicate in the guild again, null or a time in the past if the user is not timed out | > info > The field `user` won't be included in the member object attached to `MESSAGE_CREATE` and `MESSAGE_UPDATE` gateway events. @@ -757,7 +758,7 @@ For guilds with [Membership Screening](#DOCS_RESOURCES_GUILD/membership-screenin | Field | Type | Description | Permission | | ------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------ | ---------------- | | access_token | string | an oauth2 access token granted with the `guilds.join` to the bot's application for the user you want to add to the guild | | -| nick | string | value to set users nickname to | MANAGE_NICKNAMES | +| nick | string | value to set user's nickname to | MANAGE_NICKNAMES | | roles | array of snowflakes | array of role ids the member is assigned | MANAGE_ROLES | | mute | boolean | whether the user is muted in voice channels | MUTE_MEMBERS | | deaf | boolean | whether the user is deafened in voice channels | DEAFEN_MEMBERS | @@ -777,13 +778,14 @@ Modify attributes of a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) ###### JSON Params -| Field | Type | Description | Permission | -| ---------- | ------------------- | ------------------------------------------------------------------------------------------------------ | ---------------- | -| nick | string | value to set users nickname to | MANAGE_NICKNAMES | -| roles | array of snowflakes | array of role ids the member is assigned | MANAGE_ROLES | -| mute | boolean | whether the user is muted in voice channels. Will throw a 400 if the user is not in a voice channel | MUTE_MEMBERS | -| deaf | boolean | whether the user is deafened in voice channels. Will throw a 400 if the user is not in a voice channel | DEAFEN_MEMBERS | -| channel_id | snowflake | id of channel to move user to (if they are connected to voice) | MOVE_MEMBERS | +| Field | Type | Description | Permission | +| ---------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | +| nick | string | value to set user's nickname to | MANAGE_NICKNAMES | +| roles | array of snowflakes | array of role ids the member is assigned | MANAGE_ROLES | +| mute | boolean | whether the user is muted in voice channels. Will throw a 400 if the user is not in a voice channel | MUTE_MEMBERS | +| deaf | boolean | whether the user is deafened in voice channels. Will throw a 400 if the user is not in a voice channel | DEAFEN_MEMBERS | +| channel_id | snowflake | id of channel to move user to (if they are connected to voice) | MOVE_MEMBERS | +| communication_disabled_until | ?ISO8601 timestamp | when the user's [timeout](https://support.discord.com/hc/en-us/articles/4413305239191-Time-Out-FAQ) will expire and the user will be able to communicate in the guild again (up to 28 days in the future), set to null to remove timeout | MODERATE_MEMBERS | ## Modify Current Member % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/members/@me @@ -794,9 +796,9 @@ Modifies the current member in a guild. Returns a 200 with the updated member ob ###### JSON Params -| Field | Type | Description | Permission | -| ----- | ------- | ------------------------------ | --------------- | -| nick? | ?string | value to set users nickname to | CHANGE_NICKNAME | +| Field | Type | Description | Permission | +| ----- | ------- | ------------------------------- | --------------- | +| nick? | ?string | value to set user's nickname to | CHANGE_NICKNAME | ## Modify Current User Nick % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/members/@me/nick @@ -810,9 +812,9 @@ Modifies the nickname of the current user in a guild. Returns a 200 with the nic ###### JSON Params -| Field | Type | Description | Permission | -| ----- | ------- | ------------------------------ | --------------- | -| nick? | ?string | value to set users nickname to | CHANGE_NICKNAME | +| Field | Type | Description | Permission | +| ----- | ------- | ------------------------------- | --------------- | +| nick? | ?string | value to set user's nickname to | CHANGE_NICKNAME | ## Add Guild Member Role % PUT /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/members/{user.id#DOCS_RESOURCES_USER/user-object}/roles/{role.id#DOCS_TOPICS_PERMISSIONS/role-object} diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 22f782e969..503202da9e 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -1010,18 +1010,19 @@ Sent when a guild member is updated. This will also fire when the user object of ###### Guild Member Update Event Fields -| Field | Type | Description | -|----------------|---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------| -| guild_id | snowflake | the id of the guild | -| roles | array of snowflakes | user role ids | -| user | a [user](#DOCS_RESOURCES_USER/user-object) object | the user | -| nick? | ?string | nickname of the user in the guild | -| avatar | ?string | the member's [guild avatar hash](#DOCS_REFERENCE/image-formatting) -| joined_at | ?ISO8601 timestamp | when the user joined the guild | -| premium_since? | ?ISO8601 timestamp | when the user starting [boosting](https://support.discord.com/hc/en-us/articles/360028038352-Server-Boosting-) the guild | -| deaf? | boolean | whether the user is deafened in voice channels | -| mute? | boolean | whether the user is muted in voice channels | -| pending? | boolean | whether the user has not yet passed the guild's [Membership Screening](#DOCS_RESOURCES_GUILD/membership-screening-object) requirements | +| Field | Type | Description | +| ----------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| guild_id | snowflake | the id of the guild | +| roles | array of snowflakes | user role ids | +| user | a [user](#DOCS_RESOURCES_USER/user-object) object | the user | +| nick? | ?string | nickname of the user in the guild | +| avatar | ?string | the member's [guild avatar hash](#DOCS_REFERENCE/image-formatting) | +| joined_at | ?ISO8601 timestamp | when the user joined the guild | +| premium_since? | ?ISO8601 timestamp | when the user starting [boosting](https://support.discord.com/hc/en-us/articles/360028038352-Server-Boosting-) the guild | +| deaf? | boolean | whether the user is deafened in voice channels | +| mute? | boolean | whether the user is muted in voice channels | +| pending? | boolean | whether the user has not yet passed the guild's [Membership Screening](#DOCS_RESOURCES_GUILD/membership-screening-object) requirements | +| communication_disabled_until? | ?ISO8601 timestamp | when the user's [timeout](https://support.discord.com/hc/en-us/articles/4413305239191-Time-Out-FAQ) will expire and the user will be able to communicate in the guild again, null or a time in the past if the user is not timed out | #### Guild Members Chunk diff --git a/docs/topics/Permissions.md b/docs/topics/Permissions.md index c06707ddfd..c5e0cccde4 100644 --- a/docs/topics/Permissions.md +++ b/docs/topics/Permissions.md @@ -26,52 +26,53 @@ Below is a table of all current permissions, their integer values in hexadecimal ###### Bitwise Permission Flags -| Permission | Value | Description | Channel Type | -| ----------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------ | -| CREATE_INSTANT_INVITE | `0x0000000001` `(1 << 0)` | Allows creation of instant invites | T, V, S | -| KICK_MEMBERS \* | `0x0000000002` `(1 << 1)` | Allows kicking members | | -| BAN_MEMBERS \* | `0x0000000004` `(1 << 2)` | Allows banning members | | -| ADMINISTRATOR \* | `0x0000000008` `(1 << 3)` | Allows all permissions and bypasses channel permission overwrites | | -| MANAGE_CHANNELS \* | `0x0000000010` `(1 << 4)` | Allows management and editing of channels | T, V, S | -| MANAGE_GUILD \* | `0x0000000020` `(1 << 5)` | Allows management and editing of the guild | | -| ADD_REACTIONS | `0x0000000040` `(1 << 6)` | Allows for the addition of reactions to messages | T | -| VIEW_AUDIT_LOG | `0x0000000080` `(1 << 7)` | Allows for viewing of audit logs | | -| PRIORITY_SPEAKER | `0x0000000100` `(1 << 8)` | Allows for using priority speaker in a voice channel | V | -| STREAM | `0x0000000200` `(1 << 9)` | Allows the user to go live | V | -| VIEW_CHANNEL | `0x0000000400` `(1 << 10)` | Allows guild members to view a channel, which includes reading messages in text channels | T, V, S | -| SEND_MESSAGES | `0x0000000800` `(1 << 11)` | Allows for sending messages in a channel (does not allow sending messages in threads) | T | -| SEND_TTS_MESSAGES | `0x0000001000` `(1 << 12)` | Allows for sending of `/tts` messages | T | -| MANAGE_MESSAGES \* | `0x0000002000` `(1 << 13)` | Allows for deletion of other users messages | T | -| EMBED_LINKS | `0x0000004000` `(1 << 14)` | Links sent by users with this permission will be auto-embedded | T | -| ATTACH_FILES | `0x0000008000` `(1 << 15)` | Allows for uploading images and files | T | -| READ_MESSAGE_HISTORY | `0x0000010000` `(1 << 16)` | Allows for reading of message history | T | -| MENTION_EVERYONE | `0x0000020000` `(1 << 17)` | Allows for using the `@everyone` tag to notify all users in a channel, and the `@here` tag to notify all online users in a channel | T | -| USE_EXTERNAL_EMOJIS | `0x0000040000` `(1 << 18)` | Allows the usage of custom emojis from other servers | T | -| VIEW_GUILD_INSIGHTS | `0x0000080000` `(1 << 19)` | Allows for viewing guild insights | | -| CONNECT | `0x0000100000` `(1 << 20)` | Allows for joining of a voice channel | V, S | -| SPEAK | `0x0000200000` `(1 << 21)` | Allows for speaking in a voice channel | V | -| MUTE_MEMBERS | `0x0000400000` `(1 << 22)` | Allows for muting members in a voice channel | V, S | -| DEAFEN_MEMBERS | `0x0000800000` `(1 << 23)` | Allows for deafening of members in a voice channel | V, S | -| MOVE_MEMBERS | `0x0001000000` `(1 << 24)` | Allows for moving of members between voice channels | V, S | -| USE_VAD | `0x0002000000` `(1 << 25)` | Allows for using voice-activity-detection in a voice channel | V | -| CHANGE_NICKNAME | `0x0004000000` `(1 << 26)` | Allows for modification of own nickname | | -| MANAGE_NICKNAMES | `0x0008000000` `(1 << 27)` | Allows for modification of other users nicknames | | -| MANAGE_ROLES \* | `0x0010000000` `(1 << 28)` | Allows management and editing of roles | T, V, S | -| MANAGE_WEBHOOKS \* | `0x0020000000` `(1 << 29)` | Allows management and editing of webhooks | T | -| MANAGE_EMOJIS_AND_STICKERS \* | `0x0040000000` `(1 << 30)` | Allows management and editing of emojis and stickers | | -| USE_APPLICATION_COMMANDS | `0x0080000000` `(1 << 31)` | Allows members to use application commands, including slash commands and context menu commands. | T | -| REQUEST_TO_SPEAK | `0x0100000000` `(1 << 32)` | Allows for requesting to speak in stage channels. (_This permission is under active development and may be changed or removed._) | S | -| MANAGE_EVENTS | `0x0200000000` `(1 << 33)` | Allows for creating, editing, and deleting scheduled events | V, S | -| MANAGE_THREADS \* | `0x0400000000` `(1 << 34)` | Allows for deleting and archiving threads, and viewing all private threads | T | -| CREATE_PUBLIC_THREADS | `0x0800000000` `(1 << 35)` | Allows for creating threads | T | -| CREATE_PRIVATE_THREADS | `0x1000000000` `(1 << 36)` | Allows for creating private threads | T | -| USE_EXTERNAL_STICKERS | `0x2000000000` `(1 << 37)` | Allows the usage of custom stickers from other servers | T | -| SEND_MESSAGES_IN_THREADS | `0x4000000000` `(1 << 38)` | Allows for sending messages in threads | T | -| START_EMBEDDED_ACTIVITIES | `0x8000000000` `(1 << 39)` | Allows for launching activities (applications with the `EMBEDDED` flag) in a voice channel | V | +| Permission | Value | Description | Channel Type | +| ----------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | +| CREATE_INSTANT_INVITE | `0x0000000000000001` `(1 << 0)` | Allows creation of instant invites | T, V, S | +| KICK_MEMBERS \* | `0x0000000000000002` `(1 << 1)` | Allows kicking members | | +| BAN_MEMBERS \* | `0x0000000000000004` `(1 << 2)` | Allows banning members | | +| ADMINISTRATOR \* | `0x0000000000000008` `(1 << 3)` | Allows all permissions and bypasses channel permission overwrites | | +| MANAGE_CHANNELS \* | `0x0000000000000010` `(1 << 4)` | Allows management and editing of channels | T, V, S | +| MANAGE_GUILD \* | `0x0000000000000020` `(1 << 5)` | Allows management and editing of the guild | | +| ADD_REACTIONS | `0x0000000000000040` `(1 << 6)` | Allows for the addition of reactions to messages | T | +| VIEW_AUDIT_LOG | `0x0000000000000080` `(1 << 7)` | Allows for viewing of audit logs | | +| PRIORITY_SPEAKER | `0x0000000000000100` `(1 << 8)` | Allows for using priority speaker in a voice channel | V | +| STREAM | `0x0000000000000200` `(1 << 9)` | Allows the user to go live | V | +| VIEW_CHANNEL | `0x0000000000000400` `(1 << 10)` | Allows guild members to view a channel, which includes reading messages in text channels | T, V, S | +| SEND_MESSAGES | `0x0000000000000800` `(1 << 11)` | Allows for sending messages in a channel (does not allow sending messages in threads) | T | +| SEND_TTS_MESSAGES | `0x0000000000001000` `(1 << 12)` | Allows for sending of `/tts` messages | T | +| MANAGE_MESSAGES \* | `0x0000000000002000` `(1 << 13)` | Allows for deletion of other users messages | T | +| EMBED_LINKS | `0x0000000000004000` `(1 << 14)` | Links sent by users with this permission will be auto-embedded | T | +| ATTACH_FILES | `0x0000000000008000` `(1 << 15)` | Allows for uploading images and files | T | +| READ_MESSAGE_HISTORY | `0x0000000000010000` `(1 << 16)` | Allows for reading of message history | T | +| MENTION_EVERYONE | `0x0000000000020000` `(1 << 17)` | Allows for using the `@everyone` tag to notify all users in a channel, and the `@here` tag to notify all online users in a channel | T | +| USE_EXTERNAL_EMOJIS | `0x0000000000040000` `(1 << 18)` | Allows the usage of custom emojis from other servers | T | +| VIEW_GUILD_INSIGHTS | `0x0000000000080000` `(1 << 19)` | Allows for viewing guild insights | | +| CONNECT | `0x0000000000100000` `(1 << 20)` | Allows for joining of a voice channel | V, S | +| SPEAK | `0x0000000000200000` `(1 << 21)` | Allows for speaking in a voice channel | V | +| MUTE_MEMBERS | `0x0000000000400000` `(1 << 22)` | Allows for muting members in a voice channel | V, S | +| DEAFEN_MEMBERS | `0x0000000000800000` `(1 << 23)` | Allows for deafening of members in a voice channel | V, S | +| MOVE_MEMBERS | `0x0000000001000000` `(1 << 24)` | Allows for moving of members between voice channels | V, S | +| USE_VAD | `0x0000000002000000` `(1 << 25)` | Allows for using voice-activity-detection in a voice channel | V | +| CHANGE_NICKNAME | `0x0000000004000000` `(1 << 26)` | Allows for modification of own nickname | | +| MANAGE_NICKNAMES | `0x0000000008000000` `(1 << 27)` | Allows for modification of other users nicknames | | +| MANAGE_ROLES \* | `0x0000000010000000` `(1 << 28)` | Allows management and editing of roles | T, V, S | +| MANAGE_WEBHOOKS \* | `0x0000000020000000` `(1 << 29)` | Allows management and editing of webhooks | T | +| MANAGE_EMOJIS_AND_STICKERS \* | `0x0000000040000000` `(1 << 30)` | Allows management and editing of emojis and stickers | | +| USE_APPLICATION_COMMANDS | `0x0000000080000000` `(1 << 31)` | Allows members to use application commands, including slash commands and context menu commands. | T | +| REQUEST_TO_SPEAK | `0x0000000100000000` `(1 << 32)` | Allows for requesting to speak in stage channels. (_This permission is under active development and may be changed or removed._) | S | +| MANAGE_EVENTS | `0x0000000200000000` `(1 << 33)` | Allows for creating, editing, and deleting scheduled events | V, S | +| MANAGE_THREADS \* | `0x0000000400000000` `(1 << 34)` | Allows for deleting and archiving threads, and viewing all private threads | T | +| CREATE_PUBLIC_THREADS | `0x0000000800000000` `(1 << 35)` | Allows for creating threads | T | +| CREATE_PRIVATE_THREADS | `0x0000001000000000` `(1 << 36)` | Allows for creating private threads | T | +| USE_EXTERNAL_STICKERS | `0x0000002000000000` `(1 << 37)` | Allows the usage of custom stickers from other servers | T | +| SEND_MESSAGES_IN_THREADS | `0x0000004000000000` `(1 << 38)` | Allows for sending messages in threads | T | +| START_EMBEDDED_ACTIVITIES | `0x0000008000000000` `(1 << 39)` | Allows for launching activities (applications with the `EMBEDDED` flag) in a voice channel | V | +| MODERATE_MEMBERS | `0x0000010000000000` `(1 << 40)` | Allows for timing out users to prevent them from sending or reacting to messages in chat and threads, and from speaking in voice and stage channels | | **\* These permissions require the owner account to use [two-factor authentication](#DOCS_TOPICS_OAUTH2/twofactor-authentication-requirement) when used on a guild that has server-wide 2FA enabled.** -Note that these internal permission names may be referred to differently by the Discord client. For example, "Manage Permissions" refers to MANAGE_ROLES and "Use Voice Activity" refers to USE_VAD. +Note that these internal permission names may be referred to differently by the Discord client. For example, "Manage Permissions" refers to MANAGE_ROLES, "Use Voice Activity" refers to USE_VAD, and "Timeout Members" refers to MODERATE_MEMBERS. ## Permission Hierarchy From 1b2700889b173a6daf1504328ce1b6a2b78bde93 Mon Sep 17 00:00:00 2001 From: Hemu <1871299+hemu@users.noreply.github.com> Date: Mon, 20 Dec 2021 18:34:59 -0500 Subject: [PATCH 066/181] update changelog for timeout feature (#4266) Co-authored-by: Lala Sabathil --- docs/Change_Log.md | 8 +++++++- docs/topics/Permissions.md | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index 082d4b10cf..a27a35336f 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -1,5 +1,11 @@ # Change Log +## Guild Member Timeouts + +#### Dec 20, 2021 + +Add new documentation for the recently released guild member timeout feature. + ## Guild Scheduled Events #### Nov 23, 2021 @@ -16,7 +22,7 @@ #### Nov 15, 2021 -Add new documentation for recently released Guild Scheduled Events feature. +Add new documentation for the recently released Guild Scheduled Events feature. ## Application Command Autocomplete Interactions diff --git a/docs/topics/Permissions.md b/docs/topics/Permissions.md index c5e0cccde4..e35c01a2a4 100644 --- a/docs/topics/Permissions.md +++ b/docs/topics/Permissions.md @@ -68,10 +68,12 @@ Below is a table of all current permissions, their integer values in hexadecimal | USE_EXTERNAL_STICKERS | `0x0000002000000000` `(1 << 37)` | Allows the usage of custom stickers from other servers | T | | SEND_MESSAGES_IN_THREADS | `0x0000004000000000` `(1 << 38)` | Allows for sending messages in threads | T | | START_EMBEDDED_ACTIVITIES | `0x0000008000000000` `(1 << 39)` | Allows for launching activities (applications with the `EMBEDDED` flag) in a voice channel | V | -| MODERATE_MEMBERS | `0x0000010000000000` `(1 << 40)` | Allows for timing out users to prevent them from sending or reacting to messages in chat and threads, and from speaking in voice and stage channels | | +| MODERATE_MEMBERS \*\* | `0x0000010000000000` `(1 << 40)` | Allows for timing out users to prevent them from sending or reacting to messages in chat and threads, and from speaking in voice and stage channels | | **\* These permissions require the owner account to use [two-factor authentication](#DOCS_TOPICS_OAUTH2/twofactor-authentication-requirement) when used on a guild that has server-wide 2FA enabled.** +**\*\* See [Permissions for Timed Out Members](#DOCS_TOPICS_PERMISSIONS/permissions-for-timed-out-members) to understand how permissions are temporarily modified for timed out users.** + Note that these internal permission names may be referred to differently by the Discord client. For example, "Manage Permissions" refers to MANAGE_ROLES, "Use Voice Activity" refers to USE_VAD, and "Timeout Members" refers to MODERATE_MEMBERS. ## Permission Hierarchy @@ -219,3 +221,7 @@ Roles without colors (`color == 0`) do not count towards the final computed colo "mentionable": false } ``` + +## Permissions For Timed Out Members + +Timed out members will temporarily lose all permissions except `VIEW_CHANNEL` and `READ_MESSAGE_HISTORY`. Owners and admin users with `ADMINISTRATOR` permissions are exempt. From 5a40e8bafda388af66eb84019861f73d282ce7b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Tue, 21 Dec 2021 19:39:53 +0100 Subject: [PATCH 067/181] Add .gitattributes (#4256) --- .gitattributes | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..231597d879 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +# automatically normalize line endings +* text=auto + +.git* text +*.json text +*.js text +*.md text +*.{yml,yaml} text + +*.png binary +*.{jpeg,jpg} binary From 46f028029697051d0897f6d03d24aad3f9e24d84 Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Tue, 21 Dec 2021 18:44:06 +0000 Subject: [PATCH 068/181] Tweak `application_id` wording on message object (#4244) * Tweak `application_id` wording on message object * Update Channel.md Co-authored-by: Ian Webster --- docs/resources/Channel.md | 66 +++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index b1dfef3301..0aca11e89a 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -239,39 +239,39 @@ Represents a message sent in a channel within Discord. > warn > `content`, `embeds`, `attachments`, and `components` will require a privileged intent in 2022. [Learn more here](https://support-dev.discord.com/hc/en-us/articles/4404772028055). -| Field | Type | Description | -|-------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------| -| id | snowflake | id of the message | -| channel_id | snowflake | id of the channel the message was sent in | -| guild_id? | snowflake | id of the guild the message was sent in | -| author\* | [user](#DOCS_RESOURCES_USER/user-object) object | the author of this message (not guaranteed to be a valid user, see below) | -| member?\*\* | partial [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object | member properties for this message's author | -| content | string | contents of the message | -| timestamp | ISO8601 timestamp | when this message was sent | -| edited_timestamp | ?ISO8601 timestamp | when this message was edited (or null if never) | -| tts | boolean | whether this was a TTS message | -| mention_everyone | boolean | whether this message mentions everyone | -| mentions\*\*\* | array of [user](#DOCS_RESOURCES_USER/user-object) objects, with an additional partial [member](#DOCS_RESOURCES_GUILD/guild-member-object) field | users specifically mentioned in the message | -| mention_roles | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) object ids | roles specifically mentioned in this message | -| mention_channels?\*\*\*\* | array of [channel mention](#DOCS_RESOURCES_CHANNEL/channel-mention-object) objects | channels specifically mentioned in this message | -| attachments | array of [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | any attached files | -| embeds | array of [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | any embedded content | -| reactions? | array of [reaction](#DOCS_RESOURCES_CHANNEL/reaction-object) objects | reactions to the message | -| nonce? | integer or string | used for validating a message was sent | -| pinned | boolean | whether this message is pinned | -| webhook_id? | snowflake | if the message is generated by a webhook, this is the webhook's id | -| type | integer | [type of message](#DOCS_RESOURCES_CHANNEL/message-object-message-types) | -| activity? | [message activity](#DOCS_RESOURCES_CHANNEL/message-object-message-activity-structure) object | sent with Rich Presence-related chat embeds | -| application? | partial [application](#DOCS_RESOURCES_APPLICATION/application-object) object | sent with Rich Presence-related chat embeds | -| application_id? | snowflake | if the message is a response to an [Interaction](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/), this is the id of the interaction's application | -| message_reference? | [message reference](#DOCS_RESOURCES_CHANNEL/message-reference-object-message-reference-structure) object | data showing the source of a crosspost, channel follow add, pin, or reply message | -| flags? | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) | -| referenced_message?\*\*\*\*\* | ?[message object](#DOCS_RESOURCES_CHANNEL/message-object) | the message associated with the message_reference | -| interaction? | [message interaction object](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/message-interaction-object-message-interaction-structure) | sent if the message is a response to an [Interaction](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/) | -| thread? | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the thread that was started from this message, includes [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object | -| components? | Array of [message components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | sent if the message contains components like buttons, action rows, or other interactive components | -| sticker_items? | array of [message sticker item objects](#DOCS_RESOURCES_STICKER/sticker-item-object) | sent if the message contains stickers | -| stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | **Deprecated** the stickers sent with the message | +| Field | Type | Description | +|-------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| +| id | snowflake | id of the message | +| channel_id | snowflake | id of the channel the message was sent in | +| guild_id? | snowflake | id of the guild the message was sent in | +| author\* | [user](#DOCS_RESOURCES_USER/user-object) object | the author of this message (not guaranteed to be a valid user, see below) | +| member?\*\* | partial [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object | member properties for this message's author | +| content | string | contents of the message | +| timestamp | ISO8601 timestamp | when this message was sent | +| edited_timestamp | ?ISO8601 timestamp | when this message was edited (or null if never) | +| tts | boolean | whether this was a TTS message | +| mention_everyone | boolean | whether this message mentions everyone | +| mentions\*\*\* | array of [user](#DOCS_RESOURCES_USER/user-object) objects, with an additional partial [member](#DOCS_RESOURCES_GUILD/guild-member-object) field | users specifically mentioned in the message | +| mention_roles | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) object ids | roles specifically mentioned in this message | +| mention_channels?\*\*\*\* | array of [channel mention](#DOCS_RESOURCES_CHANNEL/channel-mention-object) objects | channels specifically mentioned in this message | +| attachments | array of [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | any attached files | +| embeds | array of [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | any embedded content | +| reactions? | array of [reaction](#DOCS_RESOURCES_CHANNEL/reaction-object) objects | reactions to the message | +| nonce? | integer or string | used for validating a message was sent | +| pinned | boolean | whether this message is pinned | +| webhook_id? | snowflake | if the message is generated by a webhook, this is the webhook's id | +| type | integer | [type of message](#DOCS_RESOURCES_CHANNEL/message-object-message-types) | +| activity? | [message activity](#DOCS_RESOURCES_CHANNEL/message-object-message-activity-structure) object | sent with Rich Presence-related chat embeds | +| application? | partial [application](#DOCS_RESOURCES_APPLICATION/application-object) object | sent with Rich Presence-related chat embeds | +| application_id? | snowflake | if the message is an [Interaction](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/) or application-owned webhook, this is the id of the application | +| message_reference? | [message reference](#DOCS_RESOURCES_CHANNEL/message-reference-object-message-reference-structure) object | data showing the source of a crosspost, channel follow add, pin, or reply message | +| flags? | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) | +| referenced_message?\*\*\*\*\* | ?[message object](#DOCS_RESOURCES_CHANNEL/message-object) | the message associated with the message_reference | +| interaction? | [message interaction object](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/message-interaction-object-message-interaction-structure) | sent if the message is a response to an [Interaction](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/) | +| thread? | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the thread that was started from this message, includes [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object | +| components? | Array of [message components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | sent if the message contains components like buttons, action rows, or other interactive components | +| sticker_items? | array of [message sticker item objects](#DOCS_RESOURCES_STICKER/sticker-item-object) | sent if the message contains stickers | +| stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | **Deprecated** the stickers sent with the message | \* The author object follows the structure of the user object, but is only a valid user in the case where the message is generated by a user or bot user. If the message is generated by a webhook, the author object corresponds to the webhook's id, username, and avatar. You can tell if a message is generated by a webhook by checking for the `webhook_id` on the message object. From 0f130007498f5ee6049b3b14975e167f199bc8f7 Mon Sep 17 00:00:00 2001 From: Mikko Koivunalho Date: Tue, 21 Dec 2021 19:45:40 +0100 Subject: [PATCH 069/181] Complete content type string (#4257) --- docs/topics/OAuth2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/OAuth2.md b/docs/topics/OAuth2.md index 627ece3433..acd08455da 100644 --- a/docs/topics/OAuth2.md +++ b/docs/topics/OAuth2.md @@ -15,7 +15,7 @@ The first step in implementing OAuth2 is [registering a developer application](# | https://discord.com/api/oauth2/token/revoke | [Token Revocation](https://tools.ietf.org/html/rfc7009) URL | > warn -> In accordance with the relevant RFCs, the token and token revocation URLs will **only** accept a content type of `x-www-form-urlencoded`. JSON content is not permitted and will return an error. +> In accordance with the relevant RFCs, the token and token revocation URLs will **only** accept a content type of `application/x-www-form-urlencoded`. JSON content is not permitted and will return an error. ###### OAuth2 Scopes From 77e1813458dedf4b3efd07e2d99e7d18e57a2911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Tue, 21 Dec 2021 19:52:12 +0100 Subject: [PATCH 070/181] Add reconnect column to close code table (#4261) --- docs/topics/Opcodes_and_Status_Codes.md | 35 ++++++++++++++----------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 0bc5194d88..44def7fbdb 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -22,22 +22,25 @@ All gateway events in Discord are tagged with an opcode that denotes the payload ###### Gateway Close Event Codes -| Code | Description | Explanation | -|------|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 4000 | Unknown error | We're not sure what went wrong. Try reconnecting? | -| 4001 | Unknown opcode | You sent an invalid [Gateway opcode](#DOCS_TOPICS_OPCODES_AND_STATUS_CODES/gateway-gateway-opcodes) or an invalid payload for an opcode. Don't do that! | -| 4002 | Decode error | You sent an invalid [payload](#DOCS_TOPICS_GATEWAY/sending-payloads) to us. Don't do that! | -| 4003 | Not authenticated | You sent us a payload prior to [identifying](#DOCS_TOPICS_GATEWAY/identify). | -| 4004 | Authentication failed | The account token sent with your [identify payload](#DOCS_TOPICS_GATEWAY/identify) is incorrect. | -| 4005 | Already authenticated | You sent more than one identify payload. Don't do that! | -| 4007 | Invalid `seq` | The sequence sent when [resuming](#DOCS_TOPICS_GATEWAY/resume) the session was invalid. Reconnect and start a new session. | -| 4008 | Rate limited | Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this. | -| 4009 | Session timed out | Your session timed out. Reconnect and start a new one. | -| 4010 | Invalid shard | You sent us an invalid [shard when identifying](#DOCS_TOPICS_GATEWAY/sharding). | -| 4011 | Sharding required | The session would have handled too many guilds - you are required to [shard](#DOCS_TOPICS_GATEWAY/sharding) your connection in order to connect. | -| 4012 | Invalid API version | You sent an invalid version for the gateway. | -| 4013 | Invalid intent(s) | You sent an invalid intent for a [Gateway Intent](#DOCS_TOPICS_GATEWAY/gateway-intents). You may have incorrectly calculated the bitwise value. | -| 4014 | Disallowed intent(s) | You sent a disallowed intent for a [Gateway Intent](#DOCS_TOPICS_GATEWAY/gateway-intents). You may have tried to specify an intent that you [have not enabled or are not approved for](#DOCS_TOPICS_GATEWAY/privileged-intents). | +In order to prevent broken reconnect loops, you should consider some close codes as a signal to stop reconnnecting. This can be because your token expired, or your identification is invalid. This table explains what the application defined close codes for the gateway are, and which close codes you should not attempt to reconnect. + + +| Code | Description | Explanation | Reconnect | +|------|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------| +| 4000 | Unknown error | We're not sure what went wrong. Try reconnecting? | true | +| 4001 | Unknown opcode | You sent an invalid [Gateway opcode](#DOCS_TOPICS_OPCODES_AND_STATUS_CODES/gateway-gateway-opcodes) or an invalid payload for an opcode. Don't do that! | true | +| 4002 | Decode error | You sent an invalid [payload](#DOCS_TOPICS_GATEWAY/sending-payloads) to us. Don't do that! | true | +| 4003 | Not authenticated | You sent us a payload prior to [identifying](#DOCS_TOPICS_GATEWAY/identify). | true | +| 4004 | Authentication failed | The account token sent with your [identify payload](#DOCS_TOPICS_GATEWAY/identify) is incorrect. | false | +| 4005 | Already authenticated | You sent more than one identify payload. Don't do that! | true | +| 4007 | Invalid `seq` | The sequence sent when [resuming](#DOCS_TOPICS_GATEWAY/resume) the session was invalid. Reconnect and start a new session. | true | +| 4008 | Rate limited | Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this. | true | +| 4009 | Session timed out | Your session timed out. Reconnect and start a new one. | true | +| 4010 | Invalid shard | You sent us an invalid [shard when identifying](#DOCS_TOPICS_GATEWAY/sharding). | false | +| 4011 | Sharding required | The session would have handled too many guilds - you are required to [shard](#DOCS_TOPICS_GATEWAY/sharding) your connection in order to connect. | false | +| 4012 | Invalid API version | You sent an invalid version for the gateway. | false | +| 4013 | Invalid intent(s) | You sent an invalid intent for a [Gateway Intent](#DOCS_TOPICS_GATEWAY/gateway-intents). You may have incorrectly calculated the bitwise value. | false | +| 4014 | Disallowed intent(s) | You sent a disallowed intent for a [Gateway Intent](#DOCS_TOPICS_GATEWAY/gateway-intents). You may have tried to specify an intent that you [have not enabled or are not approved for](#DOCS_TOPICS_GATEWAY/privileged-intents). | false | ## Voice From 743cd2374985ceb76525e82d3290f40a4029ad10 Mon Sep 17 00:00:00 2001 From: Hemu <1871299+hemu@users.noreply.github.com> Date: Sat, 1 Jan 2022 16:58:09 -0500 Subject: [PATCH 071/181] Document max value for GET event users limit param (#4299) --- docs/resources/Guild_Scheduled_Event.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index 4554ff01d4..da3c0f0a9a 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -188,7 +188,7 @@ Get a list of guild scheduled event users subscribed to a guild scheduled event. | Field | Type | Description | Default | | ------------ | ------- | ------------------------------------------------------------------------------ | ------- | -| limit? | number | how many users to receive from the event | 100 | +| limit? | number | number of users to return (up to maximum 100) | 100 | | with_member? | boolean | include guild member data if it exists | false | | before? * | snowflake | consider only users before given user id | null | | after? * | snowflake | consider only users after given user id | null | From c63a4d5a604b6c2dbb5e5b5c1e3c2a101e96df44 Mon Sep 17 00:00:00 2001 From: Pedro <3602279+Doc94@users.noreply.github.com> Date: Mon, 3 Jan 2022 12:54:22 -0300 Subject: [PATCH 072/181] Add docs for guild timeout in auditlog (#4285) Add missing communication_disabled_until audit log change key --- docs/resources/Audit_Log.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/resources/Audit_Log.md b/docs/resources/Audit_Log.md index 03ac34aac9..2833fe35a6 100644 --- a/docs/resources/Audit_Log.md +++ b/docs/resources/Audit_Log.md @@ -142,6 +142,7 @@ Whenever an admin action is performed on the API, an entry is added to the respe | channel_id | [invite](#DOCS_RESOURCES_INVITE/invite-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | snowflake | channel for invite code or guild scheduled event changed | | code | [invite](#DOCS_RESOURCES_INVITE/invite-object) | string | invite code changed | | color | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | integer | role color changed | +| communication_disabled_until | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | ISO8601 timestamp | member timeout state changed | | deaf | [user](#DOCS_RESOURCES_USER/user-object) | boolean | user server deafened/undeafened | | default_auto_archive_duration | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | default auto archive duration for newly created threads changed | | default_message_notifications | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | default [message notification level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) changed | From ec8025ce8ecec30722259cf03a93ef61652861d9 Mon Sep 17 00:00:00 2001 From: Hemu <1871299+hemu@users.noreply.github.com> Date: Mon, 3 Jan 2022 12:13:32 -0500 Subject: [PATCH 073/181] link member audit log keys to member obj (#4304) change member specific audit log change keys to point to member obj where they are defined --- docs/resources/Audit_Log.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/resources/Audit_Log.md b/docs/resources/Audit_Log.md index 2833fe35a6..84ceb93225 100644 --- a/docs/resources/Audit_Log.md +++ b/docs/resources/Audit_Log.md @@ -143,7 +143,7 @@ Whenever an admin action is performed on the API, an entry is added to the respe | code | [invite](#DOCS_RESOURCES_INVITE/invite-object) | string | invite code changed | | color | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | integer | role color changed | | communication_disabled_until | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | ISO8601 timestamp | member timeout state changed | -| deaf | [user](#DOCS_RESOURCES_USER/user-object) | boolean | user server deafened/undeafened | +| deaf | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | boolean | user server deafened/undeafened | | default_auto_archive_duration | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | default auto archive duration for newly created threads changed | | default_message_notifications | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | default [message notification level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) changed | | deny | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | a permission on a text or voice channel was denied for a role | @@ -166,9 +166,9 @@ Whenever an admin action is performed on the API, an entry is added to the respe | max_uses | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | change to max number of times invite code can be used | | mentionable | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | boolean | role is now mentionable/unmentionable | | mfa_level | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | two-factor auth requirement changed | -| mute | [user](#DOCS_RESOURCES_USER/user-object) | boolean | user server muted/unmuted | +| mute | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | boolean | user server muted/unmuted | | name | any | string | name changed | -| nick | [user](#DOCS_RESOURCES_USER/user-object) | string | user nickname changed | +| nick | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | string | user nickname changed | | nsfw | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | boolean | channel nsfw restriction changed | | owner_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | owner changed | | permission_overwrites | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | array of [channel overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | permissions on a channel changed | From 42c605e0be6b098ecc57fde8fed664c8310947e4 Mon Sep 17 00:00:00 2001 From: "Nicholas Carrigan (he/him)" Date: Mon, 10 Jan 2022 12:50:50 -0800 Subject: [PATCH 074/181] chore: migrate to issue forms (#4321) --- .github/ISSUE_TEMPLATE/api-bug-report.md | 45 ----------------- .github/ISSUE_TEMPLATE/api-bug-report.yml | 49 +++++++++++++++++++ .../developer-site-bug-report.md | 45 ----------------- .../developer-site-bug-report.yml | 49 +++++++++++++++++++ .../message-components-bug-report.md | 45 ----------------- .../message-components-bug-report.yml | 49 +++++++++++++++++++ .../slash-command-bug-report.md | 45 ----------------- .../slash-command-bug-report.yml | 49 +++++++++++++++++++ 8 files changed, 196 insertions(+), 180 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/api-bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/api-bug-report.yml delete mode 100644 .github/ISSUE_TEMPLATE/developer-site-bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/developer-site-bug-report.yml delete mode 100644 .github/ISSUE_TEMPLATE/message-components-bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/message-components-bug-report.yml delete mode 100644 .github/ISSUE_TEMPLATE/slash-command-bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/slash-command-bug-report.yml diff --git a/.github/ISSUE_TEMPLATE/api-bug-report.md b/.github/ISSUE_TEMPLATE/api-bug-report.md deleted file mode 100644 index af92d6e137..0000000000 --- a/.github/ISSUE_TEMPLATE/api-bug-report.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: API Bug Report -about: A bug has been found in Discord's API, Gateway, OAuth2, SDK, etc. -labels: bug ---- - - - -**Description** - - - -**Steps to Reproduce** - - - -**Expected Behavior** - - - -**Current Behavior** - - - -**Screenshots/Videos** - - - -**Client and System Information** - - diff --git a/.github/ISSUE_TEMPLATE/api-bug-report.yml b/.github/ISSUE_TEMPLATE/api-bug-report.yml new file mode 100644 index 0000000000..6f42159e3f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/api-bug-report.yml @@ -0,0 +1,49 @@ +name: API Bug Report +description: A bug has been found in Discord's API, Gateway, OAuth2, SDK, etc. +labels: ["bug"] +body: +- type: markdown + attributes: + value: 'Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues' +- type: textarea + id: description + attributes: + label: Description + description: Provide a clear and concise description of what the problem is. + validations: + required: true +- type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: Provide clear and concise steps for us to reliably reproduce this issue. + validations: + required: true +- type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior you expect to occur that is not? + validations: + required: true +- type: textarea + id: current + attributes: + label: Current Behavior + description: What is the behavior you are currently seeing instead? + validations: + required: true +- type: textarea + id: screenshots + attributes: + label: Screenshots/Videos + description: Provide a screenshot and/or video demonstrating the issue being experienced. + validations: + required: false +- type: textarea + id: information + attributes: + label: Client and System Information + description: What is the browser/library/client you are using? What operating system and version? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/developer-site-bug-report.md b/.github/ISSUE_TEMPLATE/developer-site-bug-report.md deleted file mode 100644 index 547cdf33f7..0000000000 --- a/.github/ISSUE_TEMPLATE/developer-site-bug-report.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: Developer Site Bug Report -about: A bug has been found with Discord's Developer site or documentation -labels: bug ---- - - - -**Description** - - - -**Steps to Reproduce** - - - -**Expected Behavior** - - - -**Current Behavior** - - - -**Screenshots/Videos** - - - -**Client and System Information** - - diff --git a/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml b/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml new file mode 100644 index 0000000000..6f42159e3f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml @@ -0,0 +1,49 @@ +name: API Bug Report +description: A bug has been found in Discord's API, Gateway, OAuth2, SDK, etc. +labels: ["bug"] +body: +- type: markdown + attributes: + value: 'Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues' +- type: textarea + id: description + attributes: + label: Description + description: Provide a clear and concise description of what the problem is. + validations: + required: true +- type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: Provide clear and concise steps for us to reliably reproduce this issue. + validations: + required: true +- type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior you expect to occur that is not? + validations: + required: true +- type: textarea + id: current + attributes: + label: Current Behavior + description: What is the behavior you are currently seeing instead? + validations: + required: true +- type: textarea + id: screenshots + attributes: + label: Screenshots/Videos + description: Provide a screenshot and/or video demonstrating the issue being experienced. + validations: + required: false +- type: textarea + id: information + attributes: + label: Client and System Information + description: What is the browser/library/client you are using? What operating system and version? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/message-components-bug-report.md b/.github/ISSUE_TEMPLATE/message-components-bug-report.md deleted file mode 100644 index 029823ef30..0000000000 --- a/.github/ISSUE_TEMPLATE/message-components-bug-report.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: Message Components Bug Report -about: A bug has been found in Discord's Message Components -labels: message components ---- - - - -**Description** - - - -**Steps to Reproduce** - - - -**Expected Behavior** - - - -**Current Behavior** - - - -**Screenshots/Videos** - - - -**Client and System Information** - - diff --git a/.github/ISSUE_TEMPLATE/message-components-bug-report.yml b/.github/ISSUE_TEMPLATE/message-components-bug-report.yml new file mode 100644 index 0000000000..4c8a0f16d6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/message-components-bug-report.yml @@ -0,0 +1,49 @@ +name: Message Components Bug Report +description: A bug has been found in Discord's Message Components. +labels: ["message components"] +body: +- type: markdown + attributes: + value: 'Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues?q=is%3Aissue+label%3A%22message+components%22+' +- type: textarea + id: description + attributes: + label: Description + description: Provide a clear and concise description of what the problem is. + validations: + required: true +- type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: Provide clear and concise steps for us to reliably reproduce this issue. + validations: + required: true +- type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior you expect to occur that is not? + validations: + required: true +- type: textarea + id: current + attributes: + label: Current Behavior + description: What is the behavior you are currently seeing instead? + validations: + required: true +- type: textarea + id: screenshots + attributes: + label: Screenshots/Videos + description: Provide a screenshot and/or video demonstrating the issue being experienced. + validations: + required: false +- type: textarea + id: information + attributes: + label: Client and System Information + description: What is the browser/library/client you are using? What operating system and version? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/slash-command-bug-report.md b/.github/ISSUE_TEMPLATE/slash-command-bug-report.md deleted file mode 100644 index 7d9dfab0a9..0000000000 --- a/.github/ISSUE_TEMPLATE/slash-command-bug-report.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: Slash Commands Bug Report -about: A bug has been found in Discord's Slash Commands and Interactions -labels: slash commands ---- - - - -**Description** - - - -**Steps to Reproduce** - - - -**Expected Behavior** - - - -**Current Behavior** - - - -**Screenshots/Videos** - - - -**Client and System Information** - - diff --git a/.github/ISSUE_TEMPLATE/slash-command-bug-report.yml b/.github/ISSUE_TEMPLATE/slash-command-bug-report.yml new file mode 100644 index 0000000000..d2cae22660 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/slash-command-bug-report.yml @@ -0,0 +1,49 @@ +name: Slash Commands Bug Report +description: A bug has been found in Discord's Slash Commands and Interactions. +labels: ["slash commands"] +body: +- type: markdown + attributes: + value: 'Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues?q=is%3Aissue+label%3A%22slash+commands%22+' +- type: textarea + id: description + attributes: + label: Description + description: Provide a clear and concise description of what the problem is. + validations: + required: true +- type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: Provide clear and concise steps for us to reliably reproduce this issue. + validations: + required: true +- type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior you expect to occur that is not? + validations: + required: true +- type: textarea + id: current + attributes: + label: Current Behavior + description: What is the behavior you are currently seeing instead? + validations: + required: true +- type: textarea + id: screenshots + attributes: + label: Screenshots/Videos + description: Provide a screenshot and/or video demonstrating the issue being experienced. + validations: + required: false +- type: textarea + id: information + attributes: + label: Client and System Information + description: What is the browser/library/client you are using? What operating system and version? + validations: + required: true From 6de76703945bdd75ccf63f1b82553cc6e5d27151 Mon Sep 17 00:00:00 2001 From: "Nicholas Carrigan (he/him)" Date: Mon, 10 Jan 2022 12:56:14 -0800 Subject: [PATCH 075/181] fix(tools): template name (#4329) --- .github/ISSUE_TEMPLATE/developer-site-bug-report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml b/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml index 6f42159e3f..d87da362f9 100644 --- a/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml @@ -1,4 +1,4 @@ -name: API Bug Report +name: Developer Site Bug Report description: A bug has been found in Discord's API, Gateway, OAuth2, SDK, etc. labels: ["bug"] body: From 123a716bcdefbc874caa261f90deb96ecdb907c6 Mon Sep 17 00:00:00 2001 From: Ian Mitchell Date: Mon, 10 Jan 2022 12:58:44 -0800 Subject: [PATCH 076/181] Update developer-site-bug-report.yml --- .github/ISSUE_TEMPLATE/developer-site-bug-report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml b/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml index d87da362f9..d46188d941 100644 --- a/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml @@ -1,5 +1,5 @@ name: Developer Site Bug Report -description: A bug has been found in Discord's API, Gateway, OAuth2, SDK, etc. +description: A bug has been found with Discord's Developer site or documentation. labels: ["bug"] body: - type: markdown From 30cc2ea5efc83e2398c72d2a47f5aeccd5e21a84 Mon Sep 17 00:00:00 2001 From: Patrick Yang Date: Mon, 10 Jan 2022 15:29:29 -0800 Subject: [PATCH 077/181] Add locale fields to interaction structure (#4265) --- docs/interactions/Receiving_and_Responding.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 741d031c72..3add757a79 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -25,11 +25,15 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide | token | string | a continuation token for responding to the interaction | | version | integer | read-only property, always `1` | | message? | [message](#DOCS_RESOURCES_CHANNEL/message-object) object | for components, the message they were attached to | +| locale?\*\*\* | string | the selected language of the invoking user | +| guild_locale? | string | the guild's preferred locale, if invoked in a guild | \* This is always present on application command and message component interaction types. It is optional for future-proofing against new interaction types \*\* `member` is sent when the interaction is invoked in a guild, and `user` is sent when invoked in a DM +\*\*\* This is available on all interaction types except PING + ###### Interaction Type | Name | Value | From c39627c76f049c9f3c26fe40edde75017b76ba7e Mon Sep 17 00:00:00 2001 From: Advaith Date: Wed, 12 Jan 2022 11:27:08 -0800 Subject: [PATCH 078/181] Move locale list from dispatch to reference and link to it (#4335) --- docs/Reference.md | 35 ++++ docs/dispatch/Field_Values.md | 35 ---- docs/dispatch/List_of_Commands.md | 26 +-- docs/game_sdk/Achievements.md | 8 +- docs/interactions/Receiving_and_Responding.md | 30 ++-- docs/resources/Guild.md | 152 +++++++++--------- docs/resources/User.md | 2 +- 7 files changed, 144 insertions(+), 144 deletions(-) diff --git a/docs/Reference.md b/docs/Reference.md index 2896fc5c2c..0539a250ed 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -438,3 +438,38 @@ For example: }] } ``` + +## Locales + +| Locale | Language Name | +| ------ | ----------------------- | +| en-US | English (United States) | +| en-GB | English (Great Britain) | +| bg | Bulgarian | +| zh-CN | Chinese (China) | +| zh-TW | Chinese (Taiwan) | +| hr | Croatian | +| cs | Czech | +| da | Danish | +| nl | Dutch | +| fi | Finnish | +| fr | French | +| de | German | +| el | Greek | +| hi | Hindi | +| hu | Hungarian | +| it | Italian | +| ja | Japanese | +| ko | Korean | +| lt | Lithuanian | +| no | Norwegian | +| pl | Polish | +| pt-BR | Portuguese (Brazil) | +| ro | Romanian | +| ru | Russian | +| es-ES | Spanish (Spain) | +| sv-SE | Swedish | +| th | Thai | +| tr | Turkish | +| uk | Ukrainian | +| vi | Vietnamese | diff --git a/docs/dispatch/Field_Values.md b/docs/dispatch/Field_Values.md index e67a168f6b..7594488aaa 100644 --- a/docs/dispatch/Field_Values.md +++ b/docs/dispatch/Field_Values.md @@ -3,41 +3,6 @@ > info > Need help with Dispatch? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! -###### Accepted Locales - -| Locale | Language Name | -| ------ | ----------------------- | -| en-US | English (United States) | -| en-GB | English (Great Britain) | -| bg | Bulgarian | -| zh-CN | Chinese (China) | -| zh-TW | Chinese (Taiwan) | -| hr | Croatian | -| cs | Czech | -| da | Danish | -| nl | Dutch | -| fi | Finnish | -| fr | French | -| de | German | -| el | Greek | -| hi | Hindi | -| hu | Hungarian | -| it | Italian | -| ja | Japanese | -| ko | Korean | -| lt | Lithuanian | -| no | Norwegian | -| pl | Polish | -| pt-BR | Portuguese (Brazil) | -| ro | Romanian | -| ru | Russian | -| es-ES | Spanish (Spain) | -| sv-SE | Swedish | -| th | Thai | -| tr | Turkish | -| uk | Ukrainian | -| vi | Vietnamese | - ## Manifests ###### Platform Values diff --git a/docs/dispatch/List_of_Commands.md b/docs/dispatch/List_of_Commands.md index 2234ba91e4..4856f351ce 100644 --- a/docs/dispatch/List_of_Commands.md +++ b/docs/dispatch/List_of_Commands.md @@ -196,13 +196,13 @@ Downloads the build for the given application id and branch id to the given inst ###### Arguments -| name | values | description | -| -------------- | ----------------------------------------------------------------------------- | ------------------------------ | -| application_id | int | your application ID/client ID | -| branch_id | int | the id of the branch to check | -| install_path | file path | the path to install to | -| --platform | [platform](#DOCS_DISPATCH_FIELD_VALUES/manifests-platform-values) | the build platform to download | -| --locale | [locale](#DOCS_DISPATCH_FIELD_VALUES/predefined-field-values-accepted-locales) | the build locale to download | +| name | values | description | +| -------------- | ----------------------------------------------------------------- | ------------------------------ | +| application_id | int | your application ID/client ID | +| branch_id | int | the id of the branch to check | +| install_path | file path | the path to install to | +| --platform | [platform](#DOCS_DISPATCH_FIELD_VALUES/manifests-platform-values) | the build platform to download | +| --locale | [locale](#DOCS_REFERENCE/locales) | the build locale to download | ###### Example @@ -234,12 +234,12 @@ Displays a preview of the install paths that a build will put files in, for a gi ###### Arguments -| name | values | description | -| ---------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | -| config_file | filename | the [JSON config file](#DOCS_DISPATCH_BRANCHES_AND_BUILDS/setting-up-our-first-build) for the build | -| application_root | file path | the directory that dispatch will treat as the local root for operations—`.` for the current directory | -| --locale | [locale](#DOCS_DISPATCH_FIELD_VALUES/predefined-field-values-accepted-locales) | the build locale to preview | -| --platform | [platform](#DOCS_DISPATCH_FIELD_VALUES/manifests-platform-values) | the build platform to preview | +| name | values | description | +| ---------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| config_file | filename | the [JSON config file](#DOCS_DISPATCH_BRANCHES_AND_BUILDS/setting-up-our-first-build) for the build | +| application_root | file path | the directory that dispatch will treat as the local root for operations—`.` for the current directory | +| --locale | [locale](#DOCS_REFERENCE/locales) | the build locale to preview | +| --platform | [platform](#DOCS_DISPATCH_FIELD_VALUES/manifests-platform-values) | the build platform to preview | ###### Example diff --git a/docs/game_sdk/Achievements.md b/docs/game_sdk/Achievements.md index 573442d52f..61871458f2 100644 --- a/docs/game_sdk/Achievements.md +++ b/docs/game_sdk/Achievements.md @@ -30,10 +30,10 @@ You can also mark achievements as `secret` and `secure`. "Secret" achievements w ###### Achievement Locale Object -| Name | Description | -| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| default | the default locale for the achievement | -| localizations? | object of [accepted locales](#DOCS_DISPATCH_FIELD_VALUES/predefined-field-values-accepted-locales) as the key and achievement translations as the value | +| Name | Description | +| -------------- | ------------------------------------------------------------------------------------------------- | +| default | the default locale for the achievement | +| localizations? | object of [locales](#DOCS_REFERENCE/locales) as the key and achievement translations as the value | ###### User Achievement Struct diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 3add757a79..99ab249214 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -12,21 +12,21 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide ###### Interaction Structure -| Field | Type | Description | -| -------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | -| id | snowflake | id of the interaction | -| application_id | snowflake | id of the application this interaction is for | -| type | [interaction type](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object-interaction-type) | the type of interaction | -| data?\* | [interaction data](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object-interaction-data-structure) | the command data payload | -| guild_id? | snowflake | the guild it was sent from | -| channel_id? | snowflake | the channel it was sent from | -| member?\*\* | [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object | guild member data for the invoking user, including permissions | -| user? | [user](#DOCS_RESOURCES_USER/user-object) object | user object for the invoking user, if invoked in a DM | -| token | string | a continuation token for responding to the interaction | -| version | integer | read-only property, always `1` | -| message? | [message](#DOCS_RESOURCES_CHANNEL/message-object) object | for components, the message they were attached to | -| locale?\*\*\* | string | the selected language of the invoking user | -| guild_locale? | string | the guild's preferred locale, if invoked in a guild | +| Field | Type | Description | +| -------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| id | snowflake | id of the interaction | +| application_id | snowflake | id of the application this interaction is for | +| type | [interaction type](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object-interaction-type) | the type of interaction | +| data?\* | [interaction data](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object-interaction-data-structure) | the command data payload | +| guild_id? | snowflake | the guild it was sent from | +| channel_id? | snowflake | the channel it was sent from | +| member?\*\* | [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object | guild member data for the invoking user, including permissions | +| user? | [user](#DOCS_RESOURCES_USER/user-object) object | user object for the invoking user, if invoked in a DM | +| token | string | a continuation token for responding to the interaction | +| version | integer | read-only property, always `1` | +| message? | [message](#DOCS_RESOURCES_CHANNEL/message-object) object | for components, the message they were attached to | +| locale?\*\*\* | string | the selected [language](#DOCS_REFERENCE/locales) of the invoking user | +| guild_locale? | string | the [guild's preferred locale](#DOCS_RESOURCES_GUILD/guild-object), if invoked in a guild | \* This is always present on application command and message component interaction types. It is optional for future-proofing against new interaction types diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index 5c91c884b4..a770ee9a43 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -6,60 +6,60 @@ Guilds in Discord represent an isolated collection of users and channels, and ar ###### Guild Structure -| Field | Type | Description | -| ----------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | -| id | snowflake | guild id | -| name | string | guild name (2-100 characters, excluding trailing and leading whitespace) | -| icon | ?string | [icon hash](#DOCS_REFERENCE/image-formatting) | -| icon_hash? | ?string | [icon hash](#DOCS_REFERENCE/image-formatting), returned when in the template object | -| splash | ?string | [splash hash](#DOCS_REFERENCE/image-formatting) | -| discovery_splash | ?string | [discovery splash hash](#DOCS_REFERENCE/image-formatting); only present for guilds with the "DISCOVERABLE" feature | -| owner? \*\* | boolean | true if [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) is the owner of the guild | -| owner_id | snowflake | id of owner | -| permissions? \*\* | string | total permissions for [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) in the guild (excludes overwrites) | -| region? \*\*\* | ?string | [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id for the guild (deprecated) | -| afk_channel_id | ?snowflake | id of afk channel | -| afk_timeout | integer | afk timeout in seconds | -| widget_enabled? | boolean | true if the server widget is enabled | -| widget_channel_id? | ?snowflake | the channel id that the widget will generate an invite to, or `null` if set to no invite | -| verification_level | integer | [verification level](#DOCS_RESOURCES_GUILD/guild-object-verification-level) required for the guild | -| default_message_notifications | integer | default [message notifications level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) | -| explicit_content_filter | integer | [explicit content filter level](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) | -| roles | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | roles in the guild | -| emojis | array of [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) objects | custom guild emojis | -| features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | -| mfa_level | integer | required [MFA level](#DOCS_RESOURCES_GUILD/guild-object-mfa-level) for the guild | -| application_id | ?snowflake | application id of the guild creator if it is bot-created | -| system_channel_id | ?snowflake | the id of the channel where guild notices such as welcome messages and boost events are posted | -| system_channel_flags | integer | [system channel flags](#DOCS_RESOURCES_GUILD/guild-object-system-channel-flags) | -| rules_channel_id | ?snowflake | the id of the channel where Community guilds can display rules and/or guidelines | -| joined_at? \* | ISO8601 timestamp | when this guild was joined at | -| large? \* | boolean | true if this is considered a large guild | -| unavailable? \* | boolean | true if this guild is unavailable due to an outage | -| member_count? \* | integer | total number of members in this guild | -| voice_states? \* | array of partial [voice state](#DOCS_RESOURCES_VOICE/voice-state-object) objects | states of members currently in voice channels; lacks the `guild_id` key | -| members? \* | array of [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) objects | users in the guild | -| channels? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | channels in the guild | -| threads? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | all active threads in the guild that current user has permission to view | -| presences? \* | array of partial [presence update](#DOCS_TOPICS_GATEWAY/presence-update) objects | presences of the members in the guild, will only include non-offline members if the size is greater than `large threshold` | -| max_presences? | ?integer | the maximum number of presences for the guild (`null` is always returned, apart from the largest of guilds) | -| max_members? | integer | the maximum number of members for the guild | -| vanity_url_code | ?string | the vanity url code for the guild | -| description | ?string | the description of a Community guild | -| banner | ?string | [banner hash](#DOCS_REFERENCE/image-formatting) | -| premium_tier | integer | [premium tier](#DOCS_RESOURCES_GUILD/guild-object-premium-tier) (Server Boost level) | -| premium_subscription_count? | integer | the number of boosts this guild currently has | -| preferred_locale | string | the preferred locale of a Community guild; used in server discovery and notices from Discord; defaults to "en-US" | -| public_updates_channel_id | ?snowflake | the id of the channel where admins and moderators of Community guilds receive notices from Discord | -| max_video_channel_users? | integer | the maximum amount of users in a video channel | -| approximate_member_count? | integer | approximate number of members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | -| approximate_presence_count? | integer | approximate number of non-offline members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | -| welcome_screen? | [welcome screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object | the welcome screen of a Community guild, shown to new members, returned in an [Invite](#DOCS_RESOURCES_INVITE/invite-object)'s guild object | -| nsfw_level | integer | [guild NSFW level](#DOCS_RESOURCES_GUILD/guild-object-guild-nsfw-level) | -| stage_instances? \* | array of [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) objects | Stage instances in the guild | -| stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | -| guild_scheduled_events? \* | array of [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) objects | the scheduled events in the guild | -| premium_progress_bar_enabled | boolean | whether the guild has the boost progress bar enabled | +| Field | Type | Description | +| ----------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | snowflake | guild id | +| name | string | guild name (2-100 characters, excluding trailing and leading whitespace) | +| icon | ?string | [icon hash](#DOCS_REFERENCE/image-formatting) | +| icon_hash? | ?string | [icon hash](#DOCS_REFERENCE/image-formatting), returned when in the template object | +| splash | ?string | [splash hash](#DOCS_REFERENCE/image-formatting) | +| discovery_splash | ?string | [discovery splash hash](#DOCS_REFERENCE/image-formatting); only present for guilds with the "DISCOVERABLE" feature | +| owner? \*\* | boolean | true if [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) is the owner of the guild | +| owner_id | snowflake | id of owner | +| permissions? \*\* | string | total permissions for [the user](#DOCS_RESOURCES_USER/get-current-user-guilds) in the guild (excludes overwrites) | +| region? \*\*\* | ?string | [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id for the guild (deprecated) | +| afk_channel_id | ?snowflake | id of afk channel | +| afk_timeout | integer | afk timeout in seconds | +| widget_enabled? | boolean | true if the server widget is enabled | +| widget_channel_id? | ?snowflake | the channel id that the widget will generate an invite to, or `null` if set to no invite | +| verification_level | integer | [verification level](#DOCS_RESOURCES_GUILD/guild-object-verification-level) required for the guild | +| default_message_notifications | integer | default [message notifications level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) | +| explicit_content_filter | integer | [explicit content filter level](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) | +| roles | array of [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | roles in the guild | +| emojis | array of [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) objects | custom guild emojis | +| features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | +| mfa_level | integer | required [MFA level](#DOCS_RESOURCES_GUILD/guild-object-mfa-level) for the guild | +| application_id | ?snowflake | application id of the guild creator if it is bot-created | +| system_channel_id | ?snowflake | the id of the channel where guild notices such as welcome messages and boost events are posted | +| system_channel_flags | integer | [system channel flags](#DOCS_RESOURCES_GUILD/guild-object-system-channel-flags) | +| rules_channel_id | ?snowflake | the id of the channel where Community guilds can display rules and/or guidelines | +| joined_at? \* | ISO8601 timestamp | when this guild was joined at | +| large? \* | boolean | true if this is considered a large guild | +| unavailable? \* | boolean | true if this guild is unavailable due to an outage | +| member_count? \* | integer | total number of members in this guild | +| voice_states? \* | array of partial [voice state](#DOCS_RESOURCES_VOICE/voice-state-object) objects | states of members currently in voice channels; lacks the `guild_id` key | +| members? \* | array of [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) objects | users in the guild | +| channels? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | channels in the guild | +| threads? \* | array of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | all active threads in the guild that current user has permission to view | +| presences? \* | array of partial [presence update](#DOCS_TOPICS_GATEWAY/presence-update) objects | presences of the members in the guild, will only include non-offline members if the size is greater than `large threshold` | +| max_presences? | ?integer | the maximum number of presences for the guild (`null` is always returned, apart from the largest of guilds) | +| max_members? | integer | the maximum number of members for the guild | +| vanity_url_code | ?string | the vanity url code for the guild | +| description | ?string | the description of a Community guild | +| banner | ?string | [banner hash](#DOCS_REFERENCE/image-formatting) | +| premium_tier | integer | [premium tier](#DOCS_RESOURCES_GUILD/guild-object-premium-tier) (Server Boost level) | +| premium_subscription_count? | integer | the number of boosts this guild currently has | +| preferred_locale | string | the preferred [locale](#DOCS_REFERENCE/locales) of a Community guild; used in server discovery and notices from Discord, and sent in interactions; defaults to "en-US" | +| public_updates_channel_id | ?snowflake | the id of the channel where admins and moderators of Community guilds receive notices from Discord | +| max_video_channel_users? | integer | the maximum amount of users in a video channel | +| approximate_member_count? | integer | approximate number of members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | +| approximate_presence_count? | integer | approximate number of non-offline members in this guild, returned from the `GET /guilds/` endpoint when `with_counts` is `true` | +| welcome_screen? | [welcome screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object | the welcome screen of a Community guild, shown to new members, returned in an [Invite](#DOCS_RESOURCES_INVITE/invite-object)'s guild object | +| nsfw_level | integer | [guild NSFW level](#DOCS_RESOURCES_GUILD/guild-object-guild-nsfw-level) | +| stage_instances? \* | array of [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) objects | Stage instances in the guild | +| stickers? | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | +| guild_scheduled_events? \* | array of [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) objects | the scheduled events in the guild | +| premium_progress_bar_enabled | boolean | whether the guild has the boost progress bar enabled | ** \* These fields are only sent within the [GUILD_CREATE](#DOCS_TOPICS_GATEWAY/guild-create) event ** @@ -618,28 +618,28 @@ Modify a guild's settings. Requires the `MANAGE_GUILD` permission. Returns the u ###### JSON Params -| Field | Type | Description | -| ----------------------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| name | string | guild name | -| region | ?string | guild [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id (deprecated) | -| verification_level | ?integer | [verification level](#DOCS_RESOURCES_GUILD/guild-object-verification-level) | -| default_message_notifications | ?integer | default [message notification level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) | -| explicit_content_filter | ?integer | [explicit content filter level](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) | -| afk_channel_id | ?snowflake | id for afk channel | -| afk_timeout | integer | afk timeout in seconds | -| icon | ?[image data](#DOCS_REFERENCE/image-data) | base64 1024x1024 png/jpeg/gif image for the guild icon (can be animated gif when the server has the `ANIMATED_ICON` feature) | -| owner_id | snowflake | user id to transfer guild ownership to (must be owner) | -| splash | ?[image data](#DOCS_REFERENCE/image-data) | base64 16:9 png/jpeg image for the guild splash (when the server has the `INVITE_SPLASH` feature) | -| discovery_splash | ?[image data](#DOCS_REFERENCE/image-data) | base64 16:9 png/jpeg image for the guild discovery splash (when the server has the `DISCOVERABLE` feature) | -| banner | ?[image data](#DOCS_REFERENCE/image-data) | base64 16:9 png/jpeg image for the guild banner (when the server has the `BANNER` feature) | -| system_channel_id | ?snowflake | the id of the channel where guild notices such as welcome messages and boost events are posted | -| system_channel_flags | integer | [system channel flags](#DOCS_RESOURCES_GUILD/guild-object-system-channel-flags) | -| rules_channel_id | ?snowflake | the id of the channel where Community guilds display rules and/or guidelines | -| public_updates_channel_id | ?snowflake | the id of the channel where admins and moderators of Community guilds receive notices from Discord | -| preferred_locale | ?string | the preferred locale of a Community guild used in server discovery and notices from Discord; defaults to "en-US" | -| features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | -| description | ?string | the description for the guild, if the guild is discoverable | -| premium_progress_bar_enabled | boolean | whether the guild's boost progress bar should be enabled. | +| Field | Type | Description | +| ----------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| name | string | guild name | +| region | ?string | guild [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id (deprecated) | +| verification_level | ?integer | [verification level](#DOCS_RESOURCES_GUILD/guild-object-verification-level) | +| default_message_notifications | ?integer | default [message notification level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) | +| explicit_content_filter | ?integer | [explicit content filter level](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) | +| afk_channel_id | ?snowflake | id for afk channel | +| afk_timeout | integer | afk timeout in seconds | +| icon | ?[image data](#DOCS_REFERENCE/image-data) | base64 1024x1024 png/jpeg/gif image for the guild icon (can be animated gif when the server has the `ANIMATED_ICON` feature) | +| owner_id | snowflake | user id to transfer guild ownership to (must be owner) | +| splash | ?[image data](#DOCS_REFERENCE/image-data) | base64 16:9 png/jpeg image for the guild splash (when the server has the `INVITE_SPLASH` feature) | +| discovery_splash | ?[image data](#DOCS_REFERENCE/image-data) | base64 16:9 png/jpeg image for the guild discovery splash (when the server has the `DISCOVERABLE` feature) | +| banner | ?[image data](#DOCS_REFERENCE/image-data) | base64 16:9 png/jpeg image for the guild banner (when the server has the `BANNER` feature) | +| system_channel_id | ?snowflake | the id of the channel where guild notices such as welcome messages and boost events are posted | +| system_channel_flags | integer | [system channel flags](#DOCS_RESOURCES_GUILD/guild-object-system-channel-flags) | +| rules_channel_id | ?snowflake | the id of the channel where Community guilds display rules and/or guidelines | +| public_updates_channel_id | ?snowflake | the id of the channel where admins and moderators of Community guilds receive notices from Discord | +| preferred_locale | ?string | the preferred [locale](#DOCS_REFERENCE/locales) of a Community guild used in server discovery and notices from Discord; defaults to "en-US" | +| features | array of [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) strings | enabled guild features | +| description | ?string | the description for the guild, if the guild is discoverable | +| premium_progress_bar_enabled | boolean | whether the guild's boost progress bar should be enabled. | ## Delete Guild % DELETE /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object} diff --git a/docs/resources/User.md b/docs/resources/User.md index 1ea1720680..25f05f9b35 100644 --- a/docs/resources/User.md +++ b/docs/resources/User.md @@ -35,7 +35,7 @@ There are other rules and restrictions not shared here for the sake of spam and | mfa_enabled? | boolean | whether the user has two factor enabled on their account | identify | | banner? | ?string | the user's [banner hash](#DOCS_REFERENCE/image-formatting) | identify | | accent_color? | ?integer | the user's banner color encoded as an integer representation of hexadecimal color code | identify | -| locale? | string | the user's chosen language option | identify | +| locale? | string | the user's chosen [language option](#DOCS_REFERENCE/locales) | identify | | verified? | boolean | whether the email on this account has been verified | email | | email? | ?string | the user's email | email | | flags? | integer | the [flags](#DOCS_RESOURCES_USER/user-object-user-flags) on a user's account | identify | From 4d2320f6aec93ee33582ffbe7ea22f3d93a9f6e7 Mon Sep 17 00:00:00 2001 From: Advaith Date: Wed, 12 Jan 2022 11:30:45 -0800 Subject: [PATCH 079/181] Document supported option types for autocomplete (#4318) --- docs/interactions/Application_Commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index a93b8f6f5a..f3ff0dae48 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -48,7 +48,7 @@ Application commands are commands that an application can register to Discord. T | channel_types? | array of [channel types](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | if the option is a channel type, the channels shown will be restricted to these types | | min_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the minimum value permitted | | max_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the maximum value permitted | -| autocomplete? \* | boolean | enable autocomplete interactions for this option | +| autocomplete? \* | boolean | if autocomplete interactions are enabled for this `STRING`, `INTEGER`, or `NUMBER` type option | \* `autocomplete` may not be set to true if `choices` are present. From 1283c44a8cd6c496bffdda6ff92a574c4cc43926 Mon Sep 17 00:00:00 2001 From: Advaith Date: Wed, 12 Jan 2022 17:10:26 -0800 Subject: [PATCH 080/181] Document thread invitable audit log change key (#4333) --- docs/resources/Audit_Log.md | 143 ++++++++++++++++++------------------ 1 file changed, 72 insertions(+), 71 deletions(-) diff --git a/docs/resources/Audit_Log.md b/docs/resources/Audit_Log.md index 84ceb93225..5f6f63fc9f 100644 --- a/docs/resources/Audit_Log.md +++ b/docs/resources/Audit_Log.md @@ -126,77 +126,78 @@ Whenever an admin action is performed on the API, an entry is added to the respe ###### Audit Log Change Key -| Name | Object Changed | Type | Description | -| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------- |---------------------------------------------------------------------------------------------- |-------------------------------------------------------------------------------------------------------------------------------------------------------- | -| afk_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | afk channel changed | -| afk_timeout | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | afk timeout duration changed | -| allow | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | a permission on a text or voice channel was allowed for a role | -| application_id | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | snowflake | application id of the added or removed webhook or bot | -| archived | [thread](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) | bool | thread is now archived/unarchived | -| asset | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | string | empty string | -| auto_archive_duration | [thread](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) | integer | auto archive duration changed | -| available | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | boolean | availability of sticker changed | -| avatar_hash | [user](#DOCS_RESOURCES_USER/user-object) | string | user avatar changed | -| banner_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | guild banner changed | -| bitrate | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | voice channel bitrate changed | -| channel_id | [invite](#DOCS_RESOURCES_INVITE/invite-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | snowflake | channel for invite code or guild scheduled event changed | -| code | [invite](#DOCS_RESOURCES_INVITE/invite-object) | string | invite code changed | -| color | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | integer | role color changed | -| communication_disabled_until | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | ISO8601 timestamp | member timeout state changed | -| deaf | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | boolean | user server deafened/undeafened | -| default_auto_archive_duration | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | default auto archive duration for newly created threads changed | -| default_message_notifications | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | default [message notification level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) changed | -| deny | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | a permission on a text or voice channel was denied for a role | -| description | [guild](#DOCS_RESOURCES_GUILD/guild-object) or [sticker](#DOCS_RESOURCES_STICKER/sticker-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | string | description changed | -| discovery_splash_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | discovery splash changed | -| enable_emoticons | [integration](#DOCS_RESOURCES_GUILD/integration-object) | boolean | integration emoticons enabled/disabled | -| entity_type | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer | entity type of guild scheduled event was changed | -| expire_behavior | [integration](#DOCS_RESOURCES_GUILD/integration-object) | integer | integration expiring subscriber behavior changed | -| expire_grace_period | [integration](#DOCS_RESOURCES_GUILD/integration-object) | integer | integration expire grace period changed | -| explicit_content_filter | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | change in [whose messages](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) are scanned and deleted for explicit content in the server | -| format_type | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | integer ([format type](#DOCS_RESOURCES_STICKER/sticker-object-sticker-format-types)) | format type of sticker changed | -| guild_id | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | snowflake | guild sticker is in changed | -| hoist | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | boolean | role is now displayed/no longer displayed separate from online users | -| icon_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) or [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | icon changed | -| id | any | snowflake | the id of the changed entity - sometimes used in conjunction with other keys | -| inviter_id | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | snowflake | person who created invite code changed | -| location | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | string | change in channel id for guild scheduled event | -| locked | [thread](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) | bool | thread is now locked/unlocked | -| max_age | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | how long invite code lasts changed | -| max_uses | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | change to max number of times invite code can be used | -| mentionable | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | boolean | role is now mentionable/unmentionable | -| mfa_level | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | two-factor auth requirement changed | -| mute | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | boolean | user server muted/unmuted | -| name | any | string | name changed | -| nick | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | string | user nickname changed | -| nsfw | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | boolean | channel nsfw restriction changed | -| owner_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | owner changed | -| permission_overwrites | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | array of [channel overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | permissions on a channel changed | -| permissions | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | [permissions](#DOCS_TOPICS_PERMISSIONS/permissions-bitwise-permission-flags) for a role changed | -| position | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | text or voice channel position changed | -| preferred_locale | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | preferred locale changed | -| privacy_level | [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer ([privacy level](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-privacy-level)) | privacy level of the stage instance changed | -| prune_delete_days | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | change in number of days after which inactive and role-unassigned members are kicked | -| public_updates_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the public updates channel changed | -| rate_limit_per_user | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | amount of seconds a user has to wait before sending another message changed | -| region | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | region changed | -| rules_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the rules channel changed | -| splash_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | invite splash page artwork changed | -| status | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer [(status)](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | status of guild scheduled event was changed | -| system_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the system channel changed | -| tags | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | string | related emoji of sticker changed | -| temporary | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | boolean | invite code is temporary/never expires | -| topic | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) or [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) | string | text channel topic or stage instance topic changed | -| type | any | integer or string | type of entity created | -| unicode_emoji | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | role unicode emoji changed | -| user_limit | [voice channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | new user limit in a voice channel | -| uses | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | number of times invite code used changed | -| vanity_url_code | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | guild invite vanity url changed | -| verification_level | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | required verification level changed | -| widget_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | channel id of the server widget changed | -| widget_enabled | [guild](#DOCS_RESOURCES_GUILD/guild-object) | boolean | server widget enabled/disable | -| \$add | [guild](#DOCS_RESOURCES_GUILD/guild-object) | array of partial [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | new role added | -| \$remove | [guild](#DOCS_RESOURCES_GUILD/guild-object) | array of partial [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | role removed | +| Name | Object Changed | Type | Description | +| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| afk_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | afk channel changed | +| afk_timeout | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | afk timeout duration changed | +| allow | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | a permission on a text or voice channel was allowed for a role | +| application_id | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | snowflake | application id of the added or removed webhook or bot | +| archived | [thread](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) | bool | thread is now archived/unarchived | +| asset | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | string | empty string | +| auto_archive_duration | [thread](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) | integer | auto archive duration changed | +| available | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | boolean | availability of sticker changed | +| avatar_hash | [user](#DOCS_RESOURCES_USER/user-object) | string | user avatar changed | +| banner_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | guild banner changed | +| bitrate | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | voice channel bitrate changed | +| channel_id | [invite](#DOCS_RESOURCES_INVITE/invite-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | snowflake | channel for invite code or guild scheduled event changed | +| code | [invite](#DOCS_RESOURCES_INVITE/invite-object) | string | invite code changed | +| color | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | integer | role color changed | +| communication_disabled_until | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | ISO8601 timestamp | member timeout state changed | +| deaf | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | boolean | user server deafened/undeafened | +| default_auto_archive_duration | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | default auto archive duration for newly created threads changed | +| default_message_notifications | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | default [message notification level](#DOCS_RESOURCES_GUILD/guild-object-default-message-notification-level) changed | +| deny | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | a permission on a text or voice channel was denied for a role | +| description | [guild](#DOCS_RESOURCES_GUILD/guild-object), [sticker](#DOCS_RESOURCES_STICKER/sticker-object), or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | string | description changed | +| discovery_splash_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | discovery splash changed | +| enable_emoticons | [integration](#DOCS_RESOURCES_GUILD/integration-object) | boolean | integration emoticons enabled/disabled | +| entity_type | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer | entity type of guild scheduled event was changed | +| expire_behavior | [integration](#DOCS_RESOURCES_GUILD/integration-object) | integer | integration expiring subscriber behavior changed | +| expire_grace_period | [integration](#DOCS_RESOURCES_GUILD/integration-object) | integer | integration expire grace period changed | +| explicit_content_filter | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | change in [whose messages](#DOCS_RESOURCES_GUILD/guild-object-explicit-content-filter-level) are scanned and deleted for explicit content in the server | +| format_type | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | integer ([format type](#DOCS_RESOURCES_STICKER/sticker-object-sticker-format-types)) | format type of sticker changed | +| guild_id | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | snowflake | guild sticker is in changed | +| hoist | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | boolean | role is now displayed/no longer displayed separate from online users | +| icon_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) or [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | icon changed | +| id | any | snowflake | the id of the changed entity - sometimes used in conjunction with other keys | +| invitable | [thread](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) | bool | private thread is now invitable/uninvitable | +| inviter_id | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | snowflake | person who created invite code changed | +| location | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | string | change in channel id for guild scheduled event | +| locked | [thread](#DOCS_RESOURCES_CHANNEL/thread-metadata-object) | bool | thread is now locked/unlocked | +| max_age | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | how long invite code lasts changed | +| max_uses | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | change to max number of times invite code can be used | +| mentionable | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | boolean | role is now mentionable/unmentionable | +| mfa_level | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | two-factor auth requirement changed | +| mute | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | boolean | user server muted/unmuted | +| name | any | string | name changed | +| nick | [member](#DOCS_RESOURCES_GUILD/guild-member-object) | string | user nickname changed | +| nsfw | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | boolean | channel nsfw restriction changed | +| owner_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | owner changed | +| permission_overwrites | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | array of [channel overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | permissions on a channel changed | +| permissions | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | [permissions](#DOCS_TOPICS_PERMISSIONS/permissions-bitwise-permission-flags) for a role changed | +| position | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | text or voice channel position changed | +| preferred_locale | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | preferred locale changed | +| privacy_level | [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) or [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer ([privacy level](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-privacy-level)) | privacy level of the stage instance changed | +| prune_delete_days | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | change in number of days after which inactive and role-unassigned members are kicked | +| public_updates_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the public updates channel changed | +| rate_limit_per_user | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | amount of seconds a user has to wait before sending another message changed | +| region | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | region changed | +| rules_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the rules channel changed | +| splash_hash | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | invite splash page artwork changed | +| status | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) | integer [(status)](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | status of guild scheduled event was changed | +| system_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | id of the system channel changed | +| tags | [sticker](#DOCS_RESOURCES_STICKER/sticker-object) | string | related emoji of sticker changed | +| temporary | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | boolean | invite code is temporary/never expires | +| topic | [channel](#DOCS_RESOURCES_CHANNEL/channel-object) or [stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object) | string | text channel topic or stage instance topic changed | +| type | any | integer or string | type of entity created | +| unicode_emoji | [role](#DOCS_TOPICS_PERMISSIONS/role-object) | string | role unicode emoji changed | +| user_limit | [voice channel](#DOCS_RESOURCES_CHANNEL/channel-object) | integer | new user limit in a voice channel | +| uses | [invite](#DOCS_RESOURCES_INVITE/invite-metadata-object) | integer | number of times invite code used changed | +| vanity_url_code | [guild](#DOCS_RESOURCES_GUILD/guild-object) | string | guild invite vanity url changed | +| verification_level | [guild](#DOCS_RESOURCES_GUILD/guild-object) | integer | required verification level changed | +| widget_channel_id | [guild](#DOCS_RESOURCES_GUILD/guild-object) | snowflake | channel id of the server widget changed | +| widget_enabled | [guild](#DOCS_RESOURCES_GUILD/guild-object) | boolean | server widget enabled/disable | +| \$add | [guild](#DOCS_RESOURCES_GUILD/guild-object) | array of partial [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | new role added | +| \$remove | [guild](#DOCS_RESOURCES_GUILD/guild-object) | array of partial [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | role removed | ###### Example Partial Role Object From 5b023e04b3bcc055b5be83ad0562862431620e4c Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Wed, 19 Jan 2022 18:36:36 +0000 Subject: [PATCH 081/181] Add stickers on preview (#4278) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Antonio Román --- docs/resources/Guild.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index a770ee9a43..e173259496 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -230,6 +230,7 @@ A partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object. Represents an Offl | approximate_member_count | integer | approximate number of members in this guild | | approximate_presence_count | integer | approximate number of online members in this guild | | description | ?string | the description for the guild, if the guild is discoverable | +| stickers | array of [sticker](#DOCS_RESOURCES_STICKER/sticker-object) objects | custom guild stickers | ###### Example Guild Preview @@ -254,7 +255,8 @@ A partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object. Represents an Offl ], "approximate_member_count": 60814, "approximate_presence_count": 20034, - "description": "The official place to report Discord Bugs!" + "description": "The official place to report Discord Bugs!", + "stickers": [] } ``` From a833b5c8eb6915c849596c0805e5662440be2160 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Wed, 19 Jan 2022 18:36:50 +0000 Subject: [PATCH 082/181] Error code 50086 (#4302) * Error code 50086 * Update docs/topics/Opcodes_and_Status_Codes.md Co-authored-by: Advaith * Update Opcodes_and_Status_Codes.md Co-authored-by: Advaith Co-authored-by: Ian Webster --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 44def7fbdb..0588cac60a 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -230,6 +230,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 50083 | Tried to perform an operation on an archived thread, such as editing a message or adding a user to the thread | | 50084 | Invalid thread notification settings | | 50085 | `before` value is earlier than the thread creation date | +| 50086 | Community server channels must be text channels | | 50095 | This server is not available in your location | | 50097 | This server needs monetization enabled in order to perform this action | | 50101 | This server needs more boosts to perform this action | From 8b2b1559c4b82f23421a5d74c2caf7005f9157f5 Mon Sep 17 00:00:00 2001 From: InvalidLenni <68335355+InvalidLenni@users.noreply.github.com> Date: Wed, 19 Jan 2022 19:37:41 +0100 Subject: [PATCH 083/181] Document stage discovery as deprecated (#4296) * Update Stage_Instance.md * Update Stage_Instance.md * Update Stage_Instance.md * Update docs/resources/Stage_Instance.md Co-authored-by: Almeida * Update docs/resources/Stage_Instance.md Co-authored-by: Jupith <51760248+Jupith@users.noreply.github.com> Co-authored-by: Almeida Co-authored-by: Jupith <51760248+Jupith@users.noreply.github.com> --- docs/resources/Stage_Instance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/resources/Stage_Instance.md b/docs/resources/Stage_Instance.md index 8124a33a62..c24000bd7e 100644 --- a/docs/resources/Stage_Instance.md +++ b/docs/resources/Stage_Instance.md @@ -13,13 +13,13 @@ A _Stage Instance_ holds information about a live stage. | channel_id | snowflake | The id of the associated Stage channel | | topic | string | The topic of the Stage instance (1-120 characters) | | privacy_level | integer | The [privacy level](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-privacy-level) of the Stage instance | -| discoverable_disabled | boolean | Whether or not Stage Discovery is disabled | +| discoverable_disabled | boolean | Whether or not Stage Discovery is disabled (deprecated) | ###### Privacy Level | Level | Value | Description | | ---------- | ----- | ------------------------------------------------------------------- | -| PUBLIC | 1 | The Stage instance is visible publicly, such as on Stage Discovery. | +| PUBLIC | 1 | The Stage instance is visible publicly. (deprecated) | | GUILD_ONLY | 2 | The Stage instance is visible to only guild members. | ###### Example Stage Instance From 13e45f4d51ab3e35c6ce4698718874f1fd277b20 Mon Sep 17 00:00:00 2001 From: Suspense Date: Wed, 19 Jan 2022 19:37:50 +0100 Subject: [PATCH 084/181] Clarification on channel icons (#4315) * specify group dms * Update docs/resources/Channel.md Co-authored-by: Zeyla Hellyer --- docs/resources/Channel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 0aca11e89a..de1fdc1649 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -21,7 +21,7 @@ Represents a guild or DM channel within Discord. | user_limit? | integer | the user limit of the voice channel | | rate_limit_per_user?\* | integer | amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected | | recipients? | array of [user](#DOCS_RESOURCES_USER/user-object) objects | the recipients of the DM | -| icon? | ?string | icon hash | +| icon? | ?string | icon hash of the group DM | | owner_id? | snowflake | id of the creator of the group DM or thread | | application_id? | snowflake | application id of the group DM creator if it is bot-created | | parent_id? | ?snowflake | for guild channels: id of the parent category for a channel (each parent category can contain up to 50 channels), for threads: id of the text channel this thread was created | From 50919067cb7c7289c02a16db2168153d9ab51da3 Mon Sep 17 00:00:00 2001 From: vcokltfre Date: Wed, 19 Jan 2022 18:38:33 +0000 Subject: [PATCH 085/181] add nextcord to libs (#4343) --- docs/topics/Community_Resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Community_Resources.md b/docs/topics/Community_Resources.md index 671c276423..988369c672 100644 --- a/docs/topics/Community_Resources.md +++ b/docs/topics/Community_Resources.md @@ -47,6 +47,7 @@ Many of these libraries are represented in the [unofficial, community-driven Dis | [discord.py](https://github.com/Rapptz/discord.py) | Python | | [disco](https://github.com/b1naryth1ef/disco) | Python | | [hikari](https://github.com/hikari-py/hikari) | Python | +| [nextcord](https://github.com/nextcord/nextcord) | Python | | [discordrb](https://github.com/shardlab/discordrb) | Ruby | | [discord-rs](https://github.com/SpaceManiac/discord-rs) | Rust | | [Serenity](https://github.com/serenity-rs/serenity) | Rust | From e0e6e0dde70241566399cab6cc5d1effb331acfa Mon Sep 17 00:00:00 2001 From: GoldenAngel <50855202+GoldenAngel2@users.noreply.github.com> Date: Wed, 19 Jan 2022 10:40:36 -0800 Subject: [PATCH 086/181] Removes the endpoints authorization note for receiving & responding (#4349) * Removes the endpoints authorization note * re-add the endpoints header, just remove the note --- docs/interactions/Receiving_and_Responding.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 99ab249214..91f83c0dc6 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -325,9 +325,6 @@ We highly recommend checking out our [Community Resources](#DOCS_TOPICS_COMMUNIT ### Endpoints -> info -> For authorization, all endpoints take either a [bot token](#DOCS_REFERENCE/authentication) or [client credentials token](#DOCS_TOPICS_OAUTH2/client-credentials-grant) for your application. - ## Create Interaction Response % POST /interactions/{interaction.id#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/callback Create a response to an Interaction from the gateway. Takes an [interaction response](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object). From 00a0ae27c22b257ca1a154ec25e17bd3fffb80ec Mon Sep 17 00:00:00 2001 From: caneleex Date: Wed, 19 Jan 2022 19:40:55 +0100 Subject: [PATCH 087/181] document the required permission for retrieving the welcome screen when disabled (#4344) --- docs/resources/Guild.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index e173259496..4fe8b66cb8 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -1072,7 +1072,7 @@ Returns a PNG image widget for the guild. Requires no permissions or authenticat ## Get Guild Welcome Screen % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/welcome-screen -Returns the [Welcome Screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object for the guild. +Returns the [Welcome Screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object for the guild. Requires the `MANAGE_GUILD` permission. ## Modify Guild Welcome Screen % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/welcome-screen From c7501f10a0acaec4f77b5ddc6dd9139c5509ef16 Mon Sep 17 00:00:00 2001 From: Izhar Ahmad <54180221+nerdguyahmad@users.noreply.github.com> Date: Wed, 19 Jan 2022 23:43:35 +0500 Subject: [PATCH 088/181] Document X-Audit-Log-Reason on webhook endpoints. (#4276) * Document X-Audit-Log-Reason on webhook endpoints. --- docs/resources/Webhook.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index 31f7677630..8d94c47641 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -103,6 +103,9 @@ Create a new webhook. Requires the `MANAGE_WEBHOOKS` permission. Returns a [webh - Webhook names cannot be: 'clyde' +> info +> This endpoint supports the `X-Audit-Log-Reason` header. + ###### JSON Params | Field | Type | Description | @@ -133,6 +136,9 @@ Modify a webhook. Requires the `MANAGE_WEBHOOKS` permission. Returns the updated > info > All parameters to this endpoint are optional +> info +> This endpoint supports the `X-Audit-Log-Reason` header. + ###### JSON Params | Field | Type | Description | @@ -149,6 +155,9 @@ Same as above, except this call does not require authentication, does not accept Delete a webhook permanently. Requires the `MANAGE_WEBHOOKS` permission. Returns a `204 No Content` response on success. +> info +> This endpoint supports the `X-Audit-Log-Reason` header. + ## Delete Webhook with Token % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object} Same as above, except this call does not require authentication. From f0bb955313a4dfddb3548ea8ce74c6f82f669c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Wed, 19 Jan 2022 19:47:18 +0100 Subject: [PATCH 089/181] Document behavior of CONNECT permission (#4291) Closes #1522 --- docs/topics/Permissions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/topics/Permissions.md b/docs/topics/Permissions.md index e35c01a2a4..eae9915d7a 100644 --- a/docs/topics/Permissions.md +++ b/docs/topics/Permissions.md @@ -163,6 +163,8 @@ Permissions in Discord are sometimes implicitly denied or allowed based on logic Denying `SEND_MESSAGES` implicitly denies `MENTION_EVERYONE`, `SEND_TTS_MESSAGES`, `ATTACH_FILES`, and `EMBED_LINKS`. Again, they are not explicitly denied when doing permissions calculations, but they are ignored because the user cannot do the base action of sending messages. +For voice and stage channels, denying the `CONNECT` permission also implicitly denies other permissions such as `MANAGE_CHANNEL`. + There may be other cases in which certain permissions implicitly deny or allow other permissions. In all cases, it is based on logical conclusions about how a user with certain permissions should or should not interact with Discord. ## Inherited Permissions (Threads) From 5868a2b4f1d4e385d4c11cd27dca06fa92418111 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Wed, 19 Jan 2022 19:48:37 +0100 Subject: [PATCH 090/181] Document filename restrictions for attachment URLs (#4292) * Document filename restrictions for attachment URLs Closes #2102 * Dashes are also supported --- docs/Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference.md b/docs/Reference.md index 0539a250ed..768882da92 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -347,7 +347,7 @@ All `files[n]` parameters must include a valid `Content-Disposition` subpart hea The file upload limit applies to the entire request, not individual files in a request. This limit depends on the **Boost Tier** of a Guild and is 8 MiB by default. -Images can also be referenced in embeds using the `attachment://filename` URL. An example payload is provided below. +Images can also be referenced in embeds using the `attachment://filename` URL. The `filename` for these URLs must be ASCII alphanumeric with underscores, dashes, or dots. An example payload is provided below. ### Editing Message Attachments From 0a91423248b7de682515021de03d29d56f36b4f0 Mon Sep 17 00:00:00 2001 From: Lilly Rose Berner Date: Wed, 19 Jan 2022 20:12:25 +0100 Subject: [PATCH 091/181] Document the ability to parse dynamic images for rpc activities (#4317) --- docs/topics/Gateway.md | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 503202da9e..a1f87b34fd 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -1365,12 +1365,21 @@ Active sessions are indicated with an "online", "idle", or "dnd" string per plat ###### Activity Assets -| Field | Type | Description | -|--------------|--------|-------------------------------------------------------------------| -| large_image? | string | the id for a large asset of the activity, usually a snowflake | -| large_text? | string | text displayed when hovering over the large image of the activity | -| small_image? | string | the id for a small asset of the activity, usually a snowflake | -| small_text? | string | text displayed when hovering over the small image of the activity | +| Field | Type | Description | +|--------------|--------|---------------------------------------------------------------------------------------| +| large_image? | string | see [Activity Asset Image](#DOCS_TOPICS_GATEWAY/activity-object-activity-asset-image) | +| large_text? | string | text displayed when hovering over the large image of the activity | +| small_image? | string | see [Activity Asset Image](#DOCS_TOPICS_GATEWAY/activity-object-activity-asset-image) | +| small_text? | string | text displayed when hovering over the small image of the activity | + +###### Activity Asset Image + +Activity asset images are arbitrary strings which usually contain snowflake IDs or prefixed image IDs. Treat data within this field carefully, as it is user-specifiable and not sanitized. + +| Type | Format | Image URL | +|-------------------|--------------------------|----------------------------------------------------------------------------| +| Application Asset | `{application_asset_id}` | see [Application Asset Image Formatting](#DOCS_REFERENCE/image-formatting) | +| Media Proxy Image | `mp:{image_id}` | `https://media.discordapp.net/{image_id}` | ###### Activity Secrets From e0e2f21821783f738ca5d3415fa0911209f6a253 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Wed, 19 Jan 2022 19:20:28 +0000 Subject: [PATCH 092/181] Adds get guild widget structure (#4297) * Adds get guild widget structure Closes issue #2517 * Update Guild.md * Update docs/resources/Guild.md Co-authored-by: James Walston <41456914+goverfl0w@users.noreply.github.com> * Move object beside the rest * Fix links * Switch warn location * Link to widget settings Co-authored-by: Kanghee Park * More settings linking Co-authored-by: Kanghee Park * Link to widget object * Pluralize Co-authored-by: James Walston <41456914+goverfl0w@users.noreply.github.com> Co-authored-by: Kanghee Park --- docs/resources/Guild.md | 94 ++++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 39 deletions(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index 4fe8b66cb8..efe8b404db 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -260,16 +260,16 @@ A partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object. Represents an Offl } ``` -### Guild Widget Object +### Guild Widget Settings Object -###### Guild Widget Structure +###### Guild Widget Settings Structure | Field | Type | Description | | ---------- | ---------- | ----------------------------- | | enabled | boolean | whether the widget is enabled | | channel_id | ?snowflake | the widget channel id | -###### Example Guild Widget +###### Example Guild Widget Settings ```json { @@ -278,6 +278,55 @@ A partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object. Represents an Offl } ``` +### Get Guild Widget Object + +###### Get Guild Widget Structure + +| Field | Type | Description | +| -------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| id | snowflake | guild id | +| name | string | guild name (2-100 characters) | +| instant_invite | ?string | instant invite for the guilds specified widget invite channel | +| channels | array of partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | voice and stage channels which are accessible by @everyone | +| members | array of partial [user](#DOCS_RESOURCES_USER/user-object) objects | special widget user objects that includes users presence (Limit 100) | +| presence_count | integer | number of online members in this guild | + +> warn +> The fields `id`, `discriminator` and `avatar` are anonymized to prevent abuse. + +###### Example Get Guild Widget + +```json +{ + "id": "290926798626999250", + "name": "Test Server", + "instant_invite": "https://discord.com/invite/abcdefg", + "channels": [ + { + "id": "705216630279993882", + "name": "elephant", + "position": 2 + }, + { + "id": "669583461748992190", + "name": "groovy-music", + "position": 1 + } + ], + "members": [ + { + "id": "0", + "username": "1234", + "discriminator": "0000", + "avatar": null, + "status": "online", + "avatar_url": "https://cdn.discordapp.com/widget-avatars/FfvURgcr3Za92K3JtoCppqnYMppMDc5B-Rll74YrGCU/C-1DyBZPQ6t5q2RuATFuMFgq0_uEMZVzd_6LbGN_uJKvZflobA9diAlTjhf6CAESLLeTuu4dLuHFWOb_PNLteooNfhC4C6k5QgAGuxEOP12tVVVCvX6t64k14PMXZrGTDq8pWZhukP40Wg" + } + ], + "presence_count": 1 +} +``` + ### Guild Member Object ###### Guild Member Structure @@ -988,51 +1037,18 @@ Delete the attached [integration](#DOCS_RESOURCES_GUILD/integration-object) obje ## Get Guild Widget Settings % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/widget -Returns a [guild widget](#DOCS_RESOURCES_GUILD/guild-widget-object) object. Requires the `MANAGE_GUILD` permission. +Returns a [guild widget settings](#DOCS_RESOURCES_GUILD/guild-widget-settings-object) object. Requires the `MANAGE_GUILD` permission. ## Modify Guild Widget % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/widget -Modify a [guild widget](#DOCS_RESOURCES_GUILD/guild-widget-object) object for the guild. All attributes may be passed in with JSON and modified. Requires the `MANAGE_GUILD` permission. Returns the updated [guild widget](#DOCS_RESOURCES_GUILD/guild-widget-object) object. +Modify a [guild widget settings](#DOCS_RESOURCES_GUILD/guild-widget-settings-object) object for the guild. All attributes may be passed in with JSON and modified. Requires the `MANAGE_GUILD` permission. Returns the updated [guild widget](#DOCS_RESOURCES_GUILD/guild-widget-settings-object) object. > info > This endpoint supports the `X-Audit-Log-Reason` header. ## Get Guild Widget % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/widget.json -Returns the widget for the guild. - -###### Example Get Guild Widget - -```json -{ - "id": "290926798626999250", - "name": "Test Server", - "instant_invite": "https://discord.com/invite/abcdefg", - "channels": [ - { - "id": "705216630279993882", - "name": "elephant", - "position": 2 - }, - { - "id": "669583461748992190", - "name": "groovy-music", - "position": 1 - } - ], - "members": [ - { - "id": "0", - "username": "1234", - "discriminator": "0000", - "avatar": null, - "status": "online", - "avatar_url": "https://cdn.discordapp.com/widget-avatars/FfvURgcr3Za92K3JtoCppqnYMppMDc5B-Rll74YrGCU/C-1DyBZPQ6t5q2RuATFuMFgq0_uEMZVzd_6LbGN_uJKvZflobA9diAlTjhf6CAESLLeTuu4dLuHFWOb_PNLteooNfhC4C6k5QgAGuxEOP12tVVVCvX6t64k14PMXZrGTDq8pWZhukP40Wg" - } - ], - "presence_count": 1 -} -``` +Returns the [widget](#DOCS_RESOURCES_GUILD/get-guild-widget-object) for the guild. ## Get Guild Vanity URL % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/vanity-url From 95816a58aec3b04798e77079dee2b271d243ecdd Mon Sep 17 00:00:00 2001 From: devsnek Date: Wed, 19 Jan 2022 16:22:03 -0600 Subject: [PATCH 093/181] document message create flags (#4356) --- docs/resources/Channel.md | 1 + docs/resources/Webhook.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index de1fdc1649..ca989a2c53 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -908,6 +908,7 @@ Files must be attached using a `multipart/form-data` body as described in [Uploa | files[n] \* | file contents | the contents of the file being sent | one of content, file, embed(s), sticker_ids | | payload_json \* | string | JSON encoded body of non-file params | `multipart/form-data` only | | attachments \* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | +| flags | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) | false | \* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index 8d94c47641..f3586016a2 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -190,6 +190,7 @@ Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on attac | files[n] \*\* | file contents | the contents of the file being sent | one of content, file, embeds | | payload_json \*\*| string | JSON encoded body of non-file params | `multipart/form-data` only | | attachments \*\* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | +| flags | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) | false | \* Requires an application-owned webhook. From 53ee0109b874bde5ec2316379bf266bb332630a0 Mon Sep 17 00:00:00 2001 From: AJ Palkovic Date: Wed, 19 Jan 2022 14:24:13 -0800 Subject: [PATCH 094/181] Document thread.create_timestamp --- docs/resources/Channel.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index ca989a2c53..5e5d6ed129 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -518,6 +518,7 @@ The thread metadata object contains a number of thread-specific channel fields t | archive_timestamp | ISO8601 timestamp | timestamp when the thread's archive status was last changed, used for calculating recent activity | | locked | boolean | whether the thread is locked; when a thread is locked, only users with MANAGE_THREADS can unarchive it | | invitable? | boolean | whether non-moderators can add other non-moderators to a thread; only available on private threads | +| create_timestamp? | ISO8601 timestamp | timestamp when the thread was created; only populated for threads created after 2022-01-09 | ### Thread Member Object From b3cc70e1d053464a962787e1637c10ddb4d83a0f Mon Sep 17 00:00:00 2001 From: Suspense Date: Tue, 25 Jan 2022 19:43:28 +0100 Subject: [PATCH 095/181] clarify embed character limit (#4379) --- docs/resources/Channel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 5e5d6ed129..aaf96f0bec 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -779,7 +779,7 @@ All of the following limits are measured inclusively. Leading and trailing white | [footer.text](#DOCS_RESOURCES_CHANNEL/embed-object-embed-footer-structure) | 2048 characters | | [author.name](#DOCS_RESOURCES_CHANNEL/embed-object-embed-author-structure) | 256 characters | -Additionally, the characters in all `title`, `description`, `field.name`, `field.value`, `footer.text`, and `author.name` fields must not exceed 6000 characters in total. Violating any of these constraints will result in a `Bad Request` response. +Additionally, the combined sum of characters in all `title`, `description`, `field.name`, `field.value`, `footer.text`, and `author.name` fields across all embeds attached to a message must not exceed 6000 characters. Violating any of these constraints will result in a `Bad Request` response. ## Get Channel % GET /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object} From 030e21c95566902d3998a07d05dc0f9707b7cb18 Mon Sep 17 00:00:00 2001 From: Lala Sabathil Date: Tue, 25 Jan 2022 19:43:56 +0100 Subject: [PATCH 096/181] Add Pycord to Community Resources (#4355) --- docs/topics/Community_Resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Community_Resources.md b/docs/topics/Community_Resources.md index 988369c672..08301cc5c7 100644 --- a/docs/topics/Community_Resources.md +++ b/docs/topics/Community_Resources.md @@ -48,6 +48,7 @@ Many of these libraries are represented in the [unofficial, community-driven Dis | [disco](https://github.com/b1naryth1ef/disco) | Python | | [hikari](https://github.com/hikari-py/hikari) | Python | | [nextcord](https://github.com/nextcord/nextcord) | Python | +| [pycord](https://github.com/Pycord-Development/pycord) | Python | | [discordrb](https://github.com/shardlab/discordrb) | Ruby | | [discord-rs](https://github.com/SpaceManiac/discord-rs) | Rust | | [Serenity](https://github.com/serenity-rs/serenity) | Rust | From 6967f903bb8c09c228e07957d9fddba3cdcc4d47 Mon Sep 17 00:00:00 2001 From: EQUENOS <50338932+EQUENOS@users.noreply.github.com> Date: Tue, 25 Jan 2022 21:44:20 +0300 Subject: [PATCH 097/181] One more python library (#3906) I don't know if discord.py forks are allowed in this list, so I decided to try adding this one. [disnake](https://github.com/EQUENOS/disnake) is a fork of discord.py. There're implementations of context menus and slash commands with fastapi-like syntax. Here's a basic example of a slash command with one option: ```py import disnake from disnake.ext import commands bot = commands.Bot(command_prefix='$', test_guilds=[...]) @bot.slash_command() async def avatar( inter: disnake.ApplicationCommandInteraction, user: disnake.User, ): await inter.response.send_message(user.display_avatar.url) bot.run("BOT_TOKEN") ``` **Links:** - [disnake GitHub](https://github.com/EQUENOS/disnake) - [disnake Docs](https://disnake.readthedocs.io/en/latest/index.html) - [Slash Command Guide](https://disnake.readthedocs.io/en/latest/ext/commands/slash_commands.html) - [Changes since discord.py 2.0](https://disnake.readthedocs.io/en/latest/whats_new.html#changelog) --- docs/topics/Community_Resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Community_Resources.md b/docs/topics/Community_Resources.md index 08301cc5c7..b9d92b6b14 100644 --- a/docs/topics/Community_Resources.md +++ b/docs/topics/Community_Resources.md @@ -46,6 +46,7 @@ Many of these libraries are represented in the [unofficial, community-driven Dis | [RestCord](https://www.restcord.com/) | PHP | | [discord.py](https://github.com/Rapptz/discord.py) | Python | | [disco](https://github.com/b1naryth1ef/disco) | Python | +| [disnake](https://github.com/EQUENOS/disnake) | Python | | [hikari](https://github.com/hikari-py/hikari) | Python | | [nextcord](https://github.com/nextcord/nextcord) | Python | | [pycord](https://github.com/Pycord-Development/pycord) | Python | From 1be60650a7bd72c65bc72352f74dd28561eae175 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Tue, 25 Jan 2022 18:45:54 +0000 Subject: [PATCH 098/181] Adds error 50068 (#4366) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 0588cac60a..6a1a5928ea 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -224,6 +224,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 50046 | Invalid file uploaded | | 50054 | Cannot self-redeem this gift | | 50055 | Invalid Guild | +| 50068 | Invalid message type | | 50070 | Payment source required to redeem gift | | 50074 | Cannot delete a channel required for Community guilds | | 50081 | Invalid sticker sent | From 4ee9d48fbe06da5687a62b88a03cd63728b34de1 Mon Sep 17 00:00:00 2001 From: SQKo <87897282+SQKo@users.noreply.github.com> Date: Wed, 26 Jan 2022 01:47:24 +0700 Subject: [PATCH 099/181] Fix typo in Gateway.md (#4372) Message Reaction Remove Emoji sub section missed the "Event Field" in header --- docs/topics/Gateway.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index a1f87b34fd..a6d616c248 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -1261,7 +1261,7 @@ Sent when a user explicitly removes all reactions from a message. Sent when a bot removes all instances of a given emoji from the reactions of a message. -###### Message Reaction Remove Emoji +###### Message Reaction Remove Emoji Event Fields | Field | Type | Description | |------------|------------------------------------------------------------|----------------------------| From a4be17f58d229fd10d8e4587f76941711af8009a Mon Sep 17 00:00:00 2001 From: Advaith Date: Tue, 25 Jan 2022 10:47:58 -0800 Subject: [PATCH 100/181] Document error code 30046 (old message edit rate limit) (#4381) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 6a1a5928ea..f9c59e662e 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -182,6 +182,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 30039 | Maximum number of stickers reached | | 30040 | Maximum number of prune requests has been reached. Try again later | | 30042 | Maximum number of guild widget settings updates has been reached. Try again later | +| 30046 | Maximum number of edits to messages older than 1 hour reached. Try again later | | 40001 | Unauthorized. Provide a valid token and try again | | 40002 | You need to verify your account in order to perform this action | | 40003 | You are opening direct messages too fast | From 1d39b02ca8dcc54d33316cc95e6eccfb8c7725cc Mon Sep 17 00:00:00 2001 From: Advaith Date: Tue, 25 Jan 2022 10:52:26 -0800 Subject: [PATCH 101/181] Document what message flags can be sent (#4357) --- docs/interactions/Receiving_and_Responding.md | 24 ++++++---------- docs/resources/Channel.md | 28 +++++++++---------- docs/resources/Webhook.md | 26 ++++++++--------- 3 files changed, 36 insertions(+), 42 deletions(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 91f83c0dc6..61202a41b6 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -181,15 +181,15 @@ There are a number of ways you can respond to an interaction: Not all message fields are currently supported. -| Name | Type | Description | -| ----------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| tts? | boolean | is the response TTS | -| content? | string | message content | -| embeds? | array of [embeds](#DOCS_RESOURCES_CHANNEL/embed-object) | supports up to 10 embeds | -| allowed_mentions? | [allowed mentions](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | [allowed mentions](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) object | -| flags? | integer | [interaction callback data flags](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object-interaction-callback-data-flags) | -| components? | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) | message components | -| attachments? \* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | +| Name | Type | Description | +| ----------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| tts? | boolean | is the response TTS | +| content? | string | message content | +| embeds? | array of [embeds](#DOCS_RESOURCES_CHANNEL/embed-object) | supports up to 10 embeds | +| allowed_mentions? | [allowed mentions](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | [allowed mentions](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) object | +| flags? | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) (only `SUPPRESS_EMBEDS` and `EPHEMERAL` can be set) | +| components? | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) | message components | +| attachments? \* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | \* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. @@ -199,12 +199,6 @@ Not all message fields are currently supported. | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | | choices | array of [choices](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-choice-structure) | autocomplete choices (max of 25 choices) | -###### Interaction Callback Data Flags - -| Name | Value | Description | -| --------- | ------ | ---------------------------------------------- | -| EPHEMERAL | 1 << 6 | only the user receiving the message can see it | - > warn > While interaction responses and followups are webhooks, they respect @everyone's ability to ping @everyone / @here . Nonetheless if your application responds with user data, you should still use [`allowed_mentions`](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) to filter which mentions in the content actually ping. Other differences include the ability to send named links in the message content (`[text](url)`). diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index aaf96f0bec..d06226204e 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -896,20 +896,20 @@ Files must be attached using a `multipart/form-data` body as described in [Uploa ###### JSON/Form Params -| Field | Type | Description | Required | -| -------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------- | -| content | string | the message contents (up to 2000 characters) | one of content, file, embed(s), sticker_ids | -| tts | boolean | true if this is a TTS message | false | -| embeds | array of [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | embedded `rich` content (up to 6000 characters) | one of content, file, embed(s), sticker_ids | -| embed *(deprecated)* | [embed](#DOCS_RESOURCES_CHANNEL/embed-object) object | embedded `rich` content, deprecated in favor of `embeds` | one of content, file, embed(s), sticker_ids | -| allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | false | -| message_reference | [message reference](#DOCS_RESOURCES_CHANNEL/message-reference-object-message-reference-structure) | include to make your message a reply | false | -| components | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) objects | the components to include with the message | false | -| sticker_ids | array of snowflakes | IDs of up to 3 [stickers](#DOCS_RESOURCES_STICKER/sticker-object) in the server to send in the message | one of content, file, embed(s), sticker_ids | -| files[n] \* | file contents | the contents of the file being sent | one of content, file, embed(s), sticker_ids | -| payload_json \* | string | JSON encoded body of non-file params | `multipart/form-data` only | -| attachments \* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | -| flags | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) | false | +| Field | Type | Description | Required | +| -------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | +| content | string | the message contents (up to 2000 characters) | one of content, file, embed(s), sticker_ids | +| tts | boolean | true if this is a TTS message | false | +| embeds | array of [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | embedded `rich` content (up to 6000 characters) | one of content, file, embed(s), sticker_ids | +| embed *(deprecated)* | [embed](#DOCS_RESOURCES_CHANNEL/embed-object) object | embedded `rich` content, deprecated in favor of `embeds` | one of content, file, embed(s), sticker_ids | +| allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | false | +| message_reference | [message reference](#DOCS_RESOURCES_CHANNEL/message-reference-object-message-reference-structure) | include to make your message a reply | false | +| components | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) objects | the components to include with the message | false | +| sticker_ids | array of snowflakes | IDs of up to 3 [stickers](#DOCS_RESOURCES_STICKER/sticker-object) in the server to send in the message | one of content, file, embed(s), sticker_ids | +| files[n] \* | file contents | the contents of the file being sent | one of content, file, embed(s), sticker_ids | +| payload_json \* | string | JSON encoded body of non-file params | `multipart/form-data` only | +| attachments \* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | +| flags | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) (only `SUPPRESS_EMBEDS` can be set) | false | \* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index f3586016a2..7feb9e649a 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -178,19 +178,19 @@ Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on attac ###### JSON/Form Params -| Field | Type | Description | Required | -| ---------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------ | ---------------------------- | -| content | string | the message contents (up to 2000 characters) | one of content, file, embeds | -| username | string | override the default username of the webhook | false | -| avatar_url | string | override the default avatar of the webhook | false | -| tts | boolean | true if this is a TTS message | false | -| embeds | array of up to 10 [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | embedded `rich` content | one of content, file, embeds | -| allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | false | -| components \* | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | the components to include with the message | false | -| files[n] \*\* | file contents | the contents of the file being sent | one of content, file, embeds | -| payload_json \*\*| string | JSON encoded body of non-file params | `multipart/form-data` only | -| attachments \*\* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | -| flags | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) | false | +| Field | Type | Description | Required | +| ---------------- | ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | +| content | string | the message contents (up to 2000 characters) | one of content, file, embeds | +| username | string | override the default username of the webhook | false | +| avatar_url | string | override the default avatar of the webhook | false | +| tts | boolean | true if this is a TTS message | false | +| embeds | array of up to 10 [embed](#DOCS_RESOURCES_CHANNEL/embed-object) objects | embedded `rich` content | one of content, file, embeds | +| allowed_mentions | [allowed mention object](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) | allowed mentions for the message | false | +| components \* | array of [message component](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | the components to include with the message | false | +| files[n] \*\* | file contents | the contents of the file being sent | one of content, file, embeds | +| payload_json \*\*| string | JSON encoded body of non-file params | `multipart/form-data` only | +| attachments \*\* | array of partial [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | attachment objects with filename and description | false | +| flags | integer | [message flags](#DOCS_RESOURCES_CHANNEL/message-object-message-flags) combined as a [bitfield](https://en.wikipedia.org/wiki/Bit_field) (only `SUPPRESS_EMBEDS` can be set) | false | \* Requires an application-owned webhook. From 56cea9462fae6a9b6399e5224b090dc2b68a77e0 Mon Sep 17 00:00:00 2001 From: SQKo <87897282+SQKo@users.noreply.github.com> Date: Wed, 26 Jan 2022 01:55:23 +0700 Subject: [PATCH 102/181] Document partial member data in message interaction object (#4354) --- docs/interactions/Receiving_and_Responding.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 61202a41b6..4c903f404d 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -90,6 +90,7 @@ This is sent on the [message object](#DOCS_RESOURCES_CHANNEL/message-object) whe | type | [interaction type](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object-interaction-type) | the type of interaction | | name | string | the name of the [application command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-structure) | | user | [user object](#DOCS_RESOURCES_USER/user-object) | the user who invoked the interaction | +| member? | [partial member](#DOCS_RESOURCES_GUILD/guild-member-object) object | the member who invoked the interaction in the guild | ## Interactions and Bot Users From 2abc407c7a69ba6af98bc57087080804710f6b18 Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Tue, 25 Jan 2022 10:58:03 -0800 Subject: [PATCH 103/181] fix url --- docs/topics/Community_Resources.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Community_Resources.md b/docs/topics/Community_Resources.md index b9d92b6b14..6353991443 100644 --- a/docs/topics/Community_Resources.md +++ b/docs/topics/Community_Resources.md @@ -46,7 +46,7 @@ Many of these libraries are represented in the [unofficial, community-driven Dis | [RestCord](https://www.restcord.com/) | PHP | | [discord.py](https://github.com/Rapptz/discord.py) | Python | | [disco](https://github.com/b1naryth1ef/disco) | Python | -| [disnake](https://github.com/EQUENOS/disnake) | Python | +| [disnake](https://github.com/DisnakeDev/disnake) | Python | | [hikari](https://github.com/hikari-py/hikari) | Python | | [nextcord](https://github.com/nextcord/nextcord) | Python | | [pycord](https://github.com/Pycord-Development/pycord) | Python | From 2d13f670b988da3be4e7aea98c74496701be3762 Mon Sep 17 00:00:00 2001 From: Advaith Date: Tue, 25 Jan 2022 11:05:32 -0800 Subject: [PATCH 104/181] Document message flag `FAILED_TO_MENTION_SOME_ROLES_IN_THREAD` (#4282) --- docs/resources/Channel.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index d06226204e..26750b2ceb 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -332,16 +332,17 @@ Represents a message sent in a channel within Discord. ###### Message Flags -| Flag | Value | Description | -|------------------------|--------|-----------------------------------------------------------------------------------| -| CROSSPOSTED | 1 << 0 | this message has been published to subscribed channels (via Channel Following) | -| IS_CROSSPOST | 1 << 1 | this message originated from a message in another channel (via Channel Following) | -| SUPPRESS_EMBEDS | 1 << 2 | do not include any embeds when serializing this message | -| SOURCE_MESSAGE_DELETED | 1 << 3 | the source message for this crosspost has been deleted (via Channel Following) | -| URGENT | 1 << 4 | this message came from the urgent message system | -| HAS_THREAD | 1 << 5 | this message has an associated thread, with the same id as the message | -| EPHEMERAL | 1 << 6 | this message is only visible to the user who invoked the Interaction | -| LOADING | 1 << 7 | this message is an Interaction Response and the bot is "thinking" | +| Flag | Value | Description | +|----------------------------------------|--------|-----------------------------------------------------------------------------------| +| CROSSPOSTED | 1 << 0 | this message has been published to subscribed channels (via Channel Following) | +| IS_CROSSPOST | 1 << 1 | this message originated from a message in another channel (via Channel Following) | +| SUPPRESS_EMBEDS | 1 << 2 | do not include any embeds when serializing this message | +| SOURCE_MESSAGE_DELETED | 1 << 3 | the source message for this crosspost has been deleted (via Channel Following) | +| URGENT | 1 << 4 | this message came from the urgent message system | +| HAS_THREAD | 1 << 5 | this message has an associated thread, with the same id as the message | +| EPHEMERAL | 1 << 6 | this message is only visible to the user who invoked the Interaction | +| LOADING | 1 << 7 | this message is an Interaction Response and the bot is "thinking" | +| FAILED_TO_MENTION_SOME_ROLES_IN_THREAD | 1 << 8 | this message failed to mention some roles and add their members to the thread | ###### Example Message From dfb7310314dbe4446ce386c3730957be50015d7d Mon Sep 17 00:00:00 2001 From: Lala Sabathil Date: Tue, 25 Jan 2022 22:25:51 +0100 Subject: [PATCH 105/181] Document Scheduled Event Covers (#4380) Co-authored-by: Advaith --- docs/Reference.md | 39 +++++++++++++------------ docs/resources/Guild_Scheduled_Event.md | 35 ++++++++++++---------- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/docs/Reference.md b/docs/Reference.md index 768882da92..cde1c71b8b 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -301,25 +301,26 @@ Discord uses ids and hashes to render images in the client. These hashes can be ###### CDN Endpoints -| Type | Path | Supports | -|------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------| -| Custom Emoji | emojis/[emoji_id](#DOCS_RESOURCES_EMOJI/emoji-object).png | PNG, JPEG, WebP, GIF | -| Guild Icon | icons/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/[guild_icon](#DOCS_RESOURCES_GUILD/guild-object).png \* | PNG, JPEG, WebP, GIF | -| Guild Splash | splashes/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/[guild_splash](#DOCS_RESOURCES_GUILD/guild-object).png | PNG, JPEG, WebP | -| Guild Discovery Splash | discovery-splashes/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/[guild_discovery_splash](#DOCS_RESOURCES_GUILD/guild-object).png | PNG, JPEG, WebP | -| Guild Banner | banners/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/[guild_banner](#DOCS_RESOURCES_GUILD/guild-object).png | PNG, JPEG, WebP | -| User Banner | banners/[user_id](#DOCS_RESOURCES_USER/user-object)/[user_banner](#DOCS_RESOURCES_USER/user-object).png \* | PNG, JPEG, WebP, GIF | -| Default User Avatar | embed/avatars/[user_discriminator](#DOCS_RESOURCES_USER/user-object).png \*\* \*\*\* | PNG | -| User Avatar | avatars/[user_id](#DOCS_RESOURCES_USER/user-object)/[user_avatar](#DOCS_RESOURCES_USER/user-object).png \* | PNG, JPEG, WebP, GIF | -| Guild Member Avatar | guilds/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/users/[user_id](#DOCS_RESOURCES_USER/user-object)/avatars/[member_avatar](#DOCS_RESOURCES_GUILD/guild-member-object).png \* | PNG, JPEG, WebP, GIF | -| Application Icon | app-icons/[application_id](#DOCS_RESOURCES_APPLICATION/application-object)/[icon](#DOCS_RESOURCES_APPLICATION/application-object).png | PNG, JPEG, WebP | -| Application Cover | app-icons/[application_id](#DOCS_RESOURCES_APPLICATION/application-object)/[cover_image](#DOCS_RESOURCES_APPLICATION/application-object).png | PNG, JPEG, WebP | -| Application Asset | app-assets/[application_id](#DOCS_RESOURCES_APPLICATION/application-object)/[asset_id](#DOCS_TOPICS_GATEWAY/activity-object-activity-assets).png | PNG, JPEG, WebP | -| Achievement Icon | app-assets/[application_id](#DOCS_RESOURCES_APPLICATION/application-object)/achievements/[achievement_id](#DOCS_GAME_SDK_ACHIEVEMENTS/data-models-user-achievement-struct)/icons/[icon_hash](#DOCS_GAME_SDK_ACHIEVEMENTS/data-models-user-achievement-struct).png | PNG, JPEG, WebP | -| Sticker Pack Banner | app-assets/710982414301790216/store/[sticker_pack_banner_asset_id](#DOCS_RESOURCES_STICKER/sticker-pack-object).png | PNG, JPEG, WebP | -| Team Icon | team-icons/[team_id](#DOCS_TOPICS_TEAMS/data-models-team-object)/[team_icon](#DOCS_TOPICS_TEAMS/data-models-team-object).png | PNG, JPEG, WebP | -| Sticker | stickers/[sticker_id](#DOCS_RESOURCES_STICKER/sticker-object).png \*\*\* \*\*\*\* | PNG, Lottie | -| Role Icon | role-icons/[role_id](#DOCS_TOPICS_PERMISSIONS/role-object)/[role_icon](#DOCS_TOPICS_PERMISSIONS/role-object).png \* | PNG, JPEG, WebP | +| Type | Path | Supports | +| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | +| Custom Emoji | emojis/[emoji_id](#DOCS_RESOURCES_EMOJI/emoji-object).png | PNG, JPEG, WebP, GIF | +| Guild Icon | icons/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/[guild_icon](#DOCS_RESOURCES_GUILD/guild-object).png \* | PNG, JPEG, WebP, GIF | +| Guild Splash | splashes/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/[guild_splash](#DOCS_RESOURCES_GUILD/guild-object).png | PNG, JPEG, WebP | +| Guild Discovery Splash | discovery-splashes/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/[guild_discovery_splash](#DOCS_RESOURCES_GUILD/guild-object).png | PNG, JPEG, WebP | +| Guild Banner | banners/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/[guild_banner](#DOCS_RESOURCES_GUILD/guild-object).png | PNG, JPEG, WebP | +| User Banner | banners/[user_id](#DOCS_RESOURCES_USER/user-object)/[user_banner](#DOCS_RESOURCES_USER/user-object).png \* | PNG, JPEG, WebP, GIF | +| Default User Avatar | embed/avatars/[user_discriminator](#DOCS_RESOURCES_USER/user-object).png \*\* \*\*\* | PNG | +| User Avatar | avatars/[user_id](#DOCS_RESOURCES_USER/user-object)/[user_avatar](#DOCS_RESOURCES_USER/user-object).png \* | PNG, JPEG, WebP, GIF | +| Guild Member Avatar | guilds/[guild_id](#DOCS_RESOURCES_GUILD/guild-object)/users/[user_id](#DOCS_RESOURCES_USER/user-object)/avatars/[member_avatar](#DOCS_RESOURCES_GUILD/guild-member-object).png \* | PNG, JPEG, WebP, GIF | +| Application Icon | app-icons/[application_id](#DOCS_RESOURCES_APPLICATION/application-object)/[icon](#DOCS_RESOURCES_APPLICATION/application-object).png | PNG, JPEG, WebP | +| Application Cover | app-icons/[application_id](#DOCS_RESOURCES_APPLICATION/application-object)/[cover_image](#DOCS_RESOURCES_APPLICATION/application-object).png | PNG, JPEG, WebP | +| Application Asset | app-assets/[application_id](#DOCS_RESOURCES_APPLICATION/application-object)/[asset_id](#DOCS_TOPICS_GATEWAY/activity-object-activity-assets).png | PNG, JPEG, WebP | +| Achievement Icon | app-assets/[application_id](#DOCS_RESOURCES_APPLICATION/application-object)/achievements/[achievement_id](#DOCS_GAME_SDK_ACHIEVEMENTS/data-models-user-achievement-struct)/icons/[icon_hash](#DOCS_GAME_SDK_ACHIEVEMENTS/data-models-user-achievement-struct).png | PNG, JPEG, WebP | +| Sticker Pack Banner | app-assets/710982414301790216/store/[sticker_pack_banner_asset_id](#DOCS_RESOURCES_STICKER/sticker-pack-object).png | PNG, JPEG, WebP | +| Team Icon | team-icons/[team_id](#DOCS_TOPICS_TEAMS/data-models-team-object)/[team_icon](#DOCS_TOPICS_TEAMS/data-models-team-object).png | PNG, JPEG, WebP | +| Sticker | stickers/[sticker_id](#DOCS_RESOURCES_STICKER/sticker-object).png \*\*\* \*\*\*\* | PNG, Lottie | +| Role Icon | role-icons/[role_id](#DOCS_TOPICS_PERMISSIONS/role-object)/[role_icon](#DOCS_TOPICS_PERMISSIONS/role-object).png \* | PNG, JPEG, WebP | +| Guild Scheduled Event Cover | guild-events/[scheduled_event_id](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object)/[scheduled_event_cover_image](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object).png | PNG, JPEG, WebP | \* In the case of endpoints that support GIFs, the hash will begin with `a_` if it is available in GIF format. (example: `a_1269e74af4df7417b13759eae50c83dc`) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index da3c0f0a9a..ef4a302624 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -6,23 +6,24 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). ###### Guild Scheduled Event Structure -| Field | Type | Description | -| --------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | -| id | snowflake | the id of the scheduled event | -| guild_id | snowflake | the guild id which the scheduled event belongs to | +| Field | Type | Description | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | snowflake | the id of the scheduled event | +| guild_id | snowflake | the guild id which the scheduled event belongs to | | channel_id ** | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | -| creator_id * | ?snowflake | the id of the user that created the scheduled event * | -| name | string | the name of the scheduled event (1-100 characters) | -| description? | string | the description of the scheduled event (1-1000 characters) | -| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | -| scheduled_end_time ** | ?ISO8601 timestamp | the time the scheduled event will end, required if entity_type is `EXTERNAL` | -| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | -| status | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | -| entity_type | [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of the scheduled event | -| entity_id | ?snowflake | the id of an entity associated with a guild scheduled event | -| entity_metadata ** | ?[entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | additional metadata for the guild scheduled event | -| creator? | [user](#DOCS_RESOURCES_USER/user-object) object | the user that created the scheduled event | -| user_count? | integer | the number of users subscribed to the scheduled event | +| creator_id * | ?snowflake | the id of the user that created the scheduled event * | +| name | string | the name of the scheduled event (1-100 characters) | +| description? | string | the description of the scheduled event (1-1000 characters) | +| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | +| scheduled_end_time ** | ?ISO8601 timestamp | the time the scheduled event will end, required if entity_type is `EXTERNAL` | +| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| status | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | +| entity_type | [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of the scheduled event | +| entity_id | ?snowflake | the id of an entity associated with a guild scheduled event | +| entity_metadata ** | ?[entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | additional metadata for the guild scheduled event | +| creator? | [user](#DOCS_RESOURCES_USER/user-object) object | the user that created the scheduled event | +| user_count? | integer | the number of users subscribed to the scheduled event | +| image | ?string | the [cover image hash](#DOCS_REFERENCE/image-formatting) of the scheduled event | \* `creator_id` will be null and `creator` will not be included for events created before October 25th, 2021, when the concept of `creator_id` was introduced and tracked. @@ -133,6 +134,7 @@ Create a guild scheduled event in the guild. Returns a [guild scheduled event](# | scheduled_end_time? | ISO8601 timestamp | the time when the scheduled event is scheduled to end | | description? | string | the description of the scheduled event | | entity_type | [entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | +| image? | [image data](#DOCS_REFERENCE/image-data) | the cover image of the scheduled event | \* Optional for events with `'entity_type': EXTERNAL` @@ -169,6 +171,7 @@ Modify a guild scheduled event. Returns the modified [guild scheduled event](#DO | description? | string | the description of the scheduled event | | entity_type? * | [event entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | | status? | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | +| image? | [image data](#DOCS_REFERENCE/image-data) | the cover image of the scheduled event | \* If updating `entity_type` to `EXTERNAL`: From 78265c0c3b88be69ba3c78f07c027a356ffe593e Mon Sep 17 00:00:00 2001 From: devsnek Date: Fri, 28 Jan 2022 21:09:19 -0600 Subject: [PATCH 106/181] Update CONTRIBUTING.md --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d1c565e8ac..579460a0b7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,5 +11,6 @@ 1. Subjective wording changes. 1. Modifications to the overall structure and format of the API docs. 1. Additions that replicate or needlessly restructure current documentation. +1. Additions that document unreleased product functionality. By submitting pull requests to this repository, you waive any rights or ownership of the included contents to Discord. Contributions to this repository must conform to the [Discord App TOS](https://discord.com/terms). From 786d24a433384c69ba0b172f2aaf8067a527b2b6 Mon Sep 17 00:00:00 2001 From: InvalidLenni <68335355+InvalidLenni@users.noreply.github.com> Date: Tue, 1 Feb 2022 19:35:32 +0100 Subject: [PATCH 107/181] Update Special_Channels.md (#4387) --- docs/game_and_server_management/Special_Channels.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/game_and_server_management/Special_Channels.md b/docs/game_and_server_management/Special_Channels.md index 4f5b6147ad..fe56516388 100644 --- a/docs/game_and_server_management/Special_Channels.md +++ b/docs/game_and_server_management/Special_Channels.md @@ -1,5 +1,9 @@ # Store Channels +> danger +> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) + + One of the new flagship features of Verified Servers and Game Servers are the ability to host your store pages directly in your server. We know that community is everything for games, and that your server is already the place where your community lives. Rather than the friction and impersonality of traditional storefronts, you can let your fans find your game in the cozy comfort of their home (your server!). In order to create a store channel for your game, you'll need to make sure you've followed [the Walkthrough](#DOCS_GAME_AND_SERVER_MANAGEMENT_HOW_TO_GET_YOUR_GAME_ON_DISCORD/) up to `Getting Approved`. If you've done that, you'll see in your server that you can create a new channel type: `Store`. @@ -27,7 +31,7 @@ We know that your server and community are at the heart of your game's success o # Announcement Channels -As part of our ongoing effort to help you build your game community, all [Community servers](https://dis.gd/communityservers) (along with [Developer License](#DOCS_GAME_AND_SERVER_MANAGEMENT_HOW_TO_GET_YOUR_GAME_ON_DISCORD/your-server-your-kingdom) servers) have the ability to create Announcement Channels! +As part of our ongoing effort to help you build your game community, all [Community servers](https://dis.gd/communityservers) have the ability to create Announcement Channels! Unlike a regular text channel, Announcement Channels comes with a “Follow” button that allows your superfans to hook and connect your channel into their own personal servers. Now, select messages in your Announcement Channels can be "published" in your players' friend servers as regular messages, allowing them to get the latest updates of their favorite game in the places they hang out most. Because these posts appear and function as messages, it means that everyone in your superfan’s server can find them, discuss them live, and receive them as mobile notifications, if they have this setting enabled. From 0a96bce97dfd0bef0a7f52e98a87d69e65002152 Mon Sep 17 00:00:00 2001 From: PhoenixmitX <39215472+PhoenixmitX@users.noreply.github.com> Date: Tue, 1 Feb 2022 19:36:26 +0100 Subject: [PATCH 108/181] added missing style around id (#4417) --- docs/resources/Channel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 26750b2ceb..6c4ac5287e 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -286,7 +286,7 @@ Represents a message sent in a channel within Discord. ###### Message Types > warn -> Type `19` and `20` are only in API v8. In v6, they are still type `0`. Type 21 is only in API v9. +> Type `19` and `20` are only in API v8. In v6, they are still type `0`. Type `21` is only in API v9. | Type | Value | |----------------------------------------------|-------| From 7c0249a3c41b7596f7a7a4c6d2b3b7e4a6ac307c Mon Sep 17 00:00:00 2001 From: cherryblossom000 <31467609+cherryblossom000@users.noreply.github.com> Date: Wed, 2 Feb 2022 05:36:35 +1100 Subject: [PATCH 109/181] Clarify that `permission_overwrites` can omit `allow` and `deny` keys when creating/modifying channel/channel ovewrites (#4405) Co-authored-by: Izhar Ahmad <54180221+nerdguyahmad@users.noreply.github.com> --- docs/resources/Channel.md | 42 ++++++++++++++++++++------------------- docs/resources/Guild.md | 26 +++++++++++++----------- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 6c4ac5287e..d8cd39d257 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -806,21 +806,23 @@ Fires a [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) Gateway event. Requires the `MANAGE_CHANNELS` permission for the guild. Fires a [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) Gateway event. If modifying a category, individual [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) events will fire for each child channel that also changes. If modifying permission overwrites, the `MANAGE_ROLES` permission is required. Only permissions your bot has in the guild or channel can be allowed/denied (unless your bot has a `MANAGE_ROLES` overwrite in the channel). -| Field | Type | Description | Channel Type | -|-------------------------------|-------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------| -| name | string | 1-100 character channel name | All | -| type | integer | the [type of channel](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types); only conversion between text and news is supported and only in guilds with the "NEWS" feature | Text, News | -| position | ?integer | the position of the channel in the left-hand listing | All | -| topic | ?string | 0-1024 character channel topic | Text, News | -| nsfw | ?boolean | whether the channel is nsfw | Text, News, Store | -| rate_limit_per_user | ?integer | amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected | Text | -| bitrate | ?integer | the bitrate (in bits) of the voice channel; 8000 to 96000 (128000 for VIP servers) | Voice | -| user_limit | ?integer | the user limit of the voice channel; 0 refers to no limit, 1 to 99 refers to a user limit | Voice | -| permission_overwrites | ?array of [overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | channel or category-specific permissions | All | -| parent_id | ?snowflake | id of the new parent category for a channel | Text, News, Store, Voice | -| rtc_region | ?string | channel [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id, automatic when set to null | Voice | -| video_quality_mode | ?integer | the camera [video quality mode](#DOCS_RESOURCES_CHANNEL/channel-object-video-quality-modes) of the voice channel | Voice | -| default_auto_archive_duration | ?integer | the default duration that the clients use (not the API) for newly created threads in the channel, in minutes, to automatically archive the thread after recent activity | Text, News | +| Field | Type | Description | Channel Type | +|-------------------------------|---------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------| +| name | string | 1-100 character channel name | All | +| type | integer | the [type of channel](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types); only conversion between text and news is supported and only in guilds with the "NEWS" feature | Text, News | +| position | ?integer | the position of the channel in the left-hand listing | All | +| topic | ?string | 0-1024 character channel topic | Text, News | +| nsfw | ?boolean | whether the channel is nsfw | Text, News, Store | +| rate_limit_per_user | ?integer | amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected | Text | +| bitrate | ?integer | the bitrate (in bits) of the voice channel; 8000 to 96000 (128000 for VIP servers) | Voice | +| user_limit | ?integer | the user limit of the voice channel; 0 refers to no limit, 1 to 99 refers to a user limit | Voice | +| permission_overwrites\* | ?array of partial [overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | channel or category-specific permissions | All | +| parent_id | ?snowflake | id of the new parent category for a channel | Text, News, Store, Voice | +| rtc_region | ?string | channel [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) id, automatic when set to null | Voice | +| video_quality_mode | ?integer | the camera [video quality mode](#DOCS_RESOURCES_CHANNEL/channel-object-video-quality-modes) of the voice channel | Voice | +| default_auto_archive_duration | ?integer | the default duration that the clients use (not the API) for newly created threads in the channel, in minutes, to automatically archive the thread after recent activity | Text, News | + +\* In each overwrite object, the `allow` and `deny` keys can be omitted or set to `null`, which both default to `"0"`. ###### JSON Params (Thread) @@ -1038,11 +1040,11 @@ Edit the channel permission overwrites for a user or role in a channel. Only usa ###### JSON Params -| Field | Type | Description | -|-------|--------|-------------------------------------------------| -| allow | string | the bitwise value of all allowed permissions | -| deny | string | the bitwise value of all disallowed permissions | -| type | integer | 0 for a role or 1 for a member | +| Field | Type | Description | +|--------|---------|-----------------------------------------------------------------| +| allow? | string? | the bitwise value of all allowed permissions (default `"0"`) | +| deny? | string? | the bitwise value of all disallowed permissions (default `"0"`) | +| type | integer | 0 for a role or 1 for a member | ## Get Channel Invites % GET /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/invites diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index efe8b404db..99caf2cf26 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -712,18 +712,20 @@ Create a new [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object for the gu ###### JSON Params -| Field | Type | Description | -| --------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| name | string | channel name (1-100 characters) | -| type | integer | the [type of channel](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | -| topic | string | channel topic (0-1024 characters) | -| bitrate | integer | the bitrate (in bits) of the voice channel (voice only) | -| user_limit | integer | the user limit of the voice channel (voice only) | -| rate_limit_per_user | integer | amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected | -| position | integer | sorting position of the channel | -| permission_overwrites | array of [overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | the channel's permission overwrites | -| parent_id | snowflake | id of the parent category for a channel | -| nsfw | boolean | whether the channel is nsfw | +| Field | Type | Description | +| ----------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| name | string | channel name (1-100 characters) | +| type | integer | the [type of channel](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | +| topic | string | channel topic (0-1024 characters) | +| bitrate | integer | the bitrate (in bits) of the voice channel (voice only) | +| user_limit | integer | the user limit of the voice channel (voice only) | +| rate_limit_per_user | integer | amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission `manage_messages` or `manage_channel`, are unaffected | +| position | integer | sorting position of the channel | +| permission_overwrites\* | array of partial [overwrite](#DOCS_RESOURCES_CHANNEL/overwrite-object) objects | the channel's permission overwrites | +| parent_id | snowflake | id of the parent category for a channel | +| nsfw | boolean | whether the channel is nsfw | + +\* In each overwrite object, the `allow` and `deny` keys can be omitted or set to `null`, which both default to `"0"`. ## Modify Guild Channel Positions % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/channels From d6fb2e8cdec1f002bbbd13d303e52ce513d160ac Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Tue, 1 Feb 2022 18:37:59 +0000 Subject: [PATCH 110/181] Clarify communication disabled behavior (#4390) * Clarify that you cant timeout an admin * Update Guild.md * Update Guild.md * Update Guild.md --- docs/resources/Guild.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index 99caf2cf26..25cb3c924c 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -833,12 +833,12 @@ Modify attributes of a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) | Field | Type | Description | Permission | | ---------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | -| nick | string | value to set user's nickname to | MANAGE_NICKNAMES | -| roles | array of snowflakes | array of role ids the member is assigned | MANAGE_ROLES | -| mute | boolean | whether the user is muted in voice channels. Will throw a 400 if the user is not in a voice channel | MUTE_MEMBERS | -| deaf | boolean | whether the user is deafened in voice channels. Will throw a 400 if the user is not in a voice channel | DEAFEN_MEMBERS | -| channel_id | snowflake | id of channel to move user to (if they are connected to voice) | MOVE_MEMBERS | -| communication_disabled_until | ?ISO8601 timestamp | when the user's [timeout](https://support.discord.com/hc/en-us/articles/4413305239191-Time-Out-FAQ) will expire and the user will be able to communicate in the guild again (up to 28 days in the future), set to null to remove timeout | MODERATE_MEMBERS | +| nick | string | value to set user's nickname to | MANAGE_NICKNAMES | +| roles | array of snowflakes | array of role ids the member is assigned | MANAGE_ROLES | +| mute | boolean | whether the user is muted in voice channels. Will throw a 400 error if the user is not in a voice channel | MUTE_MEMBERS | +| deaf | boolean | whether the user is deafened in voice channels. Will throw a 400 error if the user is not in a voice channel | DEAFEN_MEMBERS | +| channel_id | snowflake | id of channel to move user to (if they are connected to voice) | MOVE_MEMBERS | +| communication_disabled_until | ?ISO8601 timestamp | when the user's [timeout](https://support.discord.com/hc/en-us/articles/4413305239191-Time-Out-FAQ) will expire and the user will be able to communicate in the guild again (up to 28 days in the future), set to null to remove timeout. Will throw a 403 error if the user has the ADMINISTRATOR permission or is the owner of the guild | MODERATE_MEMBERS | ## Modify Current Member % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/members/@me From c144941547e2e2207e0074e83255b966a313bc32 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Tue, 1 Feb 2022 18:40:14 +0000 Subject: [PATCH 111/181] Fix welcome screen required permissions (#4382) Co-authored-by: devsnek --- docs/resources/Guild.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index 25cb3c924c..386bb7de4b 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -1090,7 +1090,7 @@ Returns a PNG image widget for the guild. Requires no permissions or authenticat ## Get Guild Welcome Screen % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/welcome-screen -Returns the [Welcome Screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object for the guild. Requires the `MANAGE_GUILD` permission. +Returns the [Welcome Screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) object for the guild. If the welcome screen is not enabled, the `MANAGE_GUILD` permission is required. ## Modify Guild Welcome Screen % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/welcome-screen From 5a0b9f6f463bf511c9010b4d0863cdf111bc7b18 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Tue, 1 Feb 2022 18:44:40 +0000 Subject: [PATCH 112/181] Adds nsfw_level field to invite example (#4334) --- docs/resources/Invite.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/resources/Invite.md b/docs/resources/Invite.md index afbd12db65..9a3e434b02 100644 --- a/docs/resources/Invite.md +++ b/docs/resources/Invite.md @@ -7,19 +7,19 @@ Represents a code that when used, adds a user to a guild or group DM channel. ###### Invite Structure | Field | Type | Description | -| --------------------------- | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| code | string | the invite code (unique ID) | -| guild? | partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object | the guild this invite is for | -| channel | ?partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the channel this invite is for | -| inviter? | [user](#DOCS_RESOURCES_USER/user-object) object | the user who created the invite | -| target_type? | integer | the [type of target](#DOCS_RESOURCES_INVITE/invite-object-invite-target-types) for this voice channel invite | +| --------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------| +| code | string | the invite code (unique ID) | +| guild? | partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object | the guild this invite is for | +| channel | ?partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the channel this invite is for | +| inviter? | [user](#DOCS_RESOURCES_USER/user-object) object | the user who created the invite | +| target_type? | integer | the [type of target](#DOCS_RESOURCES_INVITE/invite-object-invite-target-types) for this voice channel invite| | target_user? | [user](#DOCS_RESOURCES_USER/user-object) object | the user whose stream to display for this voice channel stream invite | | target_application? | partial [application](#DOCS_RESOURCES_APPLICATION/application-object) object | the embedded application to open for this voice channel embedded application invite | -| approximate_presence_count? | integer | approximate count of online members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | -| approximate_member_count? | integer | approximate count of total members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | -| expires_at? | ?ISO8601 timestamp | the expiration date of this invite, returned from the `GET /invites/` endpoint when `with_expiration` is `true` | +| approximate_presence_count? | integer | approximate count of online members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | +| approximate_member_count? | integer | approximate count of total members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | +| expires_at? | ?ISO8601 timestamp | the expiration date of this invite, returned from the `GET /invites/` endpoint when `with_expiration` is `true` | | stage_instance? | [invite stage instance](#DOCS_RESOURCES_INVITE/invite-stage-instance-object) object | stage instance data if there is a [public Stage instance](#DOCS_RESOURCES_STAGE_INSTANCE) in the Stage channel this invite is for | -| guild_scheduled_event? | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object | guild scheduled event data, only included if `guild_scheduled_event_id` contains a valid guild scheduled event id | +| guild_scheduled_event? | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object | guild scheduled event data, only included if `guild_scheduled_event_id` contains a valid guild scheduled event id | ###### Invite Target Types @@ -42,7 +42,8 @@ Represents a code that when used, adds a user to a guild or group DM channel. "icon": null, "features": ["NEWS", "DISCOVERABLE"], "verification_level": 2, - "vanity_url_code": null + "vanity_url_code": null, + "nsfw_level": 0 }, "channel": { "id": "165176875973476352", From bac2f4020275df5644d7d3f3f89b7f6bf087b50c Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Tue, 1 Feb 2022 10:52:50 -0800 Subject: [PATCH 113/181] Interaction events can send string snowflakes over gateway --- docs/topics/Gateway.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index a6d616c248..de117c5417 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -59,7 +59,7 @@ When initially creating and handshaking connections to the Gateway, a user can c While using ETF there are some additional constraints to note: -- Snowflake IDs are transmitted as 64-bit integers over ETF. +- Snowflake IDs are transmitted as 64-bit integers or strings over ETF. - The client must not send compressed messages to the server. - Payloads must use string keys, atom keys will lead to a 4002 decode error. From 95994a96f18bc98e5a69c15308a78d9029b5319b Mon Sep 17 00:00:00 2001 From: Davi <68123395+Davi-the-Mudkip@users.noreply.github.com> Date: Tue, 1 Feb 2022 15:53:03 -0300 Subject: [PATCH 114/181] Clarify documentation on threads (#3836) --- docs/Change_Log.md | 6 +++--- docs/topics/Permissions.md | 4 ++-- docs/topics/Threads.md | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index a27a35336f..ad77899435 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -36,12 +36,12 @@ Autocomplete interactions are now available, allowing application commands to pr Thread permissions have been updated and simplified: -- "Use Public Threads" is now "Create Public Threads", which allows users to create threads in a channel, even if they cannot send messages in that channel. -- "Use Private Threads" is now "Create Private Threads", which allows users to create threads in a channel, even if they cannot send messages in that channel. +- "Use Public Threads" is now "Create Public Threads", which allows users to create public threads and announcement threads in a channel, even if they cannot send messages in that channel. +- "Use Private Threads" is now "Create Private Threads", which allows users to create private threads in a channel, even if they cannot send messages in that channel. A new permission has also been added: -- "Send Messages in Threads", which allows users to send a message in a thread. The "Send Messages" permission has no effect in threads: users **must** have "Send Messages in Threads" to send a message in a thread. This allows for setups where a user can participate in a thread, but cannot send a message in the parent channel (like a thread on an announcement post). +- "Send Messages in Threads", which allows users to send a message in a thread. The "Send Messages" permission has no effect in threads: users **must** have "Send Messages in Threads" to send a message in a thread. This allows for setups where a user can participate in a thread but cannot send a message in the parent channel (like a thread on an announcement post). ## User and Message Commands diff --git a/docs/topics/Permissions.md b/docs/topics/Permissions.md index eae9915d7a..894121917e 100644 --- a/docs/topics/Permissions.md +++ b/docs/topics/Permissions.md @@ -63,7 +63,7 @@ Below is a table of all current permissions, their integer values in hexadecimal | REQUEST_TO_SPEAK | `0x0000000100000000` `(1 << 32)` | Allows for requesting to speak in stage channels. (_This permission is under active development and may be changed or removed._) | S | | MANAGE_EVENTS | `0x0000000200000000` `(1 << 33)` | Allows for creating, editing, and deleting scheduled events | V, S | | MANAGE_THREADS \* | `0x0000000400000000` `(1 << 34)` | Allows for deleting and archiving threads, and viewing all private threads | T | -| CREATE_PUBLIC_THREADS | `0x0000000800000000` `(1 << 35)` | Allows for creating threads | T | +| CREATE_PUBLIC_THREADS | `0x0000000800000000` `(1 << 35)` | Allows for creating public and announcement threads | T | | CREATE_PRIVATE_THREADS | `0x0000001000000000` `(1 << 36)` | Allows for creating private threads | T | | USE_EXTERNAL_STICKERS | `0x0000002000000000` `(1 << 37)` | Allows the usage of custom stickers from other servers | T | | SEND_MESSAGES_IN_THREADS | `0x0000004000000000` `(1 << 38)` | Allows for sending messages in threads | T | @@ -169,7 +169,7 @@ There may be other cases in which certain permissions implicitly deny or allow o ## Inherited Permissions (Threads) -Threads inherit permissions from the parent channel (the channel they were created in), with one exception: The `SEND_MESSAGES` permission is not inherited, users must have `SEND_MESSAGES_IN_THREADS` to send a message in a thread, which allows for users to participate in threads in places like announcement channels. +Threads inherit permissions from the parent channel (the channel they were created in), with one exception: The `SEND_MESSAGES` permission is not inherited; users must have `SEND_MESSAGES_IN_THREADS` to send a message in a thread, which allows for users to participate in threads in places like announcement channels. Users must have the `VIEW_CHANNEL` permission to view _any_ threads in the channel, even if they are directly mentioned or added to the thread. diff --git a/docs/topics/Threads.md b/docs/topics/Threads.md index 64a62f12b4..e2ebe7336f 100644 --- a/docs/topics/Threads.md +++ b/docs/topics/Threads.md @@ -57,9 +57,9 @@ Threads automatically archive after inactivity. "Activity" is defined as sending ## Permissions -Threads generally inherit permissions from the parent channel. If you can add reactions in the parent channel, you can do that in a thread as well. +Threads generally inherit permissions from the parent channel (e.g. if you can add reactions in the parent channel, you can do that in a thread as well). -Three new permission bits have been added, `CREATE_PUBLIC_THREADS`, `CREATE_PRIVATE_THREADS`, and `SEND_MESSAGES_IN_THREADS`. Note: `SEND_MESSAGES` has no effect in threads, users must have `SEND_MESSAGES_IN_THREADS` to talk in a thread. +Three new permission bits have been added, `CREATE_PUBLIC_THREADS`, `CREATE_PRIVATE_THREADS`, and `SEND_MESSAGES_IN_THREADS`. Note: `SEND_MESSAGES` has no effect in threads; users must have `SEND_MESSAGES_IN_THREADS` to talk in a thread. Private threads are similar to Group DMs, but in a guild: You must be invited to the thread to be able to view or participate in it, or be a moderator (`MANAGE_THREADS` permission). From 547dc1362c5e128df1f431dbf0004fb01df0a9e2 Mon Sep 17 00:00:00 2001 From: Lucina Date: Tue, 1 Feb 2022 19:02:34 +0000 Subject: [PATCH 115/181] Update ephemeral support for response endpoints (#3866) * Update ephemeral support for response endpoints Only DELETE followup and DELETE original interaction response 404 when targeting Ephemeral responses * Update Receiving_and_Responding.md --- docs/interactions/Receiving_and_Responding.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 4c903f404d..bba426d04b 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -335,7 +335,7 @@ Edits the initial Interaction response. Functions the same as [Edit Webhook Mess ## Delete Original Interaction Response % DELETE /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/@original -Deletes the initial Interaction response. Returns `204 No Content` on success. +Deletes the initial Interaction response. Returns `204 No Content` on success. Does not support ephemeral responses. ## Create Followup Message % POST /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object} @@ -343,11 +343,11 @@ Create a followup message for an Interaction. Functions the same as [Execute Web ## Get Followup Message % GET /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} -Returns a followup message for an Interaction. Functions the same as [Get Webhook Message](#DOCS_RESOURCES_WEBHOOK/get-webhook-message). Does not support ephemeral followups. +Returns a followup message for an Interaction. Functions the same as [Get Webhook Message](#DOCS_RESOURCES_WEBHOOK/get-webhook-message). ## Edit Followup Message % PATCH /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} -Edits a followup message for an Interaction. Functions the same as [Edit Webhook Message](#DOCS_RESOURCES_WEBHOOK/edit-webhook-message). Does not support ephemeral followups. +Edits a followup message for an Interaction. Functions the same as [Edit Webhook Message](#DOCS_RESOURCES_WEBHOOK/edit-webhook-message). ## Delete Followup Message % DELETE /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} From 1875d80011ea62bf555ce807459ccf97950291e9 Mon Sep 17 00:00:00 2001 From: AJ Palkovic Date: Tue, 1 Feb 2022 11:19:06 -0800 Subject: [PATCH 116/181] Document `newly_created` on the THREAD_CREATE dispatch --- docs/topics/Gateway.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index de117c5417..e16bca322a 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -59,7 +59,7 @@ When initially creating and handshaking connections to the Gateway, a user can c While using ETF there are some additional constraints to note: -- Snowflake IDs are transmitted as 64-bit integers or strings over ETF. +- Snowflake IDs are transmitted as 64-bit integers over ETF. - The client must not send compressed messages to the server. - Payloads must use string keys, atom keys will lead to a 4002 decode error. @@ -835,7 +835,9 @@ Sent when a channel relevant to the current user is deleted. The inner payload i #### Thread Create -Sent when a thread is created, relevant to the current user, or when the current user is added to a thread. The inner payload is a [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object. When being added to an existing private thread, includes a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object. +Sent when a thread is created, relevant to the current user, or when the current user is added to a thread. The inner payload is a [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object. +- When a thread is created, includes an additional `newly_created` boolean field. +- When being added to an existing private thread, includes a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object. #### Thread Update From 1a8ea796ac88bac70cc13b24608d05f1c56da285 Mon Sep 17 00:00:00 2001 From: AJ Palkovic Date: Tue, 1 Feb 2022 14:06:21 -0800 Subject: [PATCH 117/181] Unrevert bac2f4020275df5644d7d3f3f89b7f6bf087b50c --- docs/topics/Gateway.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index e16bca322a..7728bf6df7 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -59,7 +59,7 @@ When initially creating and handshaking connections to the Gateway, a user can c While using ETF there are some additional constraints to note: -- Snowflake IDs are transmitted as 64-bit integers over ETF. +- Snowflake IDs are transmitted as 64-bit integers or strings over ETF. - The client must not send compressed messages to the server. - Payloads must use string keys, atom keys will lead to a 4002 decode error. From 8f91fa13da0104eebbdf09af6bf55ad928311c12 Mon Sep 17 00:00:00 2001 From: Zeyla Hellyer Date: Tue, 1 Feb 2022 17:42:14 -0500 Subject: [PATCH 118/181] remove json error code table (#4427) Remove the table of error codes mapped to their messages from the JSON section of the "Opcodes and Status Codes" page. This table was originally created when the message for an error code was not returned in the response, but now that this is the case with API version 8 and up we are removing the table of explicitly documented mappings. --- docs/topics/Opcodes_and_Status_Codes.md | 153 ------------------------ 1 file changed, 153 deletions(-) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index f9c59e662e..bf7612a70f 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -104,159 +104,6 @@ Our API will return semantically valid HTTP response codes based on the success Along with the HTTP error code, our API can also return more detailed error codes through a `code` key in the JSON error response. The response will also contain a `message` key containing a more friendly error string. Some of these errors may include additional details in the form of [Error Messages](#DOCS_REFERENCE/error-messages) provided by an `errors` object. -###### JSON Error Codes - -| Code | Meaning | -|--------|-------------------------------------------------------------------------------------------------------------------------------| -| 0 | General error (such as a malformed request body, amongst other things) | -| 10001 | Unknown account | -| 10002 | Unknown application | -| 10003 | Unknown channel | -| 10004 | Unknown guild | -| 10005 | Unknown integration | -| 10006 | Unknown invite | -| 10007 | Unknown member | -| 10008 | Unknown message | -| 10009 | Unknown permission overwrite | -| 10010 | Unknown provider | -| 10011 | Unknown role | -| 10012 | Unknown token | -| 10013 | Unknown user | -| 10014 | Unknown emoji | -| 10015 | Unknown webhook | -| 10016 | Unknown webhook service | -| 10020 | Unknown session | -| 10026 | Unknown ban | -| 10027 | Unknown SKU | -| 10028 | Unknown Store Listing | -| 10029 | Unknown entitlement | -| 10030 | Unknown build | -| 10031 | Unknown lobby | -| 10032 | Unknown branch | -| 10033 | Unknown store directory layout | -| 10036 | Unknown redistributable | -| 10038 | Unknown gift code | -| 10049 | Unknown stream | -| 10050 | Unknown premium server subscribe cooldown | -| 10057 | Unknown guild template | -| 10059 | Unknown discoverable server category | -| 10060 | Unknown sticker | -| 10062 | Unknown interaction | -| 10063 | Unknown application command | -| 10066 | Unknown application command permissions | -| 10067 | Unknown Stage Instance | -| 10068 | Unknown Guild Member Verification Form | -| 10069 | Unknown Guild Welcome Screen | -| 10070 | Unknown Guild Scheduled Event | -| 10071 | Unknown Guild Scheduled Event User | -| 20001 | Bots cannot use this endpoint | -| 20002 | Only bots can use this endpoint | -| 20009 | Explicit content cannot be sent to the desired recipient(s) | -| 20012 | You are not authorized to perform this action on this application | -| 20016 | This action cannot be performed due to slowmode rate limit | -| 20018 | Only the owner of this account can perform this action | -| 20022 | This message cannot be edited due to announcement rate limits | -| 20028 | The channel you are writing has hit the write rate limit | -| 20029 | The write action you are performing on the server has hit the write rate limit | -| 20031 | Your Stage topic, server name, server description, or channel names contain words that are not allowed | -| 20035 | Guild premium subscription level too low | -| 30001 | Maximum number of guilds reached (100) | -| 30002 | Maximum number of friends reached (1000) | -| 30003 | Maximum number of pins reached for the channel (50) | -| 30004 | Maximum number of recipients reached (10) | -| 30005 | Maximum number of guild roles reached (250) | -| 30007 | Maximum number of webhooks reached (10) | -| 30008 | Maximum number of emojis reached | -| 30010 | Maximum number of reactions reached (20) | -| 30013 | Maximum number of guild channels reached (500) | -| 30015 | Maximum number of attachments in a message reached (10) | -| 30016 | Maximum number of invites reached (1000) | -| 30018 | Maximum number of animated emojis reached | -| 30019 | Maximum number of server members reached | -| 30030 | Maximum number of server categories has been reached (5) | -| 30031 | Guild already has a template | -| 30033 | Max number of thread participants has been reached (1000) | -| 30035 | Maximum number of bans for non-guild members have been exceeded | -| 30037 | Maximum number of bans fetches has been reached | -| 30038 | Maximum number of uncompleted guild scheduled events reached (100) | -| 30039 | Maximum number of stickers reached | -| 30040 | Maximum number of prune requests has been reached. Try again later | -| 30042 | Maximum number of guild widget settings updates has been reached. Try again later | -| 30046 | Maximum number of edits to messages older than 1 hour reached. Try again later | -| 40001 | Unauthorized. Provide a valid token and try again | -| 40002 | You need to verify your account in order to perform this action | -| 40003 | You are opening direct messages too fast | -| 40005 | Request entity too large. Try sending something smaller in size | -| 40006 | This feature has been temporarily disabled server-side | -| 40007 | The user is banned from this guild | -| 40032 | Target user is not connected to voice | -| 40033 | This message has already been crossposted | -| 40041 | An application command with that name already exists | -| 50001 | Missing access | -| 50002 | Invalid account type | -| 50003 | Cannot execute action on a DM channel | -| 50004 | Guild widget disabled | -| 50005 | Cannot edit a message authored by another user | -| 50006 | Cannot send an empty message | -| 50007 | Cannot send messages to this user | -| 50008 | Cannot send messages in a voice channel | -| 50009 | Channel verification level is too high for you to gain access | -| 50010 | OAuth2 application does not have a bot | -| 50011 | OAuth2 application limit reached | -| 50012 | Invalid OAuth2 state | -| 50013 | You lack permissions to perform that action | -| 50014 | Invalid authentication token provided | -| 50015 | Note was too long | -| 50016 | Provided too few or too many messages to delete. Must provide at least 2 and fewer than 100 messages to delete | -| 50019 | A message can only be pinned to the channel it was sent in | -| 50020 | Invite code was either invalid or taken | -| 50021 | Cannot execute action on a system message | -| 50024 | Cannot execute action on this channel type | -| 50025 | Invalid OAuth2 access token provided | -| 50026 | Missing required OAuth2 scope | -| 50027 | Invalid webhook token provided | -| 50028 | Invalid role | -| 50033 | Invalid Recipient(s) | -| 50034 | A message provided was too old to bulk delete | -| 50035 | Invalid form body (returned for both `application/json` and `multipart/form-data` bodies), or invalid `Content-Type` provided | -| 50036 | An invite was accepted to a guild the application's bot is not in | -| 50041 | Invalid API version provided | -| 50045 | File uploaded exceeds the maximum size | -| 50046 | Invalid file uploaded | -| 50054 | Cannot self-redeem this gift | -| 50055 | Invalid Guild | -| 50068 | Invalid message type | -| 50070 | Payment source required to redeem gift | -| 50074 | Cannot delete a channel required for Community guilds | -| 50081 | Invalid sticker sent | -| 50083 | Tried to perform an operation on an archived thread, such as editing a message or adding a user to the thread | -| 50084 | Invalid thread notification settings | -| 50085 | `before` value is earlier than the thread creation date | -| 50086 | Community server channels must be text channels | -| 50095 | This server is not available in your location | -| 50097 | This server needs monetization enabled in order to perform this action | -| 50101 | This server needs more boosts to perform this action | -| 50109 | The request body contains invalid JSON. | -| 60003 | Two factor is required for this operation | -| 80004 | No users with DiscordTag exist | -| 90001 | Reaction was blocked | -| 130000 | API resource is currently overloaded. Try again a little later | -| 150006 | The Stage is already open | -| 160002 | Cannot reply without permission to read message history | -| 160004 | A thread has already been created for this message | -| 160005 | Thread is locked | -| 160006 | Maximum number of active threads reached | -| 160007 | Maximum number of active announcement threads reached | -| 170001 | Invalid JSON for uploaded Lottie file | -| 170002 | Uploaded Lotties cannot contain rasterized images such as PNG or JPEG | -| 170003 | Sticker maximum framerate exceeded | -| 170004 | Sticker frame count exceeds maximum of 1000 frames | -| 170005 | Lottie animation maximum dimensions exceeded | -| 170006 | Sticker frame rate is either too small or too large | -| 170007 | Sticker animation duration exceeds maximum of 5 seconds | -| 180000 | Cannot update a finished event | -| 180002 | Failed to create stage needed for stage event | - ###### Example JSON Error Response ```json From 63c72a7db8cba5efd4206d6bcc920615990867dd Mon Sep 17 00:00:00 2001 From: Nova Fox Date: Tue, 1 Feb 2022 17:52:53 -0600 Subject: [PATCH 119/181] Revert "remove json error code table (#4427)" (#4428) This reverts commit 8f91fa13da0104eebbdf09af6bf55ad928311c12. --- docs/topics/Opcodes_and_Status_Codes.md | 153 ++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index bf7612a70f..f9c59e662e 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -104,6 +104,159 @@ Our API will return semantically valid HTTP response codes based on the success Along with the HTTP error code, our API can also return more detailed error codes through a `code` key in the JSON error response. The response will also contain a `message` key containing a more friendly error string. Some of these errors may include additional details in the form of [Error Messages](#DOCS_REFERENCE/error-messages) provided by an `errors` object. +###### JSON Error Codes + +| Code | Meaning | +|--------|-------------------------------------------------------------------------------------------------------------------------------| +| 0 | General error (such as a malformed request body, amongst other things) | +| 10001 | Unknown account | +| 10002 | Unknown application | +| 10003 | Unknown channel | +| 10004 | Unknown guild | +| 10005 | Unknown integration | +| 10006 | Unknown invite | +| 10007 | Unknown member | +| 10008 | Unknown message | +| 10009 | Unknown permission overwrite | +| 10010 | Unknown provider | +| 10011 | Unknown role | +| 10012 | Unknown token | +| 10013 | Unknown user | +| 10014 | Unknown emoji | +| 10015 | Unknown webhook | +| 10016 | Unknown webhook service | +| 10020 | Unknown session | +| 10026 | Unknown ban | +| 10027 | Unknown SKU | +| 10028 | Unknown Store Listing | +| 10029 | Unknown entitlement | +| 10030 | Unknown build | +| 10031 | Unknown lobby | +| 10032 | Unknown branch | +| 10033 | Unknown store directory layout | +| 10036 | Unknown redistributable | +| 10038 | Unknown gift code | +| 10049 | Unknown stream | +| 10050 | Unknown premium server subscribe cooldown | +| 10057 | Unknown guild template | +| 10059 | Unknown discoverable server category | +| 10060 | Unknown sticker | +| 10062 | Unknown interaction | +| 10063 | Unknown application command | +| 10066 | Unknown application command permissions | +| 10067 | Unknown Stage Instance | +| 10068 | Unknown Guild Member Verification Form | +| 10069 | Unknown Guild Welcome Screen | +| 10070 | Unknown Guild Scheduled Event | +| 10071 | Unknown Guild Scheduled Event User | +| 20001 | Bots cannot use this endpoint | +| 20002 | Only bots can use this endpoint | +| 20009 | Explicit content cannot be sent to the desired recipient(s) | +| 20012 | You are not authorized to perform this action on this application | +| 20016 | This action cannot be performed due to slowmode rate limit | +| 20018 | Only the owner of this account can perform this action | +| 20022 | This message cannot be edited due to announcement rate limits | +| 20028 | The channel you are writing has hit the write rate limit | +| 20029 | The write action you are performing on the server has hit the write rate limit | +| 20031 | Your Stage topic, server name, server description, or channel names contain words that are not allowed | +| 20035 | Guild premium subscription level too low | +| 30001 | Maximum number of guilds reached (100) | +| 30002 | Maximum number of friends reached (1000) | +| 30003 | Maximum number of pins reached for the channel (50) | +| 30004 | Maximum number of recipients reached (10) | +| 30005 | Maximum number of guild roles reached (250) | +| 30007 | Maximum number of webhooks reached (10) | +| 30008 | Maximum number of emojis reached | +| 30010 | Maximum number of reactions reached (20) | +| 30013 | Maximum number of guild channels reached (500) | +| 30015 | Maximum number of attachments in a message reached (10) | +| 30016 | Maximum number of invites reached (1000) | +| 30018 | Maximum number of animated emojis reached | +| 30019 | Maximum number of server members reached | +| 30030 | Maximum number of server categories has been reached (5) | +| 30031 | Guild already has a template | +| 30033 | Max number of thread participants has been reached (1000) | +| 30035 | Maximum number of bans for non-guild members have been exceeded | +| 30037 | Maximum number of bans fetches has been reached | +| 30038 | Maximum number of uncompleted guild scheduled events reached (100) | +| 30039 | Maximum number of stickers reached | +| 30040 | Maximum number of prune requests has been reached. Try again later | +| 30042 | Maximum number of guild widget settings updates has been reached. Try again later | +| 30046 | Maximum number of edits to messages older than 1 hour reached. Try again later | +| 40001 | Unauthorized. Provide a valid token and try again | +| 40002 | You need to verify your account in order to perform this action | +| 40003 | You are opening direct messages too fast | +| 40005 | Request entity too large. Try sending something smaller in size | +| 40006 | This feature has been temporarily disabled server-side | +| 40007 | The user is banned from this guild | +| 40032 | Target user is not connected to voice | +| 40033 | This message has already been crossposted | +| 40041 | An application command with that name already exists | +| 50001 | Missing access | +| 50002 | Invalid account type | +| 50003 | Cannot execute action on a DM channel | +| 50004 | Guild widget disabled | +| 50005 | Cannot edit a message authored by another user | +| 50006 | Cannot send an empty message | +| 50007 | Cannot send messages to this user | +| 50008 | Cannot send messages in a voice channel | +| 50009 | Channel verification level is too high for you to gain access | +| 50010 | OAuth2 application does not have a bot | +| 50011 | OAuth2 application limit reached | +| 50012 | Invalid OAuth2 state | +| 50013 | You lack permissions to perform that action | +| 50014 | Invalid authentication token provided | +| 50015 | Note was too long | +| 50016 | Provided too few or too many messages to delete. Must provide at least 2 and fewer than 100 messages to delete | +| 50019 | A message can only be pinned to the channel it was sent in | +| 50020 | Invite code was either invalid or taken | +| 50021 | Cannot execute action on a system message | +| 50024 | Cannot execute action on this channel type | +| 50025 | Invalid OAuth2 access token provided | +| 50026 | Missing required OAuth2 scope | +| 50027 | Invalid webhook token provided | +| 50028 | Invalid role | +| 50033 | Invalid Recipient(s) | +| 50034 | A message provided was too old to bulk delete | +| 50035 | Invalid form body (returned for both `application/json` and `multipart/form-data` bodies), or invalid `Content-Type` provided | +| 50036 | An invite was accepted to a guild the application's bot is not in | +| 50041 | Invalid API version provided | +| 50045 | File uploaded exceeds the maximum size | +| 50046 | Invalid file uploaded | +| 50054 | Cannot self-redeem this gift | +| 50055 | Invalid Guild | +| 50068 | Invalid message type | +| 50070 | Payment source required to redeem gift | +| 50074 | Cannot delete a channel required for Community guilds | +| 50081 | Invalid sticker sent | +| 50083 | Tried to perform an operation on an archived thread, such as editing a message or adding a user to the thread | +| 50084 | Invalid thread notification settings | +| 50085 | `before` value is earlier than the thread creation date | +| 50086 | Community server channels must be text channels | +| 50095 | This server is not available in your location | +| 50097 | This server needs monetization enabled in order to perform this action | +| 50101 | This server needs more boosts to perform this action | +| 50109 | The request body contains invalid JSON. | +| 60003 | Two factor is required for this operation | +| 80004 | No users with DiscordTag exist | +| 90001 | Reaction was blocked | +| 130000 | API resource is currently overloaded. Try again a little later | +| 150006 | The Stage is already open | +| 160002 | Cannot reply without permission to read message history | +| 160004 | A thread has already been created for this message | +| 160005 | Thread is locked | +| 160006 | Maximum number of active threads reached | +| 160007 | Maximum number of active announcement threads reached | +| 170001 | Invalid JSON for uploaded Lottie file | +| 170002 | Uploaded Lotties cannot contain rasterized images such as PNG or JPEG | +| 170003 | Sticker maximum framerate exceeded | +| 170004 | Sticker frame count exceeds maximum of 1000 frames | +| 170005 | Lottie animation maximum dimensions exceeded | +| 170006 | Sticker frame rate is either too small or too large | +| 170007 | Sticker animation duration exceeds maximum of 5 seconds | +| 180000 | Cannot update a finished event | +| 180002 | Failed to create stage needed for stage event | + ###### Example JSON Error Response ```json From 7307405fc3da20b2eb32c2e6d0064ef73d5b6fae Mon Sep 17 00:00:00 2001 From: devsnek Date: Tue, 1 Feb 2022 19:36:26 -0600 Subject: [PATCH 120/181] this should not be set for dev dependency requirements --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 1b062aef0a..c102e7437c 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,5 @@ "eslint-plugin-prettier": "^4.0.0", "prettier": "^2.4.1", "typescript": "^4.4.3" - }, - "engines": { - "node": "^14.17.0" } } From 611180a23a5ee0d4989f2da213ac05e68f5cbccc Mon Sep 17 00:00:00 2001 From: devsnek Date: Tue, 1 Feb 2022 19:42:02 -0600 Subject: [PATCH 121/181] Revert "Update ephemeral support for response endpoints" (#4429) --- docs/interactions/Receiving_and_Responding.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index bba426d04b..4c903f404d 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -335,7 +335,7 @@ Edits the initial Interaction response. Functions the same as [Edit Webhook Mess ## Delete Original Interaction Response % DELETE /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/@original -Deletes the initial Interaction response. Returns `204 No Content` on success. Does not support ephemeral responses. +Deletes the initial Interaction response. Returns `204 No Content` on success. ## Create Followup Message % POST /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object} @@ -343,11 +343,11 @@ Create a followup message for an Interaction. Functions the same as [Execute Web ## Get Followup Message % GET /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} -Returns a followup message for an Interaction. Functions the same as [Get Webhook Message](#DOCS_RESOURCES_WEBHOOK/get-webhook-message). +Returns a followup message for an Interaction. Functions the same as [Get Webhook Message](#DOCS_RESOURCES_WEBHOOK/get-webhook-message). Does not support ephemeral followups. ## Edit Followup Message % PATCH /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} -Edits a followup message for an Interaction. Functions the same as [Edit Webhook Message](#DOCS_RESOURCES_WEBHOOK/edit-webhook-message). +Edits a followup message for an Interaction. Functions the same as [Edit Webhook Message](#DOCS_RESOURCES_WEBHOOK/edit-webhook-message). Does not support ephemeral followups. ## Delete Followup Message % DELETE /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} From a783ca92c1150e1e2b7a510ce25fdb4de9ced1fd Mon Sep 17 00:00:00 2001 From: AJ Palkovic Date: Thu, 3 Feb 2022 11:39:08 -0800 Subject: [PATCH 122/181] Document thread create_timestamp as nullable. fixes https://github.com/discord/discord-api-docs/issues/4418 --- docs/resources/Channel.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index d8cd39d257..da56cfa48c 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -512,14 +512,14 @@ The thread metadata object contains a number of thread-specific channel fields t ###### Thread Metadata Structure -| Field | Type | Description | -|-----------------------|-------------------|---------------------------------------------------------------------------------------------------------------------| -| archived | boolean | whether the thread is archived | -| auto_archive_duration | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | -| archive_timestamp | ISO8601 timestamp | timestamp when the thread's archive status was last changed, used for calculating recent activity | -| locked | boolean | whether the thread is locked; when a thread is locked, only users with MANAGE_THREADS can unarchive it | -| invitable? | boolean | whether non-moderators can add other non-moderators to a thread; only available on private threads | -| create_timestamp? | ISO8601 timestamp | timestamp when the thread was created; only populated for threads created after 2022-01-09 | +| Field | Type | Description | +|-----------------------|--------------------|---------------------------------------------------------------------------------------------------------------------| +| archived | boolean | whether the thread is archived | +| auto_archive_duration | integer | duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 | +| archive_timestamp | ISO8601 timestamp | timestamp when the thread's archive status was last changed, used for calculating recent activity | +| locked | boolean | whether the thread is locked; when a thread is locked, only users with MANAGE_THREADS can unarchive it | +| invitable? | boolean | whether non-moderators can add other non-moderators to a thread; only available on private threads | +| create_timestamp? | ?ISO8601 timestamp | timestamp when the thread was created; only populated for threads created after 2022-01-09 | ### Thread Member Object From 12fe4e10efb33bd025d3ccfd1d31752b8bc7b928 Mon Sep 17 00:00:00 2001 From: Izhar Ahmad <54180221+nerdguyahmad@users.noreply.github.com> Date: Tue, 8 Feb 2022 23:35:38 +0500 Subject: [PATCH 123/181] Fix incorrect note on role icons CDN endpoint. (#4453) Role icons cannot be animated. --- docs/Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference.md b/docs/Reference.md index cde1c71b8b..2d504baf92 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -319,7 +319,7 @@ Discord uses ids and hashes to render images in the client. These hashes can be | Sticker Pack Banner | app-assets/710982414301790216/store/[sticker_pack_banner_asset_id](#DOCS_RESOURCES_STICKER/sticker-pack-object).png | PNG, JPEG, WebP | | Team Icon | team-icons/[team_id](#DOCS_TOPICS_TEAMS/data-models-team-object)/[team_icon](#DOCS_TOPICS_TEAMS/data-models-team-object).png | PNG, JPEG, WebP | | Sticker | stickers/[sticker_id](#DOCS_RESOURCES_STICKER/sticker-object).png \*\*\* \*\*\*\* | PNG, Lottie | -| Role Icon | role-icons/[role_id](#DOCS_TOPICS_PERMISSIONS/role-object)/[role_icon](#DOCS_TOPICS_PERMISSIONS/role-object).png \* | PNG, JPEG, WebP | +| Role Icon | role-icons/[role_id](#DOCS_TOPICS_PERMISSIONS/role-object)/[role_icon](#DOCS_TOPICS_PERMISSIONS/role-object).png | PNG, JPEG, WebP | | Guild Scheduled Event Cover | guild-events/[scheduled_event_id](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object)/[scheduled_event_cover_image](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object).png | PNG, JPEG, WebP | \* In the case of endpoints that support GIFs, the hash will begin with `a_` if it is available in GIF format. (example: `a_1269e74af4df7417b13759eae50c83dc`) From c4fbd5517f256841091aadc5bb4e43e1e2f51160 Mon Sep 17 00:00:00 2001 From: Suspense Date: Tue, 8 Feb 2022 19:36:55 +0100 Subject: [PATCH 124/181] clarify the focused option might not be alone (#4450) --- docs/interactions/Application_Commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index f3ff0dae48..d38c2ecde0 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -854,7 +854,7 @@ When someone uses a message command, your application will receive an interactio Autocomplete interactions allow your application to dynamically return option suggestions to a user as they type. -An autocomplete interaction **can return partial data** for option values. Your application will receive partial data for any existing user input, as long as that input passes client-side validation. For example, you may receive partial strings, but not invalid numbers. The option the user is currently typing will be sent with a `focused: true` boolean field. +An autocomplete interaction **can return partial data** for option values. Your application will receive partial data for any existing user input, as long as that input passes client-side validation. For example, you may receive partial strings, but not invalid numbers. The option the user is currently typing will be sent with a `focused: true` boolean field and options the user has already filled will also be sent but without the `focused` field. This is a special case where options that are otherwise required might not be present, due to the user not having filled them yet. > warn > This validation is **client-side only**. From 7e00619fcc705ddd991e0585e888d75070d62e5e Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Tue, 8 Feb 2022 18:37:30 +0000 Subject: [PATCH 125/181] Add error code 40004 (#4444) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index f9c59e662e..b4891e2e82 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -186,6 +186,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 40001 | Unauthorized. Provide a valid token and try again | | 40002 | You need to verify your account in order to perform this action | | 40003 | You are opening direct messages too fast | +| 40004 | Send messages has been temporarily disabled | | 40005 | Request entity too large. Try sending something smaller in size | | 40006 | This feature has been temporarily disabled server-side | | 40007 | The user is banned from this guild | From 386156370f04c3e0aa5bf22f4f7285b5edf979c8 Mon Sep 17 00:00:00 2001 From: Yoni Lerner Date: Tue, 8 Feb 2022 10:49:07 -0800 Subject: [PATCH 126/181] Document VIEW_CHANNEL needed for joining voice (#4460) * Update Permissions.md * Update Permissions.md * Update Permissions.md --- docs/topics/Permissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Permissions.md b/docs/topics/Permissions.md index 894121917e..5c79c8cf22 100644 --- a/docs/topics/Permissions.md +++ b/docs/topics/Permissions.md @@ -38,7 +38,7 @@ Below is a table of all current permissions, their integer values in hexadecimal | VIEW_AUDIT_LOG | `0x0000000000000080` `(1 << 7)` | Allows for viewing of audit logs | | | PRIORITY_SPEAKER | `0x0000000000000100` `(1 << 8)` | Allows for using priority speaker in a voice channel | V | | STREAM | `0x0000000000000200` `(1 << 9)` | Allows the user to go live | V | -| VIEW_CHANNEL | `0x0000000000000400` `(1 << 10)` | Allows guild members to view a channel, which includes reading messages in text channels | T, V, S | +| VIEW_CHANNEL | `0x0000000000000400` `(1 << 10)` | Allows guild members to view a channel, which includes reading messages in text channels and joining voice channels | T, V, S | | SEND_MESSAGES | `0x0000000000000800` `(1 << 11)` | Allows for sending messages in a channel (does not allow sending messages in threads) | T | | SEND_TTS_MESSAGES | `0x0000000000001000` `(1 << 12)` | Allows for sending of `/tts` messages | T | | MANAGE_MESSAGES \* | `0x0000000000002000` `(1 << 13)` | Allows for deletion of other users messages | T | From 3ed90459752015a9fa43fb185a75d89431ec2112 Mon Sep 17 00:00:00 2001 From: Lukellmann <47486203+Lukellmann@users.noreply.github.com> Date: Tue, 8 Feb 2022 19:49:51 +0100 Subject: [PATCH 127/181] creator_id is optional (#4454) --- docs/resources/Guild_Scheduled_Event.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index ef4a302624..3d7525403e 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -11,7 +11,7 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). | id | snowflake | the id of the scheduled event | | guild_id | snowflake | the guild id which the scheduled event belongs to | | channel_id ** | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | -| creator_id * | ?snowflake | the id of the user that created the scheduled event * | +| creator_id? * | ?snowflake | the id of the user that created the scheduled event * | | name | string | the name of the scheduled event (1-100 characters) | | description? | string | the description of the scheduled event (1-1000 characters) | | scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | From 3891389606ef8710e7c54d65ae79d0c5313f0247 Mon Sep 17 00:00:00 2001 From: Spotlight Date: Tue, 8 Feb 2022 12:53:30 -0600 Subject: [PATCH 128/181] Document external asset URLs (#4371) * Document external asset URLs for the GameSDK * Document external asset URLs --- docs/game_sdk/Activities.md | 16 ++++++++-------- docs/rich_presence/FAQ.md | 2 +- docs/topics/Gateway.md | 2 ++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/game_sdk/Activities.md b/docs/game_sdk/Activities.md index c11f00e376..c96eb2df70 100644 --- a/docs/game_sdk/Activities.md +++ b/docs/game_sdk/Activities.md @@ -45,12 +45,12 @@ For more detailed information and documentation around the Rich Presence feature ###### ActivityAssets Struct -| name | type | description | -| ---------- | ------ | ------------------------------ | -| LargeImage | string | keyname of an asset to display | -| LargeText | string | hover text for the large image | -| SmallImage | string | keyname of an asset to display | -| SmallText | string | hover text for the small image | +| name | type | description | +| ---------- | ------ | ------------------------------------------------------------------------------------- | +| LargeImage | string | see [Activity Asset Image](#DOCS_TOPICS_GATEWAY/activity-object-activity-asset-image) | +| LargeText | string | hover text for the large image | +| SmallImage | string | see [Activity Asset Image](#DOCS_TOPICS_GATEWAY/activity-object-activity-asset-image) | +| SmallText | string | hover text for the small image | ###### ActivityParty Struct @@ -192,9 +192,9 @@ var activity = new Discord.Activity }, Assets = { - LargeImage = "foo largeImageKey", // Larger Image Asset Key + LargeImage = "foo largeImageKey", // Larger Image Asset Value LargeText = "foo largeImageText", // Large Image Tooltip - SmallImage = "foo smallImageKey", // Small Image Asset Key + SmallImage = "foo smallImageKey", // Small Image Asset Value SmallText = "foo smallImageText", // Small Image Tooltip }, Party = diff --git a/docs/rich_presence/FAQ.md b/docs/rich_presence/FAQ.md index 867990184b..7cce96d95b 100644 --- a/docs/rich_presence/FAQ.md +++ b/docs/rich_presence/FAQ.md @@ -34,7 +34,7 @@ Currently, the SDK does not support this. Party slot information is determined b #### Q: Can I send images via the payload rather than uploading them to my Developer Dashboard? -Unfortunately, the SDK does not support this feature right now. However, we hear your desires! We know that a lot of games, like customization-heavy RPGs, would benefit greatly from being able to programmatically upload assets. It may be something we tackle in the future. +Yes! In addition to uploading an asset and specifying its name, you can also specify an external image URL for us to proxy. For more information, see [Activity Asset Image](#DOCS_TOPICS_GATEWAY/activity-object-activity-asset-image). #### Q: Can I change something in the SDK for my own purposes? diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 7728bf6df7..77b7666b15 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -1378,6 +1378,8 @@ Active sessions are indicated with an "online", "idle", or "dnd" string per plat Activity asset images are arbitrary strings which usually contain snowflake IDs or prefixed image IDs. Treat data within this field carefully, as it is user-specifiable and not sanitized. +To use an external image via media proxy, specify the URL as the field's value when sending. You will only receive the `mp:` prefix via the gateway. + | Type | Format | Image URL | |-------------------|--------------------------|----------------------------------------------------------------------------| | Application Asset | `{application_asset_id}` | see [Application Asset Image Formatting](#DOCS_REFERENCE/image-formatting) | From 4b6c6a14d46ff2e62f6384e3ebd9116243c650c9 Mon Sep 17 00:00:00 2001 From: devsnek Date: Tue, 8 Feb 2022 17:34:15 -0600 Subject: [PATCH 129/181] document modals (#4459) --- ci/checkLinks.ts | 4 +- docs/Change_Log.md | 6 ++ docs/interactions/Message_Components.md | 81 +++++++++++++++---- docs/interactions/Receiving_and_Responding.md | 15 +++- 4 files changed, 90 insertions(+), 16 deletions(-) diff --git a/ci/checkLinks.ts b/ci/checkLinks.ts index 209a52196f..d1a0ca4479 100644 --- a/ci/checkLinks.ts +++ b/ci/checkLinks.ts @@ -155,8 +155,10 @@ for (const [name, raw] of docFiles) { if (!anchor) continue; if (!validLinks.get(page)!.includes(anchor)) { + const suggestions = validLinks.get(page)!.filter((a) => a.includes(anchor)); + const suggestionText = suggestions.length > 0 ? ` Did you mean one of (${suggestions.join(", ")})?` : ""; ownResults.push({ - title: `Anchor ${chalk.cyan(anchor)} does not exist on ${chalk.blueBright(page)}`, + title: `Anchor ${chalk.cyan(anchor)} does not exist on ${chalk.blueBright(page)}${suggestionText}`, startLine: lineNum + 1, startColumn: match.index, endColumn: (match.index ?? 0) + match[0].length, diff --git a/docs/Change_Log.md b/docs/Change_Log.md index ad77899435..d829f76d3d 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -1,5 +1,11 @@ # Change Log +## Interaction Modals + +#### Feb 8, 2022 + +Interaction modals are now available, allowing applications to prompt users for further detailed input. Check out [the modal docs](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object-modal) for more information. + ## Guild Member Timeouts #### Dec 20, 2021 diff --git a/docs/interactions/Message_Components.md b/docs/interactions/Message_Components.md index e9f27a4e43..8ae90a61d9 100644 --- a/docs/interactions/Message_Components.md +++ b/docs/interactions/Message_Components.md @@ -14,20 +14,25 @@ The top-level `components` field is an array of [Action Row](#DOCS_INTERACTIONS_ ###### Component Structure -| Field | Type | Description | Valid For | -| ------------ | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| type | integer | [component type](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object-component-types) | all types | -| custom_id? | string | a developer-defined identifier for the component, max 100 characters | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons), [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| disabled? | boolean | whether the component is disabled, default `false` | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons), [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| style? | integer | one of [button styles](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/button-object-button-styles) | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | -| label? | string | text that appears on the button, max 80 characters | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | -| emoji? | partial [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) | `name`, `id`, and `animated` | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | -| url? | string | a url for link-style buttons | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | -| options? | array of [select options](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menu-object-select-option-structure) | the choices in the select, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| placeholder? | string | custom placeholder text if nothing is selected, max 100 characters | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| min_values? | integer | the minimum number of items that must be chosen; default 1, min 0, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| max_values? | integer | the maximum number of items that can be chosen; default 1, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| components? | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | a list of child components | [Action Rows](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/action-rows) | +| Field | Type | Description | Valid For | +| ------------ | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| type | integer | [component type](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object-component-types) | all types | +| custom_id? | string | a developer-defined identifier for the component, max 100 characters | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons), [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | +| disabled? | boolean | whether the component is disabled, default `false` | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons), [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | +| style? | integer | one of [button styles](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/button-object-button-styles) | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | +| label? | string | text that appears on the button, max 80 characters | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | +| emoji? | partial [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) | `name`, `id`, and `animated` | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | +| url? | string | a url for link-style buttons | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | +| options? | array of [select options](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menu-object-select-option-structure) | the choices in the select, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | +| placeholder? | string | custom placeholder text if nothing is selected, max 100 characters | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus), [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | +| min_values? | integer | the minimum number of items that must be chosen; default 1, min 0, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | +| max_values? | integer | the maximum number of items that can be chosen; default 1, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | +| components? | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | a list of child components | [Action Rows](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/action-rows) | +| label? | string | the label for this component | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | +| min_length? | integer | the minimum input length for a text input | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | +| max_length? | integer | the maximum input length for a text input | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | +| required? | boolean | whether this component is required to be filled | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | +| value? | string | a pre-filled value for this component | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | ###### Component Types @@ -418,3 +423,51 @@ Select menus support single-select and multi-select behavior, meaning you can pr "version": 1 } ``` + +## Text Inputs + +Text inputs are an interactive component that render on modals. They can be used to collect short-form or long-form text. + +###### Text Input Example + +```json +// this is a modal +{ + "title": "My Cool Modal", + "custom_id": "cool_modal", + "components": [{ + "type": 1, + "components": [{ + "type": 4, + "custom_id": "name", + "label": "Name", + "style": 1, + "min_length": 1, + "max_length": 4000, + "placeholder": "John", + "required": true + }] + }] +} +``` + +###### Text Input Structure + +| Field | Type | Description | +| ------------ | ------- | ------------------------------------------------------------------------------------------- | +| type | integer | `4` for a text input | +| custom_id | string | a developer-defined identifier for the input, max 100 characters | +| style | integer | the [Text Input Style](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs-text-input-styles) | +| label? | string | the label for this component | +| min_length? | integer | the minimum input length for a text input, min 0, max 4000 | +| max_length? | integer | the maximum input length for a text input, min 1, max 4000 | +| required? | boolean | whether this component is required to be filled, default false | +| value? | string | a pre-filled value for this component, max 4000 characters | +| placeholder? | string | custom placeholder text if the input is empty, max 100 characters | + +###### Text Input Styles + +| Name | Value | Description | +| --------- | ----- | ------------------- | +| Short | 1 | A single-line input | +| Paragraph | 2 | A multi-line input | diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 4c903f404d..323c390b2e 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -42,6 +42,7 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide | APPLICATION_COMMAND | 2 | | MESSAGE_COMPONENT | 3 | | APPLICATION_COMMAND_AUTOCOMPLETE | 4 | +| MODAL_SUBMIT | 5 | ###### Interaction Data Structure @@ -52,10 +53,11 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide | type | integer | the [`type`](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-structure) of the invoked command | Application Command | | resolved? | [resolved data](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object-resolved-data-structure) | converted users + roles + channels | Application Command | | options? | array of [application command interaction data option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-interaction-data-option-structure) | the params + values from the user | Application Command | -| custom_id? | string | the [`custom_id`](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/custom-id) of the component | Component | +| custom_id? | string | the [`custom_id`](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/custom-id) of the component | Component, Modal Submit | | component_type? | integer | the [type](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object-component-types) of the component | Component | | values? | array of [select option values](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menu-object-select-option-structure) | the values the user selected | Component (Select) | | target_id? | snowflake | id the of user or message targetted by a [user](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/user-commands) or [message](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/message-commands) command | [User Command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/user-commands), [Message Command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/message-commands) | +| components? | array of [message components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/message-components) | the values submitted by the user | Modal Submit | ###### Resolved Data Structure @@ -172,9 +174,12 @@ There are a number of ways you can respond to an interaction: | DEFERRED_UPDATE_MESSAGE\* | 6 | for components, ACK an interaction and edit the original message later; the user does not see a loading state | | UPDATE_MESSAGE\* | 7 | for components, edit the message the component was attached to | | APPLICATION_COMMAND_AUTOCOMPLETE_RESULT | 8 | respond to an autocomplete interaction with suggested choices | +| MODAL\*\* | 9 | respond to an interaction with a popup modal | \* Only valid for [component-based](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) interactions +\*\* Not available for MODAL_SUBMIT and PING interactions. + ###### Interaction Callback Data Structure ###### Messages @@ -200,6 +205,14 @@ Not all message fields are currently supported. | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | | choices | array of [choices](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-choice-structure) | autocomplete choices (max of 25 choices) | +###### Modal + +| Name | Type | Description | +| ---------- | ------------------------------------------------------------- | --------------------------------------------------------------------------- | +| custom_id | string | a developer-defined identifier for the component, max 100 characters | +| title | string | the title of the popup modal | +| components | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) | between 1 and 5 (inclusive) components that make up the modal | + > warn > While interaction responses and followups are webhooks, they respect @everyone's ability to ping @everyone / @here . Nonetheless if your application responds with user data, you should still use [`allowed_mentions`](#DOCS_RESOURCES_CHANNEL/allowed-mentions-object) to filter which mentions in the content actually ping. Other differences include the ability to send named links in the message content (`[text](url)`). From b268fe763a1e7707cac868aecc60957a8b8260aa Mon Sep 17 00:00:00 2001 From: Amitoj Singh <35400192+amitojsingh366@users.noreply.github.com> Date: Wed, 9 Feb 2022 02:35:09 +0300 Subject: [PATCH 130/181] document attachment application command type (#4253) --- docs/interactions/Application_Commands.md | 25 ++++++++++--------- docs/interactions/Receiving_and_Responding.md | 3 ++- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index d38c2ecde0..099ca4b501 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -57,18 +57,19 @@ Application commands are commands that an application can register to Discord. T ###### Application Command Option Type -| Name | Value | Note | -| ----------------- | ----- | --------------------------------------- | -| SUB_COMMAND | 1 | | -| SUB_COMMAND_GROUP | 2 | | -| STRING | 3 | | -| INTEGER | 4 | Any integer between -2^53 and 2^53 | -| BOOLEAN | 5 | | -| USER | 6 | | -| CHANNEL | 7 | Includes all channel types + categories | -| ROLE | 8 | | -| MENTIONABLE | 9 | Includes users and roles | -| NUMBER | 10 | Any double between -2^53 and 2^53 | +| Name | Value | Note | +| ----------------- | ----- | -------------------------------------------------------------- | +| SUB_COMMAND | 1 | | +| SUB_COMMAND_GROUP | 2 | | +| STRING | 3 | | +| INTEGER | 4 | Any integer between -2^53 and 2^53 | +| BOOLEAN | 5 | | +| USER | 6 | | +| CHANNEL | 7 | Includes all channel types + categories | +| ROLE | 8 | | +| MENTIONABLE | 9 | Includes users and roles | +| NUMBER | 10 | Any double between -2^53 and 2^53 | +| ATTACHMENT | 11 | [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) object | ###### Application Command Option Choice Structure diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 323c390b2e..79b70dbbba 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -51,7 +51,7 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide | id | snowflake | the [`ID`](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-structure) of the invoked command | Application Command | | name | string | the [`name`](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-structure) of the invoked command | Application Command | | type | integer | the [`type`](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-structure) of the invoked command | Application Command | -| resolved? | [resolved data](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object-resolved-data-structure) | converted users + roles + channels | Application Command | +| resolved? | [resolved data](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object-resolved-data-structure) | converted users + roles + channels + attachments | Application Command | | options? | array of [application command interaction data option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-interaction-data-option-structure) | the params + values from the user | Application Command | | custom_id? | string | the [`custom_id`](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/custom-id) of the component | Component, Modal Submit | | component_type? | integer | the [type](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object-component-types) of the component | Component | @@ -72,6 +72,7 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide | roles? | Map of Snowflakes to [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects | the ids and Role objects | | channels?\*\* | Map of Snowflakes to [partial channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects | the ids and partial Channel objects | | messages? | Map of Snowflakes to [partial messages](#DOCS_RESOURCES_CHANNEL/message-object) objects | the ids and partial Message objects | +| attachments? | Map of Snowflakes to [attachment](#DOCS_RESOURCES_CHANNEL/attachment-object) objects | the ids and attachment objects | \* Partial `Member` objects are missing `user`, `deaf` and `mute` fields From ba99e8c824a10c6398aaf918e78bc17607fb7cad Mon Sep 17 00:00:00 2001 From: devsnek Date: Tue, 8 Feb 2022 19:33:18 -0600 Subject: [PATCH 131/181] fix label field --- docs/interactions/Message_Components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Message_Components.md b/docs/interactions/Message_Components.md index 8ae90a61d9..aaff5d7657 100644 --- a/docs/interactions/Message_Components.md +++ b/docs/interactions/Message_Components.md @@ -458,7 +458,7 @@ Text inputs are an interactive component that render on modals. They can be used | type | integer | `4` for a text input | | custom_id | string | a developer-defined identifier for the input, max 100 characters | | style | integer | the [Text Input Style](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs-text-input-styles) | -| label? | string | the label for this component | +| label | string | the label for this component | | min_length? | integer | the minimum input length for a text input, min 0, max 4000 | | max_length? | integer | the maximum input length for a text input, min 1, max 4000 | | required? | boolean | whether this component is required to be filled, default false | From bc4cfa8fa1b85b80bde2e78179d0c7413c385157 Mon Sep 17 00:00:00 2001 From: apacheopteryx <43933794+apacheli@users.noreply.github.com> Date: Tue, 8 Feb 2022 20:53:30 -0600 Subject: [PATCH 132/181] Add Text Input to Component Types table (#4465) Co-authored-by: devsnek --- docs/interactions/Message_Components.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/interactions/Message_Components.md b/docs/interactions/Message_Components.md index aaff5d7657..508cbee267 100644 --- a/docs/interactions/Message_Components.md +++ b/docs/interactions/Message_Components.md @@ -41,6 +41,7 @@ The top-level `components` field is an array of [Action Row](#DOCS_INTERACTIONS_ | 1 | Action Row | A container for other components | | 2 | Button | A button object | | 3 | Select Menu | A select menu for picking from choices | +| 4 | Text Input | A text input object | ###### Example Component From ba94a8504acaf05755f4100a42e2c3b10f9eb2d2 Mon Sep 17 00:00:00 2001 From: devsnek Date: Tue, 8 Feb 2022 21:17:19 -0600 Subject: [PATCH 133/181] fix webhook route rendering --- docs/resources/Webhook.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index 7feb9e649a..4651ba449c 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -268,7 +268,7 @@ Any provided files will be **appended** to the message. To remove or replace fil \*\* See [Uploading Files](#DOCS_REFERENCE/uploading-files) for details. -# Delete Webhook Message % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} +## Delete Webhook Message % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} Deletes a message that was created by the webhook. Returns a `204 No Content` response on success. From fbd914a6a4b0b62962cdc5f82ccb8739fe72a808 Mon Sep 17 00:00:00 2001 From: Ian Mitchell Date: Wed, 9 Feb 2022 10:23:28 -0800 Subject: [PATCH 134/181] Add Attachments (#4478) --- docs/Change_Log.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Change_Log.md b/docs/Change_Log.md index d829f76d3d..b2da2f3a15 100644 --- a/docs/Change_Log.md +++ b/docs/Change_Log.md @@ -1,11 +1,13 @@ # Change Log -## Interaction Modals +## Interaction Modals and Application Command Attachment Option Type #### Feb 8, 2022 Interaction modals are now available, allowing applications to prompt users for further detailed input. Check out [the modal docs](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object-modal) for more information. +Application Commands can now add an attachment option type. See [the option type table](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) for more information. + ## Guild Member Timeouts #### Dec 20, 2021 From 8ea95b8fc5bd965323757e7486028758e674ec7b Mon Sep 17 00:00:00 2001 From: Almeida Date: Thu, 10 Feb 2022 23:49:01 +0000 Subject: [PATCH 135/181] Add error code 40060 (#4484) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index b4891e2e82..d1d0e43b33 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -193,6 +193,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 40032 | Target user is not connected to voice | | 40033 | This message has already been crossposted | | 40041 | An application command with that name already exists | +| 40060 | Interaction has already been acknowledged | | 50001 | Missing access | | 50002 | Invalid account type | | 50003 | Cannot execute action on a DM channel | From ded2b3a87f72be9839dd88348452b297bc57150b Mon Sep 17 00:00:00 2001 From: devsnek Date: Fri, 11 Feb 2022 22:22:52 -0600 Subject: [PATCH 136/181] Update Receiving_and_Responding.md --- docs/interactions/Receiving_and_Responding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 79b70dbbba..37942ae905 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -349,7 +349,7 @@ Edits the initial Interaction response. Functions the same as [Edit Webhook Mess ## Delete Original Interaction Response % DELETE /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/@original -Deletes the initial Interaction response. Returns `204 No Content` on success. +Deletes the initial Interaction response. Returns `204 No Content` on success. Does not support ephemeral followups. ## Create Followup Message % POST /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object} From e246041390a61bf84418d76ef6aaaefaa785558f Mon Sep 17 00:00:00 2001 From: devsnek Date: Sat, 12 Feb 2022 21:48:01 -0600 Subject: [PATCH 137/181] required field defaults to true --- docs/interactions/Message_Components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Message_Components.md b/docs/interactions/Message_Components.md index 508cbee267..d37150c6f4 100644 --- a/docs/interactions/Message_Components.md +++ b/docs/interactions/Message_Components.md @@ -462,7 +462,7 @@ Text inputs are an interactive component that render on modals. They can be used | label | string | the label for this component | | min_length? | integer | the minimum input length for a text input, min 0, max 4000 | | max_length? | integer | the maximum input length for a text input, min 1, max 4000 | -| required? | boolean | whether this component is required to be filled, default false | +| required? | boolean | whether this component is required to be filled, default true | | value? | string | a pre-filled value for this component, max 4000 characters | | placeholder? | string | custom placeholder text if the input is empty, max 100 characters | From e6c97b14ee2a3adab22be24e2eaa6a42a8781d5d Mon Sep 17 00:00:00 2001 From: Gus Caplan Date: Sat, 12 Feb 2022 21:57:27 -0600 Subject: [PATCH 138/181] remove confusing union table --- docs/interactions/Message_Components.md | 24 +- package-lock.json | 6370 +++++++++++------------ 2 files changed, 3186 insertions(+), 3208 deletions(-) diff --git a/docs/interactions/Message_Components.md b/docs/interactions/Message_Components.md index d37150c6f4..9e841055e3 100644 --- a/docs/interactions/Message_Components.md +++ b/docs/interactions/Message_Components.md @@ -12,28 +12,6 @@ The top-level `components` field is an array of [Action Row](#DOCS_INTERACTIONS_ ### Component Object -###### Component Structure - -| Field | Type | Description | Valid For | -| ------------ | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| type | integer | [component type](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object-component-types) | all types | -| custom_id? | string | a developer-defined identifier for the component, max 100 characters | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons), [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| disabled? | boolean | whether the component is disabled, default `false` | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons), [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| style? | integer | one of [button styles](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/button-object-button-styles) | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | -| label? | string | text that appears on the button, max 80 characters | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | -| emoji? | partial [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) | `name`, `id`, and `animated` | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | -| url? | string | a url for link-style buttons | [Buttons](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/buttons) | -| options? | array of [select options](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menu-object-select-option-structure) | the choices in the select, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| placeholder? | string | custom placeholder text if nothing is selected, max 100 characters | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus), [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | -| min_values? | integer | the minimum number of items that must be chosen; default 1, min 0, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| max_values? | integer | the maximum number of items that can be chosen; default 1, max 25 | [Select Menus](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menus) | -| components? | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object) | a list of child components | [Action Rows](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/action-rows) | -| label? | string | the label for this component | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | -| min_length? | integer | the minimum input length for a text input | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | -| max_length? | integer | the maximum input length for a text input | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | -| required? | boolean | whether this component is required to be filled | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | -| value? | string | a pre-filled value for this component | [Text Inputs](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/text-inputs) | - ###### Component Types | Type | Name | Description | @@ -43,6 +21,8 @@ The top-level `components` field is an array of [Action Row](#DOCS_INTERACTIONS_ | 3 | Select Menu | A select menu for picking from choices | | 4 | Text Input | A text input object | +The structure of each component type is described in detail below. + ###### Example Component ```json diff --git a/package-lock.json b/package-lock.json index 95f911ad75..b95500a4a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,3188 +1,3186 @@ { - "name": "discord-api-docs", - "version": "1.1.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "version": "1.1.1", - "license": "MIT", - "devDependencies": { - "@actions/core": "^1.6.0", - "@types/node": "^16.10.3", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", - "chalk": "^4.1.2", - "eslint": "^7.32.0", - "eslint-config-marine": "^9.0.6", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "prettier": "^2.4.1", - "typescript": "^4.4.3" - }, - "engines": { - "node": "^16.8.0" - } - }, - "node_modules/@actions/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz", - "integrity": "sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==", - "dev": true, - "dependencies": { - "@actions/http-client": "^1.0.11" - } - }, - "node_modules/@actions/http-client": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", - "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", - "dev": true, - "dependencies": { - "tunnel": "0.0.6" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", - "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-aqua": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-aqua/-/eslint-config-aqua-9.0.2.tgz", - "integrity": "sha512-WqV4EYX3pXoL0TkUBH9VVHoWjR3eJ0ud1p5OmSfbRoyjDbUJURs78fpeU4H8t88pO8mFB4SHTZM95DJEwKG/MQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-config-marine": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/eslint-config-marine/-/eslint-config-marine-9.0.6.tgz", - "integrity": "sha512-PPx84UDPQrLM5kyGG4kaDCQ2EAfzh3bcFjS9Sqg322z2vzERg8di3D4YSjUHWgXNqgooOUor8qjzM2NnPL0AKw==", - "dev": true, - "dependencies": { - "eslint-config-aqua": "^9.0.2" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - }, - "dependencies": { - "@actions/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz", - "integrity": "sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==", - "dev": true, - "requires": { - "@actions/http-client": "^1.0.11" - } - }, - "@actions/http-client": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", - "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", - "dev": true, - "requires": { - "tunnel": "0.0.6" - } - }, - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/node": { - "version": "16.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", - "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } - }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } - } - }, - "eslint-config-aqua": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-aqua/-/eslint-config-aqua-9.0.2.tgz", - "integrity": "sha512-WqV4EYX3pXoL0TkUBH9VVHoWjR3eJ0ud1p5OmSfbRoyjDbUJURs78fpeU4H8t88pO8mFB4SHTZM95DJEwKG/MQ==", - "dev": true - }, - "eslint-config-marine": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/eslint-config-marine/-/eslint-config-marine-9.0.6.tgz", - "integrity": "sha512-PPx84UDPQrLM5kyGG4kaDCQ2EAfzh3bcFjS9Sqg322z2vzERg8di3D4YSjUHWgXNqgooOUor8qjzM2NnPL0AKw==", - "dev": true, - "requires": { - "eslint-config-aqua": "^9.0.2" - } - }, - "eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } + "name": "discord-api-docs", + "version": "1.1.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "discord-api-docs", + "version": "1.1.1", + "license": "MIT", + "devDependencies": { + "@actions/core": "^1.6.0", + "@types/node": "^16.10.3", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "chalk": "^4.1.2", + "eslint": "^7.32.0", + "eslint-config-marine": "^9.0.6", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0", + "prettier": "^2.4.1", + "typescript": "^4.4.3" + } + }, + "node_modules/@actions/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz", + "integrity": "sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==", + "dev": true, + "dependencies": { + "@actions/http-client": "^1.0.11" + } + }, + "node_modules/@actions/http-client": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", + "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", + "dev": true, + "dependencies": { + "tunnel": "0.0.6" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", + "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-aqua": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-aqua/-/eslint-config-aqua-9.0.2.tgz", + "integrity": "sha512-WqV4EYX3pXoL0TkUBH9VVHoWjR3eJ0ud1p5OmSfbRoyjDbUJURs78fpeU4H8t88pO8mFB4SHTZM95DJEwKG/MQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-config-marine": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/eslint-config-marine/-/eslint-config-marine-9.0.6.tgz", + "integrity": "sha512-PPx84UDPQrLM5kyGG4kaDCQ2EAfzh3bcFjS9Sqg322z2vzERg8di3D4YSjUHWgXNqgooOUor8qjzM2NnPL0AKw==", + "dev": true, + "dependencies": { + "eslint-config-aqua": "^9.0.2" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, + "dependencies": { + "@actions/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz", + "integrity": "sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==", + "dev": true, + "requires": { + "@actions/http-client": "^1.0.11" + } + }, + "@actions/http-client": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", + "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", + "dev": true, + "requires": { + "tunnel": "0.0.6" + } + }, + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/node": { + "version": "16.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", + "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + } + }, + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-config-aqua": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-aqua/-/eslint-config-aqua-9.0.2.tgz", + "integrity": "sha512-WqV4EYX3pXoL0TkUBH9VVHoWjR3eJ0ud1p5OmSfbRoyjDbUJURs78fpeU4H8t88pO8mFB4SHTZM95DJEwKG/MQ==", + "dev": true + }, + "eslint-config-marine": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/eslint-config-marine/-/eslint-config-marine-9.0.6.tgz", + "integrity": "sha512-PPx84UDPQrLM5kyGG4kaDCQ2EAfzh3bcFjS9Sqg322z2vzERg8di3D4YSjUHWgXNqgooOUor8qjzM2NnPL0AKw==", + "dev": true, + "requires": { + "eslint-config-aqua": "^9.0.2" + } + }, + "eslint-config-prettier": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "dev": true, + "requires": {} + }, + "eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "table": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } } From 636841fbbb70c1752a7f768fdefaf333ad87c6bc Mon Sep 17 00:00:00 2001 From: Zack Date: Mon, 14 Feb 2022 20:00:34 -0500 Subject: [PATCH 139/181] clarify rate limit headers on 429s --- docs/topics/Rate_Limits.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/topics/Rate_Limits.md b/docs/topics/Rate_Limits.md index cd654d1f7d..23e5794dda 100644 --- a/docs/topics/Rate_Limits.md +++ b/docs/topics/Rate_Limits.md @@ -30,12 +30,12 @@ X-RateLimit-Bucket: abcd1234 - **X-RateLimit-Reset** - Epoch time (seconds since 00:00:00 UTC on January 1, 1970) at which the rate limit resets - **X-RateLimit-Reset-After** - Total time (in seconds) of when the current rate limit bucket will reset. Can have decimals to match previous millisecond ratelimit precision - **X-RateLimit-Bucket** - A unique string denoting the rate limit being encountered (non-inclusive of major parameters in the route path) -- **X-RateLimit-Global** - Returned only on HTTP 429 responses if the rate limit headers returned are of the global rate limit (not per-route) +- **X-RateLimit-Global** - Returned only on HTTP 429 responses if the rate limit encountered is the global rate limit (not per-route) - **X-RateLimit-Scope** - Returned only on HTTP 429 responses. Value can be `user` (per user limit), `global` (per user global limit), or `shared` (per resource limit) ## Exceeding A Rate Limit -In the case that a rate limit is exceeded, the API will return a HTTP 429 response code with a JSON body. +In the case that a rate limit is exceeded, the API will return a HTTP 429 response code with a JSON body. Your application should rely on the `Retry-After` header or `retry_after` field to determine when to retry the request. ###### Rate Limit Response Structure @@ -45,7 +45,7 @@ In the case that a rate limit is exceeded, the API will return a HTTP 429 respon | retry_after | float | The number of seconds to wait before submitting another request. | | global | boolean | A value indicating if you are being globally rate limited or not | -Note that the normal rate-limiting headers will be sent in this response. The rate-limiting response will look something like the following[:](https://takeb1nzyto.space/) +Note that normal route rate-limiting headers will also be sent in this response. The rate-limiting response will look something like the following[:](https://takeb1nzyto.space/) ###### Example Exceeded User Rate Limit Response @@ -72,7 +72,7 @@ Note that the normal rate-limiting headers will be sent in this response. The ra ``` < HTTP/1.1 429 TOO MANY REQUESTS < Content-Type: application/json -< Retry-After: 65 +< Retry-After: 1337 < X-RateLimit-Limit: 10 < X-RateLimit-Remaining: 9 < X-RateLimit-Reset: 1470173023.123 @@ -81,7 +81,7 @@ Note that the normal rate-limiting headers will be sent in this response. The ra < X-RateLimit-Scope: shared { "message": "The resource is being rate limited.", - "retry_after": 64.57, + "retry_after": 1336.57, "global": false } ``` From b7596e1fe02760f8a6b3866dcd38ab2812c3b8e5 Mon Sep 17 00:00:00 2001 From: Rodry <38259440+ImRodry@users.noreply.github.com> Date: Tue, 15 Feb 2022 18:37:45 +0000 Subject: [PATCH 140/181] Add default for delete_message_days (#4488) --- docs/resources/Guild.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index 386bb7de4b..e71394f06a 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -907,10 +907,10 @@ Create a guild ban, and optionally delete previous messages sent by the banned u ###### JSON Params -| Field | Type | Description | -| -------------------- | ------- | ------------------------------------------- | -| delete_message_days? | integer | number of days to delete messages for (0-7) | -| reason? | string | reason for the ban (deprecated) | +| Field | Type | Description | Default | +| -------------------- | ------- | ------------------------------------------- | ------- | +| delete_message_days? | integer | number of days to delete messages for (0-7) | 0 | +| reason? | string | reason for the ban (deprecated) | | ## Remove Guild Ban % DELETE /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/bans/{user.id#DOCS_RESOURCES_USER/user-object} From 7f6dfe54d25615a6efd58fbd9818aa1062d66b08 Mon Sep 17 00:00:00 2001 From: Almeida Date: Tue, 15 Feb 2022 18:41:40 +0000 Subject: [PATCH 141/181] make `data` not optional on modal submit interactions (#4486) --- docs/interactions/Receiving_and_Responding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 37942ae905..91f142b065 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -28,7 +28,7 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide | locale?\*\*\* | string | the selected [language](#DOCS_REFERENCE/locales) of the invoking user | | guild_locale? | string | the [guild's preferred locale](#DOCS_RESOURCES_GUILD/guild-object), if invoked in a guild | -\* This is always present on application command and message component interaction types. It is optional for future-proofing against new interaction types +\* This is always present on application command, message component, and modal submit interaction types. It is optional for future-proofing against new interaction types \*\* `member` is sent when the interaction is invoked in a guild, and `user` is sent when invoked in a DM From 7d0ccfb6be3760295b473451ed8b1dd2dada7bbe Mon Sep 17 00:00:00 2001 From: FW <30873659+fwcd@users.noreply.github.com> Date: Tue, 15 Feb 2022 19:47:46 +0100 Subject: [PATCH 142/181] Mark .md files as linguist-detectable (#4471) --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 231597d879..eaf59d93f1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,7 +4,7 @@ .git* text *.json text *.js text -*.md text +*.md text linguist-detectable *.{yml,yaml} text *.png binary From b7647b28beeae912a748c5ad4d0fc8d61ee12e1f Mon Sep 17 00:00:00 2001 From: Zoddo Date: Tue, 15 Feb 2022 19:52:54 +0100 Subject: [PATCH 143/181] Document that interactions endpoints are not bound the Global Rate Limit (#4416) --- docs/interactions/Receiving_and_Responding.md | 3 +++ docs/topics/Rate_Limits.md | 2 ++ 2 files changed, 5 insertions(+) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 91f142b065..1228830213 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -334,6 +334,9 @@ We highly recommend checking out our [Community Resources](#DOCS_TOPICS_COMMUNIT ### Endpoints +> info +> The endpoints below are not bound to the application's [Global Rate Limit](#DOCS_TOPICS_RATE_LIMITS/global-rate-limit). + ## Create Interaction Response % POST /interactions/{interaction.id#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/callback Create a response to an Interaction from the gateway. Takes an [interaction response](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object). diff --git a/docs/topics/Rate_Limits.md b/docs/topics/Rate_Limits.md index 23e5794dda..922b60a7d5 100644 --- a/docs/topics/Rate_Limits.md +++ b/docs/topics/Rate_Limits.md @@ -109,6 +109,8 @@ Global rate limit issues generally show up as repeatedly getting banned from the If you are experiencing repeated CloudFlare bans from the Discord API within normal operations of your bot, you can reach out to support to see if you qualify for increased global rate limits. You can contact Discord support using [https://dis.gd/contact](https://dis.gd/contact). +[Interaction endpoints](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/endpoints) are not bound to the bot's Global Rate Limit. + ## Invalid Request Limit aka CloudFlare bans IP addresses that make too many invalid HTTP requests are automatically and temporarily restricted from accessing the Discord API. Currently, this limit is **10,000 per 10 minutes**. An invalid request is one that results in **401**, **403**, or **429** statuses. From 043387572bb94d56dd35d9866e6e91199dba5873 Mon Sep 17 00:00:00 2001 From: Parbez Date: Wed, 16 Feb 2022 00:25:26 +0530 Subject: [PATCH 144/181] fix: roles names aren't unique (#4501) * fix: roles names aren't unique fixes: #4499 * Update Permissions.md Co-authored-by: Ian Webster --- docs/topics/Permissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Permissions.md b/docs/topics/Permissions.md index 5c79c8cf22..a77f3abca8 100644 --- a/docs/topics/Permissions.md +++ b/docs/topics/Permissions.md @@ -179,7 +179,7 @@ Permissions with regards to categories and channels within categories are a bit ### Role Object -Roles represent a set of permissions attached to a group of users. Roles have unique names, colors, and can be "pinned" to the side bar, causing their members to be listed separately. Roles are unique per guild, and can have separate permission profiles for the global context (guild) and channel context. The `@everyone` role has the same ID as the guild it belongs to. +Roles represent a set of permissions attached to a group of users. Roles have names, colors, and can be "pinned" to the side bar, causing their members to be listed separately. Roles can have separate permission profiles for the global context (guild) and channel context. The `@everyone` role has the same ID as the guild it belongs to. ###### Role Structure From 47c47f80ca865f50024acf62ab62465a52065514 Mon Sep 17 00:00:00 2001 From: Lukellmann <47486203+Lukellmann@users.noreply.github.com> Date: Tue, 15 Feb 2022 22:38:25 +0100 Subject: [PATCH 145/181] Deprecate Invite Stage Instance (#4479) * deprecate Invite Stage Instance * deprecation not in link --- docs/resources/Invite.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/resources/Invite.md b/docs/resources/Invite.md index 9a3e434b02..305e73acf2 100644 --- a/docs/resources/Invite.md +++ b/docs/resources/Invite.md @@ -6,20 +6,20 @@ Represents a code that when used, adds a user to a guild or group DM channel. ###### Invite Structure -| Field | Type | Description | -| --------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------| -| code | string | the invite code (unique ID) | -| guild? | partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object | the guild this invite is for | -| channel | ?partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the channel this invite is for | -| inviter? | [user](#DOCS_RESOURCES_USER/user-object) object | the user who created the invite | -| target_type? | integer | the [type of target](#DOCS_RESOURCES_INVITE/invite-object-invite-target-types) for this voice channel invite| -| target_user? | [user](#DOCS_RESOURCES_USER/user-object) object | the user whose stream to display for this voice channel stream invite | -| target_application? | partial [application](#DOCS_RESOURCES_APPLICATION/application-object) object | the embedded application to open for this voice channel embedded application invite | -| approximate_presence_count? | integer | approximate count of online members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | -| approximate_member_count? | integer | approximate count of total members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | -| expires_at? | ?ISO8601 timestamp | the expiration date of this invite, returned from the `GET /invites/` endpoint when `with_expiration` is `true` | -| stage_instance? | [invite stage instance](#DOCS_RESOURCES_INVITE/invite-stage-instance-object) object | stage instance data if there is a [public Stage instance](#DOCS_RESOURCES_STAGE_INSTANCE) in the Stage channel this invite is for | -| guild_scheduled_event? | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object | guild scheduled event data, only included if `guild_scheduled_event_id` contains a valid guild scheduled event id | +| Field | Type | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| code | string | the invite code (unique ID) | +| guild? | partial [guild](#DOCS_RESOURCES_GUILD/guild-object) object | the guild this invite is for | +| channel | ?partial [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object | the channel this invite is for | +| inviter? | [user](#DOCS_RESOURCES_USER/user-object) object | the user who created the invite | +| target_type? | integer | the [type of target](#DOCS_RESOURCES_INVITE/invite-object-invite-target-types) for this voice channel invite | +| target_user? | [user](#DOCS_RESOURCES_USER/user-object) object | the user whose stream to display for this voice channel stream invite | +| target_application? | partial [application](#DOCS_RESOURCES_APPLICATION/application-object) object | the embedded application to open for this voice channel embedded application invite | +| approximate_presence_count? | integer | approximate count of online members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | +| approximate_member_count? | integer | approximate count of total members, returned from the `GET /invites/` endpoint when `with_counts` is `true` | +| expires_at? | ?ISO8601 timestamp | the expiration date of this invite, returned from the `GET /invites/` endpoint when `with_expiration` is `true` | +| stage_instance? | [invite stage instance](#DOCS_RESOURCES_INVITE/invite-stage-instance-object) object | stage instance data if there is a [public Stage instance](#DOCS_RESOURCES_STAGE_INSTANCE) in the Stage channel this invite is for (deprecated) | +| guild_scheduled_event? | [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object | guild scheduled event data, only included if `guild_scheduled_event_id` contains a valid guild scheduled event id | ###### Invite Target Types @@ -96,6 +96,9 @@ Extra information about an invite, will extend the [invite](#DOCS_RESOURCES_INVI ### Invite Stage Instance Object +> warn +> This is deprecated. + ###### Invite Stage Instance Structure | Field | Type | Description | From 18e13bbeebbd9ae3b329beb628a100914445689b Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Wed, 16 Feb 2022 21:33:56 -0800 Subject: [PATCH 146/181] emojis are not just for reactions anymore --- docs/resources/Emoji.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/resources/Emoji.md b/docs/resources/Emoji.md index 82680ff4f4..874743d133 100644 --- a/docs/resources/Emoji.md +++ b/docs/resources/Emoji.md @@ -39,7 +39,7 @@ } ``` -###### Gateway Reaction Standard Emoji Example +###### Standard Emoji Example ```json { @@ -48,7 +48,7 @@ } ``` -###### Gateway Reaction Custom Emoji Examples +###### Custom Emoji Examples >info >In `MESSAGE_REACTION_ADD` gateway events `animated` will be returned for animated emoji. From e7b9e9fa2e19c13209d1b6c38fe10b7cbfffadfe Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Thu, 17 Feb 2022 09:31:43 -0800 Subject: [PATCH 147/181] fix links --- docs/topics/Gateway.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/topics/Gateway.md b/docs/topics/Gateway.md index 77b7666b15..80501c4a71 100644 --- a/docs/topics/Gateway.md +++ b/docs/topics/Gateway.md @@ -835,7 +835,7 @@ Sent when a channel relevant to the current user is deleted. The inner payload i #### Thread Create -Sent when a thread is created, relevant to the current user, or when the current user is added to a thread. The inner payload is a [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object. +Sent when a thread is created, relevant to the current user, or when the current user is added to a thread. The inner payload is a [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object. - When a thread is created, includes an additional `newly_created` boolean field. - When being added to an existing private thread, includes a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object. @@ -1231,7 +1231,7 @@ Sent when a user adds a reaction to a message. | message_id | snowflake | the id of the message | | guild_id? | snowflake | the id of the guild | | member? | [member](#DOCS_RESOURCES_GUILD/guild-member-object) object | the member who reacted if this happened in a guild | -| emoji | a partial [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) object | the emoji used to react - [example](#DOCS_RESOURCES_EMOJI/emoji-object-gateway-reaction-standard-emoji-example) | +| emoji | a partial [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) object | the emoji used to react - [example](#DOCS_RESOURCES_EMOJI/emoji-object-standard-emoji-example) | #### Message Reaction Remove @@ -1245,7 +1245,7 @@ Sent when a user removes a reaction from a message. | channel_id | snowflake | the id of the channel | | message_id | snowflake | the id of the message | | guild_id? | snowflake | the id of the guild | -| emoji | a partial [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) object | the emoji used to react - [example](#DOCS_RESOURCES_EMOJI/emoji-object-gateway-reaction-standard-emoji-example) | +| emoji | a partial [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) object | the emoji used to react - [example](#DOCS_RESOURCES_EMOJI/emoji-object-standard-emoji-example) | #### Message Reaction Remove All From daa8fad16991f9071f48b2f1675e2f48f21cc1c3 Mon Sep 17 00:00:00 2001 From: Andrew Giel Date: Fri, 25 Feb 2022 16:03:12 -0500 Subject: [PATCH 148/181] rename START_EMBEDDED_ACTIVITIES to USE_EMBEDDED_ACTIVITIES (#4555) * rename START_EMBEDDED_ACTIVITIES to USE_EMBEDDED_ACTIVITIES * update copy with "use" and capital-A Activities --- docs/topics/Permissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Permissions.md b/docs/topics/Permissions.md index a77f3abca8..3205e10e45 100644 --- a/docs/topics/Permissions.md +++ b/docs/topics/Permissions.md @@ -67,7 +67,7 @@ Below is a table of all current permissions, their integer values in hexadecimal | CREATE_PRIVATE_THREADS | `0x0000001000000000` `(1 << 36)` | Allows for creating private threads | T | | USE_EXTERNAL_STICKERS | `0x0000002000000000` `(1 << 37)` | Allows the usage of custom stickers from other servers | T | | SEND_MESSAGES_IN_THREADS | `0x0000004000000000` `(1 << 38)` | Allows for sending messages in threads | T | -| START_EMBEDDED_ACTIVITIES | `0x0000008000000000` `(1 << 39)` | Allows for launching activities (applications with the `EMBEDDED` flag) in a voice channel | V | +| USE_EMBEDDED_ACTIVITIES | `0x0000008000000000` `(1 << 39)` | Allows for using Activities (applications with the `EMBEDDED` flag) in a voice channel | V | | MODERATE_MEMBERS \*\* | `0x0000010000000000` `(1 << 40)` | Allows for timing out users to prevent them from sending or reacting to messages in chat and threads, and from speaking in voice and stage channels | | **\* These permissions require the owner account to use [two-factor authentication](#DOCS_TOPICS_OAUTH2/twofactor-authentication-requirement) when used on a guild that has server-wide 2FA enabled.** From 73017c2652699430afb8a5574497981c70a069c5 Mon Sep 17 00:00:00 2001 From: Dorukyum <53639936+Dorukyum@users.noreply.github.com> Date: Fri, 4 Mar 2022 19:49:56 +0300 Subject: [PATCH 149/181] Fix typos (#4601) --- docs/dispatch/Error_Codes.md | 2 +- docs/game_sdk/Applications.md | 2 +- docs/game_sdk/Images.md | 2 +- docs/game_sdk/SDK_Starter_Guide.md | 4 ++-- docs/interactions/Receiving_and_Responding.md | 2 +- docs/resources/Channel.md | 4 ++-- docs/topics/Threads.md | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/dispatch/Error_Codes.md b/docs/dispatch/Error_Codes.md index a2aabc9239..e1ed897db8 100644 --- a/docs/dispatch/Error_Codes.md +++ b/docs/dispatch/Error_Codes.md @@ -19,7 +19,7 @@ This page outlines some of the common errors codes that may be encountered when | 2064 | Failed to Patch File | Attempted to patch the game while running: ensure the game process is entirely ended, try restarting Discord, try disabling antivirus | | 2065 | No Manifests | Ensure that your manifests are properly selected in the Developer Portal for your SKU | | 2069 | API Error | Intermittent API issues. Wait, escalate to #dispatch in the dev server if it persists | -| 2070 | Bad Reponse | Intermittent API issues. Wait, escalate to #dispatch in the dev server if it persists | +| 2070 | Bad Response | Intermittent API issues. Wait, escalate to #dispatch in the dev server if it persists | | 2073 | Not Entitled | Check that your manifests are properly configured in the Developer Portal. Have the user install the game from the Library, not the store page | | 2076 | Two Clients Patching | User has multiple Discords open trying to patch the same game; only use one | | 9001 | Unknown | Catch-all error code. Escalate to #dispatch in dev server with repro steps/as much info as possible | diff --git a/docs/game_sdk/Applications.md b/docs/game_sdk/Applications.md index 45b5e40b03..5ae3affb4e 100644 --- a/docs/game_sdk/Applications.md +++ b/docs/game_sdk/Applications.md @@ -38,7 +38,7 @@ This manager also includes a couple useful helper functions, like getting the lo > info > Value from environment variable `DISCORD_CURRENT_LOCALE` -Get's the locale the current user has Discord set to. +Gets the locale the current user has Discord set to. Returns a `string`. diff --git a/docs/game_sdk/Images.md b/docs/game_sdk/Images.md index 984c65a0e3..bb28ab5c57 100644 --- a/docs/game_sdk/Images.md +++ b/docs/game_sdk/Images.md @@ -65,7 +65,7 @@ imageManager.Fetch(handle, false, (result, returnedHandle) => ## GetDimensions -Get's the dimensions for the given user's avatar's source image. +Gets the dimensions for the given user's avatar's source image. Returns `Discord.ImageDimensions`. diff --git a/docs/game_sdk/SDK_Starter_Guide.md b/docs/game_sdk/SDK_Starter_Guide.md index c2278774f4..5dadb6bffe 100644 --- a/docs/game_sdk/SDK_Starter_Guide.md +++ b/docs/game_sdk/SDK_Starter_Guide.md @@ -159,7 +159,7 @@ Next, we need to link these files within our project so that we can reference th "H:\\Unreal Projects\\gamesdktest\\Source\\gamesdktest\\discord-files\\" - You should get this value programatically + You should get this value programmatically */ PublicIncludePaths.Add(ABSOLUTE_PATH_TO_DISCORD_FILES_DIRECTORY) @@ -168,7 +168,7 @@ PublicIncludePaths.Add(ABSOLUTE_PATH_TO_DISCORD_FILES_DIRECTORY) "H:\\Unreal Projects\\gamesdktest\\Binaries\\Win64\\discord_game_sdk.dll.lib" - You should get this value programatically + You should get this value programmatically */ PublicAdditionalLibraries.Add(ABSOLUTE_PATH_TO_LIB_FILE) ``` diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 1228830213..e661000763 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -56,7 +56,7 @@ For [Message Components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) it includes ide | custom_id? | string | the [`custom_id`](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/custom-id) of the component | Component, Modal Submit | | component_type? | integer | the [type](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/component-object-component-types) of the component | Component | | values? | array of [select option values](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menu-object-select-option-structure) | the values the user selected | Component (Select) | -| target_id? | snowflake | id the of user or message targetted by a [user](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/user-commands) or [message](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/message-commands) command | [User Command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/user-commands), [Message Command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/message-commands) | +| target_id? | snowflake | id the of user or message targeted by a [user](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/user-commands) or [message](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/message-commands) command | [User Command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/user-commands), [Message Command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/message-commands) | | components? | array of [message components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/message-components) | the values submitted by the user | Modal Submit | diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index da56cfa48c..353f6f0e28 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -468,7 +468,7 @@ There are multiple message types that have a message_reference object. Since me - These messages have `message_id` and `channel_id`, and `guild_id` if it is in a guild, with data of the message that was replied to. The channel_id and guild_id will be the same as the reply. - Replies are created by including a message_reference when sending a message. When sending, only `message_id` is required. -###### Thread starter messsage +###### Thread starter message - These are the first message in a public thread. They point back to the message in the parent channel from which the thread was started (type 21) - These messages have `message_id`, `channel_id`, and `guild_id`. @@ -534,7 +534,7 @@ A thread member is used to indicate whether a user has joined a thread or not. | join_timestamp | ISO8601 timestamp | the time the current user last joined the thread | | flags | integer | any user-thread settings, currently only used for notifications | -** \* These fields are ommitted on the member sent within each thread in the [GUILD_CREATE](#DOCS_TOPICS_GATEWAY/guild-create) event ** +** \* These fields are omitted on the member sent within each thread in the [GUILD_CREATE](#DOCS_TOPICS_GATEWAY/guild-create) event ** ### Embed Object diff --git a/docs/topics/Threads.md b/docs/topics/Threads.md index e2ebe7336f..4855671c9d 100644 --- a/docs/topics/Threads.md +++ b/docs/topics/Threads.md @@ -154,7 +154,7 @@ When a client gains access to a channel (example: they _gain_ the moderator role ### Losing access to a channel -When a client loses access to a channel, the gateway does not send them a [Thread Delete](#DOCS_TOPICS_GATEWAY/thread-delete) event or any equivalent. They will still receive _an_ event when this happens, it just will not be a thread-specific event. Usually the event wil be [Guild Role Update](#DOCS_TOPICS_GATEWAY/guild-role-update), [Guild Member Update](#DOCS_TOPICS_GATEWAY/guild-member-update) or [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update). It will be some event that caused the permissions on a channel to change. So _if_ a bot wanted to simulate a "lost access to thread" event, it is entirely possible, albeit quite complicated to handle all cases correctly. Under the hood, Discord's clients actually don't worry about this detail. Instead, when performing an action, the client checks permissions first (which implicitly checks if the client has access to the parent channel too, since threads inherit permissions), that way _even if_ the client has some stale data, it does not end up acting on it. +When a client loses access to a channel, the gateway does not send them a [Thread Delete](#DOCS_TOPICS_GATEWAY/thread-delete) event or any equivalent. They will still receive _an_ event when this happens, it just will not be a thread-specific event. Usually the event will be [Guild Role Update](#DOCS_TOPICS_GATEWAY/guild-role-update), [Guild Member Update](#DOCS_TOPICS_GATEWAY/guild-member-update) or [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update). It will be some event that caused the permissions on a channel to change. So _if_ a bot wanted to simulate a "lost access to thread" event, it is entirely possible, albeit quite complicated to handle all cases correctly. Under the hood, Discord's clients actually don't worry about this detail. Instead, when performing an action, the client checks permissions first (which implicitly checks if the client has access to the parent channel too, since threads inherit permissions), that way _even if_ the client has some stale data, it does not end up acting on it. Additionally, when a client loses access to a channel they are not removed from the thread. Users may want to temporarily shut down access to a server or channel. Removing someone from all threads when that happens would not be a good experience, so we've chosen not to go that route. Users will still be reported as members of a thread, even if they no longer have access to the parent channel. They will **not** receive new gateway events for those threads though, with one exception: If a client is removed from a thread _after_ losing access to the parent channel, they will still receive a [Thread Members Update](#DOCS_TOPICS_GATEWAY/thread-members-update) dispatch. From 7f0501916c27f942707dbb65da49c114275fab4d Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Wed, 9 Mar 2022 18:38:27 +0000 Subject: [PATCH 150/181] Adds error 10065 (#4530) --- docs/topics/Opcodes_and_Status_Codes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index d1d0e43b33..691ffeeae3 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -143,6 +143,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 10060 | Unknown sticker | | 10062 | Unknown interaction | | 10063 | Unknown application command | +| 10065 | Unknown voice state | | 10066 | Unknown application command permissions | | 10067 | Unknown Stage Instance | | 10068 | Unknown Guild Member Verification Form | From 074e9305b45f3102266e79513c9f84ddb5697a05 Mon Sep 17 00:00:00 2001 From: EXPLOSION Date: Thu, 10 Mar 2022 03:40:28 +0900 Subject: [PATCH 151/181] Misc documentation fixes, mostly around optional fields and return types (#4564) --- docs/interactions/Receiving_and_Responding.md | 3 +- docs/resources/Guild.md | 20 +++---- docs/resources/Guild_Scheduled_Event.md | 53 ++++++++++--------- docs/resources/Stage_Instance.md | 6 +-- docs/resources/Sticker.md | 2 +- docs/resources/Webhook.md | 2 +- 6 files changed, 46 insertions(+), 40 deletions(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index e661000763..15fc8adb36 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -339,7 +339,8 @@ We highly recommend checking out our [Community Resources](#DOCS_TOPICS_COMMUNIT ## Create Interaction Response % POST /interactions/{interaction.id#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/callback -Create a response to an Interaction from the gateway. Takes an [interaction response](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object). +Create a response to an Interaction from the gateway. Body is an [interaction response](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-response-object). Returns `204 No Content`. + This endpoint also supports file attachments similar to the webhook endpoints. Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on uploading files and `multipart/form-data` requests. ## Get Original Interaction Response % GET /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/@original diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index e71394f06a..ecb3e0d3fc 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -932,15 +932,15 @@ Create a new [role](#DOCS_TOPICS_PERMISSIONS/role-object) for the guild. Require ###### JSON Params -| Field | Type | Description | Default | -| ------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ | -| name | string | name of the role | "new role" | -| permissions | string | bitwise value of the enabled/disabled permissions | @everyone permissions in guild | -| color | integer | RGB color value | 0 | -| hoist | boolean | whether the role should be displayed separately in the sidebar | false | -| icon | [image data](#DOCS_REFERENCE/image-data) | the role's icon image (if the guild has the `ROLE_ICONS` feature) | null | -| unicode_emoji | string | the role's unicode emoji as a [standard emoji](#DOCS_REFERENCE/message-formatting) (if the guild has the `ROLE_ICONS` feature) | null | -| mentionable | boolean | whether the role should be mentionable | false | +| Field | Type | Description | Default | +| ------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ | +| name | string | name of the role | "new role" | +| permissions | string | bitwise value of the enabled/disabled permissions | @everyone permissions in guild | +| color | integer | RGB color value | 0 | +| hoist | boolean | whether the role should be displayed separately in the sidebar | false | +| icon | ?[image data](#DOCS_REFERENCE/image-data) | the role's icon image (if the guild has the `ROLE_ICONS` feature) | null | +| unicode_emoji | ?string | the role's unicode emoji as a [standard emoji](#DOCS_REFERENCE/message-formatting) (if the guild has the `ROLE_ICONS` feature) | null | +| mentionable | boolean | whether the role should be mentionable | false | ## Modify Guild Role Positions % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/roles @@ -1112,7 +1112,7 @@ Modify the guild's [Welcome Screen](#DOCS_RESOURCES_GUILD/welcome-screen-object) ## Modify Current User Voice State % PATCH /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/voice-states/@me -Updates the current user's voice state. +Updates the current user's voice state. Returns `204 No Content` on success. ###### JSON Params diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index 3d7525403e..f9080d13c0 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -23,7 +23,7 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). | entity_metadata ** | ?[entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | additional metadata for the guild scheduled event | | creator? | [user](#DOCS_RESOURCES_USER/user-object) object | the user that created the scheduled event | | user_count? | integer | the number of users subscribed to the scheduled event | -| image | ?string | the [cover image hash](#DOCS_REFERENCE/image-formatting) of the scheduled event | +| image? | ?string | the [cover image hash](#DOCS_REFERENCE/image-formatting) of the scheduled event | \* `creator_id` will be null and `creator` will not be included for events created before October 25th, 2021, when the concept of `creator_id` was introduced and tracked. @@ -124,20 +124,22 @@ Create a guild scheduled event in the guild. Returns a [guild scheduled event](# ###### JSON Params -| Field | Type | Description | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | -| channel_id? * | snowflake * | the channel id of the scheduled event. | -| entity_metadata? | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | -| name | string | the name of the scheduled event | -| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | -| scheduled_start_time | ISO8601 timestamp | the time to schedule the scheduled event | -| scheduled_end_time? | ISO8601 timestamp | the time when the scheduled event is scheduled to end | -| description? | string | the description of the scheduled event | -| entity_type | [entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | -| image? | [image data](#DOCS_REFERENCE/image-data) | the cover image of the scheduled event | +| Field | Type | Description | +| ---------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | +| channel_id? * | snowflake * | the channel id of the scheduled event. | +| entity_metadata? ** | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | +| name | string | the name of the scheduled event | +| privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| scheduled_start_time | ISO8601 timestamp | the time to schedule the scheduled event | +| scheduled_end_time? ** | ISO8601 timestamp | the time when the scheduled event is scheduled to end | +| description? | string | the description of the scheduled event | +| entity_type | [entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | +| image? | [image data](#DOCS_REFERENCE/image-data) | the cover image of the scheduled event | \* Optional for events with `'entity_type': EXTERNAL` +\*\* Required for events with `'entity_type': EXTERNAL` + ## Get Guild Scheduled Event % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/scheduled-events/{guild_scheduled_event.id#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object} Get a guild scheduled event. Returns a [guild scheduled event](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object) object on success. @@ -158,20 +160,23 @@ Modify a guild scheduled event. Returns the modified [guild scheduled event](#DO > info > This endpoint supports the `X-Audit-Log-Reason` header. +> info +> This endpoint silently discards `entity_metadata` for non-`EXTERNAL` events. + ###### JSON Params -| Field | Type | Description | -| --------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | -| channel_id? * | ?snowflake | the channel id of the scheduled event, set to `null` if changing entity type to `EXTERNAL` | -| entity_metadata? | [entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | -| name? | string | the name of the scheduled event | -| privacy_level? | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | -| scheduled_start_time? | ISO8601 timestamp | the time to schedule the scheduled event | -| scheduled_end_time? * | ISO8601 timestamp | the time when the scheduled event is scheduled to end | -| description? | string | the description of the scheduled event | -| entity_type? * | [event entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | -| status? | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | -| image? | [image data](#DOCS_REFERENCE/image-data) | the cover image of the scheduled event | +| Field | Type | Description | +| --------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| channel_id? * | ?snowflake | the channel id of the scheduled event, set to `null` if changing entity type to `EXTERNAL` | +| entity_metadata? | ?[entity metadata](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | the entity metadata of the scheduled event | +| name? | string | the name of the scheduled event | +| privacy_level? | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| scheduled_start_time? | ISO8601 timestamp | the time to schedule the scheduled event | +| scheduled_end_time? * | ISO8601 timestamp | the time when the scheduled event is scheduled to end | +| description? | ?string | the description of the scheduled event | +| entity_type? * | [event entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) | the entity type of the scheduled event | +| status? | [event status](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | +| image? | [image data](#DOCS_REFERENCE/image-data) | the cover image of the scheduled event | \* If updating `entity_type` to `EXTERNAL`: diff --git a/docs/resources/Stage_Instance.md b/docs/resources/Stage_Instance.md index c24000bd7e..e440efba6f 100644 --- a/docs/resources/Stage_Instance.md +++ b/docs/resources/Stage_Instance.md @@ -59,7 +59,7 @@ When a Stage channel has no speakers for a certain period of time (on the order ## Create Stage Instance % POST /stage-instances -Creates a new Stage instance associated to a Stage channel. +Creates a new Stage instance associated to a Stage channel. Returns that [Stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-stage-instance-structure). Requires the user to be a moderator of the Stage channel. @@ -80,7 +80,7 @@ Gets the stage instance associated with the Stage channel, if it exists. ## Modify Stage Instance % PATCH /stage-instances/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object} -Updates fields of an existing Stage instance. +Updates fields of an existing Stage instance. Returns the updated [Stage instance](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-stage-instance-structure). Requires the user to be a moderator of the Stage channel. @@ -96,7 +96,7 @@ Requires the user to be a moderator of the Stage channel. ## Delete Stage Instance % DELETE /stage-instances/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object} -Deletes the Stage instance. +Deletes the Stage instance. Returns `204 No Content`. Requires the user to be a moderator of the Stage channel. diff --git a/docs/resources/Sticker.md b/docs/resources/Sticker.md index a1595ef0f8..318d841154 100644 --- a/docs/resources/Sticker.md +++ b/docs/resources/Sticker.md @@ -13,7 +13,7 @@ Represents a sticker that can be sent in messages. | name | string | name of the sticker | | description | ?string | description of the sticker | | tags\* | string | autocomplete/suggestion tags for the sticker (max 200 characters) | -| asset | string | **Deprecated** previously the sticker asset hash, now an empty string | +| asset? | string | **Deprecated** previously the sticker asset hash, now an empty string | | type | integer | [type of sticker](#DOCS_RESOURCES_STICKER/sticker-object-sticker-types) | | format_type | integer | [type of sticker format](#DOCS_RESOURCES_STICKER/sticker-object-sticker-format-types) | | available? | boolean | whether this guild sticker can be used, may be false due to loss of Server Boosts | diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index 4651ba449c..e68fe3e497 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -164,7 +164,7 @@ Same as above, except this call does not require authentication. ## Execute Webhook % POST /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object} -Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on attachments and `multipart/form-data` requests. +Refer to [Uploading Files](#DOCS_REFERENCE/uploading-files) for details on attachments and `multipart/form-data` requests. Returns a message or `204 No Content` depending on the `wait` query parameter. > info > Note that when sending a message, you must provide a value for at **least one of** `content`, `embeds`, or `file`. From c5b0eabe072254a3c9c4a720c5be3d35985e5476 Mon Sep 17 00:00:00 2001 From: krittick Date: Wed, 9 Mar 2022 10:43:06 -0800 Subject: [PATCH 152/181] Update Select Menu placeholder max characters from 100 to 150 (#4551) --- docs/interactions/Message_Components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Message_Components.md b/docs/interactions/Message_Components.md index 9e841055e3..30afaefdcb 100644 --- a/docs/interactions/Message_Components.md +++ b/docs/interactions/Message_Components.md @@ -266,7 +266,7 @@ Select menus support single-select and multi-select behavior, meaning you can pr | type | integer | `3` for a select menu | | custom_id | string | a developer-defined identifier for the button, max 100 characters | | options | array of [select options](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menu-object-select-option-structure) | the choices in the select, max 25 | -| placeholder? | string | custom placeholder text if nothing is selected, max 100 characters | +| placeholder? | string | custom placeholder text if nothing is selected, max 150 characters | | min_values? | integer | the minimum number of items that must be chosen; default 1, min 0, max 25 | | max_values? | integer | the maximum number of items that can be chosen; default 1, max 25 | | disabled? | boolean | disable the select, default false | From d2d18e137f744570f1448f501b5faf8099ee177a Mon Sep 17 00:00:00 2001 From: Commandtechno <68407783+Commandtechno@users.noreply.github.com> Date: Wed, 9 Mar 2022 12:43:11 -0600 Subject: [PATCH 153/181] Fix header merging with table (#4522) --- docs/resources/Audit_Log.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/resources/Audit_Log.md b/docs/resources/Audit_Log.md index 5f6f63fc9f..f1d14ca95a 100644 --- a/docs/resources/Audit_Log.md +++ b/docs/resources/Audit_Log.md @@ -111,6 +111,7 @@ Whenever an admin action is performed on the API, an entry is added to the respe | message_id | snowflake | id of the message that was targeted | MESSAGE_PIN & MESSAGE_UNPIN | | role_name | string | name of the role if type is "0" (not present if type is "1") | CHANNEL_OVERWRITE_CREATE & CHANNEL_OVERWRITE_UPDATE & CHANNEL_OVERWRITE_DELETE | | type | string | type of overwritten entity - "0" for "role" or "1" for "member" | CHANNEL_OVERWRITE_CREATE & CHANNEL_OVERWRITE_UPDATE & CHANNEL_OVERWRITE_DELETE | + ### Audit Log Change Object ###### Audit Log Change Structure From d7b47a33dcb6e4d9de8f3ab3e463e855eed6150b Mon Sep 17 00:00:00 2001 From: jonobarel Date: Wed, 9 Mar 2022 20:44:35 +0200 Subject: [PATCH 154/181] fix typos in Voice.md (#4565) move question mark from the wrong column. --- docs/resources/Voice.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/resources/Voice.md b/docs/resources/Voice.md index af88874fa2..5d41e4cfc8 100644 --- a/docs/resources/Voice.md +++ b/docs/resources/Voice.md @@ -9,7 +9,7 @@ Used to represent a user's voice connection status. | Field | Type | Description | | -------------------------- | ---------------------------------------------------------------- | ---------------------------------------------- | | guild_id? | snowflake | the guild id this voice state is for | -| channel_id | ?snowflake | the channel id this user is connected to | +| channel_id? | snowflake | the channel id this user is connected to | | user_id | snowflake | the user id this voice state is for | | member? | [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object | the guild member this voice state is for | | session_id | string | the session id for this voice state | @@ -20,7 +20,7 @@ Used to represent a user's voice connection status. | self_stream? | boolean | whether this user is streaming using "Go Live" | | self_video | boolean | whether this user's camera is enabled | | suppress | boolean | whether this user is muted by the current user | -| request_to_speak_timestamp | ?ISO8601 timestamp | the time at which the user requested to speak | +| request_to_speak_timestamp?| ISO8601 timestamp | the time at which the user requested to speak | ###### Example Voice State From 19ca14c1fa4659f901d9390fc356edfb9b57d51c Mon Sep 17 00:00:00 2001 From: Almeida Date: Wed, 9 Mar 2022 18:52:44 +0000 Subject: [PATCH 155/181] Update error 50008 description (#4533) --- docs/topics/Opcodes_and_Status_Codes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 691ffeeae3..55e13ffaf3 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -202,7 +202,7 @@ Along with the HTTP error code, our API can also return more detailed error code | 50005 | Cannot edit a message authored by another user | | 50006 | Cannot send an empty message | | 50007 | Cannot send messages to this user | -| 50008 | Cannot send messages in a voice channel | +| 50008 | Cannot send messages in a non-text channel | | 50009 | Channel verification level is too high for you to gain access | | 50010 | OAuth2 application does not have a bot | | 50011 | OAuth2 application limit reached | From f95cd0331f4d6b705c0bdf9fe365ead412f98e73 Mon Sep 17 00:00:00 2001 From: Lukellmann <47486203+Lukellmann@users.noreply.github.com> Date: Wed, 9 Mar 2022 19:53:04 +0100 Subject: [PATCH 156/181] `description` field is optional and nullable for Guild Scheduled Events (#4608) --- docs/resources/Guild_Scheduled_Event.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Guild_Scheduled_Event.md b/docs/resources/Guild_Scheduled_Event.md index f9080d13c0..394522c252 100644 --- a/docs/resources/Guild_Scheduled_Event.md +++ b/docs/resources/Guild_Scheduled_Event.md @@ -13,7 +13,7 @@ A representation of a scheduled event in a [guild](#DOCS_RESOURCES_GUILD/). | channel_id ** | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | | creator_id? * | ?snowflake | the id of the user that created the scheduled event * | | name | string | the name of the scheduled event (1-100 characters) | -| description? | string | the description of the scheduled event (1-1000 characters) | +| description? | ?string | the description of the scheduled event (1-1000 characters) | | scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | | scheduled_end_time ** | ?ISO8601 timestamp | the time the scheduled event will end, required if entity_type is `EXTERNAL` | | privacy_level | [privacy level](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | From 6f37f43dbe2181946abaf1390c05a5b072f588cd Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Wed, 9 Mar 2022 18:55:38 +0000 Subject: [PATCH 157/181] Add community feature warning (#4570) Co-authored-by: Vitor Co-authored-by: Splatterxl Co-authored-by: devsnek --- docs/resources/Guild.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/resources/Guild.md b/docs/resources/Guild.md index ecb3e0d3fc..cc2372f54f 100644 --- a/docs/resources/Guild.md +++ b/docs/resources/Guild.md @@ -667,6 +667,9 @@ Modify a guild's settings. Requires the `MANAGE_GUILD` permission. Returns the u > info > This endpoint supports the `X-Audit-Log-Reason` header. +> warn +> Attempting to add or remove the `COMMUNITY` [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) requires the `ADMINISTRATOR` permission. + ###### JSON Params | Field | Type | Description | From c23036ef9643633b4c02a1c10b1beb1c5efcd44d Mon Sep 17 00:00:00 2001 From: Harlan Lieberman-Berg Date: Wed, 9 Mar 2022 13:55:50 -0500 Subject: [PATCH 158/181] Add note re user permissions and user interactions (#4626) It is currently undocumented that a user must be able to "Send Messages" as well as "Use Application Commands" in order to invoke a user command. This comes as an additional complication because of the intersection of channel permissions and user permissions. Attempts to invoke a user command in a channel which the user cannot speak in (e.g., a rules channel) will result in a permission denied error, as if the underlying application command provider had insufficient permissions. This is compounded by no error (or, indeed, no request) ever being sent to the underlying application command provider over the WS connection. --- docs/interactions/Application_Commands.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index 099ca4b501..b330ab5420 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -684,6 +684,9 @@ And, done! The JSON looks a bit complicated, but what we've ended up with is a s User commands are application commands that appear on the context menu (right click or tap) of users. They're a great way to surface quick actions for your app that target users. They don't take any arguments, and will return the user on whom you clicked or tapped in the interaction response. +> warn +> A user must have permission to send text messages in the channel they invoke a user command in. If they don't have this permission, they will receive a 'Permission Denied' error from the interaction. + > danger > The `description` field is not allowed when creating user commands. However, to avoid breaking changes to data models, `description` will be an **empty string** (instead of `null`) when fetching commands. From 79783eeabeb9f1e5c9c53fe3ec270ade86e13c28 Mon Sep 17 00:00:00 2001 From: SQKo <87897282+SQKo@users.noreply.github.com> Date: Thu, 10 Mar 2022 01:56:50 +0700 Subject: [PATCH 159/181] Correct embed limits section (#4549) Move embed limits as part of sub section of Embed object section --- docs/resources/Channel.md | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 353f6f0e28..72dde4ab0f 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -628,6 +628,24 @@ Embed types are "loosely defined" and, for the most part, are not used by our cl | value | string | value of the field | | inline? | boolean | whether or not this field should display inline | +###### Embed Limits + +To facilitate showing rich content, rich embeds do not follow the traditional limits of message content. However, some limits are still in place to prevent excessively large embeds. The following table describes the limits: + +All of the following limits are measured inclusively. Leading and trailing whitespace characters are not included (they are trimmed automatically). + +| Field | Limit | +|----------------------------------------------------------------------------|--------------------------------------------------------------------------------------| +| title | 256 characters | +| description | 4096 characters | +| fields | Up to 25 [field](#DOCS_RESOURCES_CHANNEL/embed-object-embed-field-structure) objects | +| [field.name](#DOCS_RESOURCES_CHANNEL/embed-object-embed-field-structure) | 256 characters | +| [field.value](#DOCS_RESOURCES_CHANNEL/embed-object-embed-field-structure) | 1024 characters | +| [footer.text](#DOCS_RESOURCES_CHANNEL/embed-object-embed-footer-structure) | 2048 characters | +| [author.name](#DOCS_RESOURCES_CHANNEL/embed-object-embed-author-structure) | 256 characters | + +Additionally, the combined sum of characters in all `title`, `description`, `field.name`, `field.value`, `footer.text`, and `author.name` fields across all embeds attached to a message must not exceed 6000 characters. Violating any of these constraints will result in a `Bad Request` response. + ### Attachment Object ###### Attachment Structure @@ -762,26 +780,6 @@ user 125 in the content. } ``` -## Embed Limits - -To facilitate showing rich content, rich embeds do not follow the traditional limits of message content. However, some limits are still in place to prevent excessively large embeds. The following table describes the limits: - -###### Limits - -All of the following limits are measured inclusively. Leading and trailing whitespace characters are not included (they are trimmed automatically). - -| Field | Limit | -|----------------------------------------------------------------------------|--------------------------------------------------------------------------------------| -| title | 256 characters | -| description | 4096 characters | -| fields | Up to 25 [field](#DOCS_RESOURCES_CHANNEL/embed-object-embed-field-structure) objects | -| [field.name](#DOCS_RESOURCES_CHANNEL/embed-object-embed-field-structure) | 256 characters | -| [field.value](#DOCS_RESOURCES_CHANNEL/embed-object-embed-field-structure) | 1024 characters | -| [footer.text](#DOCS_RESOURCES_CHANNEL/embed-object-embed-footer-structure) | 2048 characters | -| [author.name](#DOCS_RESOURCES_CHANNEL/embed-object-embed-author-structure) | 256 characters | - -Additionally, the combined sum of characters in all `title`, `description`, `field.name`, `field.value`, `footer.text`, and `author.name` fields across all embeds attached to a message must not exceed 6000 characters. Violating any of these constraints will result in a `Bad Request` response. - ## Get Channel % GET /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object} Get a channel by ID. Returns a [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object. If the channel is a thread, a [thread member](#DOCS_RESOURCES_CHANNEL/thread-member-object) object is included in the returned result. From 03d654008694bfbfcf6f43332ad6aa84c1f18e27 Mon Sep 17 00:00:00 2001 From: Shay DeWael Date: Wed, 9 Mar 2022 11:17:11 -0800 Subject: [PATCH 160/181] Add application flag descriptions (#4623) Adds app resource flag descriptions --- docs/resources/Application.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/resources/Application.md b/docs/resources/Application.md index 6bee168113..a8c7b80e77 100644 --- a/docs/resources/Application.md +++ b/docs/resources/Application.md @@ -70,13 +70,13 @@ ###### Application Flags -| Value | Flag | -|---------|----------------------------------| -| 1 << 12 | GATEWAY_PRESENCE | -| 1 << 13 | GATEWAY_PRESENCE_LIMITED | -| 1 << 14 | GATEWAY_GUILD_MEMBERS | -| 1 << 15 | GATEWAY_GUILD_MEMBERS_LIMITED | -| 1 << 16 | VERIFICATION_PENDING_GUILD_LIMIT | -| 1 << 17 | EMBEDDED | -| 1 << 18 | GATEWAY_MESSAGE_CONTENT | -| 1 << 19 | GATEWAY_MESSAGE_CONTENT_LIMITED | +| Value | Name | Description | +|---------|----------------------------------|------------------------------| +| 1 << 12 | GATEWAY_PRESENCE | Intent required for bots in **100 or more servers** to receive [`presence_update` events](#DOCS_TOPICS_GATEWAY/presence-update) | +| 1 << 13 | GATEWAY_PRESENCE_LIMITED | Intent required for bots in under 100 servers to receive [`presence_update` events](#DOCS_TOPICS_GATEWAY/presence-update), found in Bot Settings | +| 1 << 14 | GATEWAY_GUILD_MEMBERS | Intent required for bots in **100 or more servers** to receive member-related events like `guild_member_add`. See list of member-related events [under `GUILD_MEMBERS`](#DOCS_TOPICS_GATEWAY/list-of-intents) | +| 1 << 15 | GATEWAY_GUILD_MEMBERS_LIMITED | Intent required for bots in under 100 servers to receive member-related events like `guild_member_add`, found in Bot Settings. See list of member-related events [under `GUILD_MEMBERS`](#DOCS_TOPICS_GATEWAY/list-of-intents) +| 1 << 16 | VERIFICATION_PENDING_GUILD_LIMIT | Indicates unusual growth of an app that prevents verification | +| 1 << 17 | EMBEDDED | Indicates if an app is embedded within the Discord client (currently unavailable publicly) | +| 1 << 18 | GATEWAY_MESSAGE_CONTENT | Intent required for bots in **100 or more servers** to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055) | +| 1 << 19 | GATEWAY_MESSAGE_CONTENT_LIMITED | Intent required for bots in under 100 servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055), found in Bot Settings | From 6e647911022a79cf4f301fafe4be55fcf32ceea3 Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Wed, 9 Mar 2022 11:27:14 -0800 Subject: [PATCH 161/181] Update Community Resources per #4456 guidelines --- docs/topics/Community_Resources.md | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/docs/topics/Community_Resources.md b/docs/topics/Community_Resources.md index 6353991443..80bc63ed79 100644 --- a/docs/topics/Community_Resources.md +++ b/docs/topics/Community_Resources.md @@ -8,58 +8,30 @@ The [Official Discord Developers server](https://discord.gg/discord-developers) ## Libraries -The Discord team curates the following list of officially vetted libraries that conform to our APIs standards around authentication and rate limiting. Using custom implementations or non-compliant libraries that abuse the API or cause excessive rate limits may result in a **permanent** ban. - -Many of these libraries are represented in the [unofficial, community-driven Discord server for developers](https://discord.gg/discord-api). There you'll find community members who can help answer questions about our API, community libraries, bot creation, and other development questions. +Discord does not maintain official SDKs. The following table is an inexhaustive list of third-party libraries that have valid rate limit implementations, are recently maintained, and have large communities of active bots. ###### Discord Libraries | Name | Language | | ------------------------------------------------------------ | ---------- | -| [orca](https://github.com/cee-studio/orca) | C | | [Discord.Net](https://github.com/discord-net/Discord.Net) | C# | | [DSharpPlus](https://github.com/DSharpPlus/DSharpPlus) | C# | -| [Remora.Discord](https://github.com/Nihlus/Remora.Discord) | C# | -| [aegis.cpp](https://github.com/zeroxs/aegis.cpp) | C++ | -| [D++](https://github.com/brainboxdotcc/DPP) | C++ | -| [Discord++](https://github.com/DiscordPP/discordpp) | C++ | -| [Sleepy Discord](https://github.com/yourWaifu/sleepy-discord)| C++ | -| [discljord](https://github.com/igjoshua/discljord) | Clojure | -| [discordcr](https://github.com/shardlab/discordcr) | Crystal | | [nyxx](https://github.com/l7ssha/Nyxx) | Dart | -| [coxir](https://github.com/satom99/coxir) | Elixir | -| [Nostrum](https://github.com/Kraigie/nostrum) | Elixir | | [DiscordGo](https://github.com/bwmarrin/discordgo) | Go | -| [DisGord](https://github.com/andersfylling/disgord) | Go | -| [catnip](https://github.com/mewna/catnip) | Java | | [Discord4J](https://discord4j.com/) | Java | | [Javacord](https://github.com/Javacord/Javacord) | Java | | [JDA](https://github.com/DV8FromTheWorld/JDA) | Java | | [discord.js](https://github.com/discordjs/discord.js) | JavaScript | | [Eris](https://github.com/abalabahaha/eris) | JavaScript | -| [Discord.jl](https://github.com/Xh4H/Discord.jl) | Julia | | [Discordia](https://github.com/SinisterRectus/Discordia) | Lua | -| [lacord](https://github.com/Mehgugs/lacord) | Lua | -| [Dimscord](https://github.com/krisppurg/dimscord) | Nim | -| [discordnim](https://github.com/Krognol/discordnim) | Nim | | [DiscordPHP](https://github.com/discord-php/DiscordPHP) | PHP | -| [RestCord](https://www.restcord.com/) | PHP | | [discord.py](https://github.com/Rapptz/discord.py) | Python | -| [disco](https://github.com/b1naryth1ef/disco) | Python | | [disnake](https://github.com/DisnakeDev/disnake) | Python | | [hikari](https://github.com/hikari-py/hikari) | Python | | [nextcord](https://github.com/nextcord/nextcord) | Python | | [pycord](https://github.com/Pycord-Development/pycord) | Python | | [discordrb](https://github.com/shardlab/discordrb) | Ruby | -| [discord-rs](https://github.com/SpaceManiac/discord-rs) | Rust | | [Serenity](https://github.com/serenity-rs/serenity) | Rust | -| [Twilight](https://github.com/twilight-rs/twilight) | Rust | -| [AckCord](https://github.com/Katrix/AckCord) | Scala | -| [Sword](https://github.com/Azoy/Sword) | Swift | -| [Detritus](https://github.com/detritusjs/client) | TypeScript | -| [discordeno](https://github.com/discordeno/discordeno) | TypeScript | -| [droff](https://github.com/tim-smart/droff) | TypeScript | -| [Harmony](https://github.com/harmonyland/harmony) | TypeScript | ## Interactions From 42a20aed751e0ad61d3aee31c08c98a7d2606df5 Mon Sep 17 00:00:00 2001 From: Victor <67214928+Victorsitou@users.noreply.github.com> Date: Wed, 9 Mar 2022 17:09:49 -0300 Subject: [PATCH 162/181] Document `guild_scheduled_event_id` field in stage instances (#4583) Add `guild_scheduled_event_id` field which is present whenever a scheduled event is tied to a stage instance. --- docs/resources/Stage_Instance.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/resources/Stage_Instance.md b/docs/resources/Stage_Instance.md index e440efba6f..23d41afd34 100644 --- a/docs/resources/Stage_Instance.md +++ b/docs/resources/Stage_Instance.md @@ -6,14 +6,15 @@ A _Stage Instance_ holds information about a live stage. ###### Stage Instance Structure -| Field | Type | Description | -| --------------------- | --------- | ------------------------------------------------------------------------------------------------------------- | -| id | snowflake | The id of this Stage instance | -| guild_id | snowflake | The guild id of the associated Stage channel | -| channel_id | snowflake | The id of the associated Stage channel | -| topic | string | The topic of the Stage instance (1-120 characters) | -| privacy_level | integer | The [privacy level](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-privacy-level) of the Stage instance | -| discoverable_disabled | boolean | Whether or not Stage Discovery is disabled (deprecated) | +| Field | Type | Description | +| ------------------------ | ---------- | ------------------------------------------------------------------------------------------------------------- | +| id | snowflake | The id of this Stage instance | +| guild_id | snowflake | The guild id of the associated Stage channel | +| channel_id | snowflake | The id of the associated Stage channel | +| topic | string | The topic of the Stage instance (1-120 characters) | +| privacy_level | integer | The [privacy level](#DOCS_RESOURCES_STAGE_INSTANCE/stage-instance-object-privacy-level) of the Stage instance | +| discoverable_disabled | boolean | Whether or not Stage Discovery is disabled (deprecated) | +| guild_scheduled_event_id | ?snowflake | The id of the scheduled event for this Stage instance | ###### Privacy Level @@ -31,7 +32,8 @@ A _Stage Instance_ holds information about a live stage. "channel_id": "733488538393510049", "topic": "Testing Testing, 123", "privacy_level": 1, - "discoverable_disabled": false + "discoverable_disabled": false, + "guild_scheduled_event_id": "947656305244532806" } ``` From 6168e869782e9ec29f548cdf864f03734be9e4f7 Mon Sep 17 00:00:00 2001 From: Jupith <51760248+Jupith@users.noreply.github.com> Date: Wed, 9 Mar 2022 20:43:44 +0000 Subject: [PATCH 163/181] Add premium count to example invite object (#4493) the guilds premium_subscription_count is now sent on invites --- docs/resources/Invite.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/resources/Invite.md b/docs/resources/Invite.md index 305e73acf2..f5b1dd9b73 100644 --- a/docs/resources/Invite.md +++ b/docs/resources/Invite.md @@ -43,7 +43,8 @@ Represents a code that when used, adds a user to a guild or group DM channel. "features": ["NEWS", "DISCOVERABLE"], "verification_level": 2, "vanity_url_code": null, - "nsfw_level": 0 + "nsfw_level": 0, + "premium_subscription_count": 5 }, "channel": { "id": "165176875973476352", From bf3e2ec9d0d926c5940e9020b4fe7f7f1cc84dc0 Mon Sep 17 00:00:00 2001 From: Shay DeWael Date: Wed, 9 Mar 2022 16:00:36 -0800 Subject: [PATCH 164/181] Clarify webhook naming restrictions (#4625) Add clarifications to webhook creation restrictions --- docs/resources/User.md | 4 ++-- docs/resources/Webhook.md | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/resources/User.md b/docs/resources/User.md index 25f05f9b35..f124577dda 100644 --- a/docs/resources/User.md +++ b/docs/resources/User.md @@ -15,8 +15,8 @@ Discord enforces the following restrictions for usernames and nicknames: The following restrictions are additionally enforced for usernames: -1. Names cannot contain the following substrings: '@', '#', ':', '\```'. -2. Names cannot be: 'discordtag', 'everyone', 'here'. +1. Usernames cannot contain the following substrings: '@', '#', ':', '\```', 'discord' +2. Usernames cannot be: 'everyone', 'here' There are other rules and restrictions not shared here for the sake of spam and abuse mitigation, but the majority of users won't encounter them. It's important to properly handle all error messages returned by Discord when editing or updating names. diff --git a/docs/resources/Webhook.md b/docs/resources/Webhook.md index e68fe3e497..453bc5ff85 100644 --- a/docs/resources/Webhook.md +++ b/docs/resources/Webhook.md @@ -99,9 +99,11 @@ Used to represent a webhook. ## Create Webhook % POST /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/webhooks -Create a new webhook. Requires the `MANAGE_WEBHOOKS` permission. Returns a [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) object on success. Webhook names follow our naming restrictions that can be found in our [Usernames and Nicknames](#DOCS_RESOURCES_USER/usernames-and-nicknames) documentation, with the following additional stipulations: +Creates a new webhook and returns a [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) object on success. Requires the `MANAGE_WEBHOOKS` permission. -- Webhook names cannot be: 'clyde' +An error will be returned if a webhook name (`name`) is not valid. A webhook name is valid if: +- It does not contain the substring '**clyde**' (case-insensitive) +- It follows the nickname guidelines in the [Usernames and Nicknames](#DOCS_RESOURCES_USER/usernames-and-nicknames) documentation, with an exception that webhook names can be up to 80 characters > info > This endpoint supports the `X-Audit-Log-Reason` header. From 168eb706b5cb5e6444a0d678b88fce6664ceb958 Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Fri, 11 Mar 2022 17:58:01 -0800 Subject: [PATCH 165/181] Revert "fix typos in Voice.md (#4565)" (#4641) This reverts commit d7b47a33dcb6e4d9de8f3ab3e463e855eed6150b. --- docs/resources/Voice.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/resources/Voice.md b/docs/resources/Voice.md index 5d41e4cfc8..af88874fa2 100644 --- a/docs/resources/Voice.md +++ b/docs/resources/Voice.md @@ -9,7 +9,7 @@ Used to represent a user's voice connection status. | Field | Type | Description | | -------------------------- | ---------------------------------------------------------------- | ---------------------------------------------- | | guild_id? | snowflake | the guild id this voice state is for | -| channel_id? | snowflake | the channel id this user is connected to | +| channel_id | ?snowflake | the channel id this user is connected to | | user_id | snowflake | the user id this voice state is for | | member? | [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object | the guild member this voice state is for | | session_id | string | the session id for this voice state | @@ -20,7 +20,7 @@ Used to represent a user's voice connection status. | self_stream? | boolean | whether this user is streaming using "Go Live" | | self_video | boolean | whether this user's camera is enabled | | suppress | boolean | whether this user is muted by the current user | -| request_to_speak_timestamp?| ISO8601 timestamp | the time at which the user requested to speak | +| request_to_speak_timestamp | ?ISO8601 timestamp | the time at which the user requested to speak | ###### Example Voice State From d3d94bc191b53ed4805d5a8208fd63b4c69e9fb9 Mon Sep 17 00:00:00 2001 From: Zack Date: Mon, 14 Mar 2022 15:17:39 -0400 Subject: [PATCH 166/181] fixes #2990 --- docs/game_sdk/Lobbies.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/game_sdk/Lobbies.md b/docs/game_sdk/Lobbies.md index aed4c5a80b..37fc8588ee 100644 --- a/docs/game_sdk/Lobbies.md +++ b/docs/game_sdk/Lobbies.md @@ -1409,12 +1409,12 @@ Creates a lobby search for matchmaking around given criteria. ###### Parameters -| name | type | description | -| -------------- | ------------------- | ---------------------------------------- | -| application_id | string | your application id | -| filter | SearchFilter object | the filter to check against | -| sort | SearchSort object | how to sort the results | -| limit | int | limit of lobbies returned, default of 25 | +| name | type | description | +| -------------- | ----------------------------- | ---------------------------------------- | +| application_id | string | your application id | +| filter | array of SearchFilter objects | the filter to check against | +| sort | array of SearchSort objects | how to sort the results | +| limit | int | limit of lobbies returned, default of 25 | ###### SearchFilter Object From b6cb8a5a74ea7b47ef0f9076f23168b1262f5e00 Mon Sep 17 00:00:00 2001 From: Zack Date: Wed, 16 Mar 2022 17:38:53 -0400 Subject: [PATCH 167/181] fixes #4481 --- docs/interactions/Application_Commands.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index b330ab5420..5e49eba9e8 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -992,6 +992,17 @@ Takes a list of application commands, overwriting the existing command list for > danger > This will overwrite **all** types of application commands: slash commands, user commands, and message commands. +###### Bulk Application Command JSON Params + +| Field | Type | Description | +| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| id | snowflake | application command id, if known | +| name | string | [1-32 character name](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-naming) | +| description | string | 1-100 character description | +| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | the parameters for the command | +| default_permission? | boolean (default `true`) | whether the command is enabled by default when the app is added to a guild | +| type? | one of [application command type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-types) | the type of command, defaults `1` if not set | + ## Get Guild Application Command Permissions % GET /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/commands/permissions Fetches command permissions for all commands for your application in a guild. Returns an array of [guild application command permissions](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-permissions-object-guild-application-command-permissions-structure) objects. From 0069bbcc50e991a516441c7990b2cde42ffa55da Mon Sep 17 00:00:00 2001 From: Zack Date: Thu, 17 Mar 2022 13:37:35 -0400 Subject: [PATCH 168/181] clarify permission overwrite inheritance --- docs/resources/Channel.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/resources/Channel.md b/docs/resources/Channel.md index 72dde4ab0f..f4abb2870f 100644 --- a/docs/resources/Channel.md +++ b/docs/resources/Channel.md @@ -802,7 +802,7 @@ Fires a [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) Gateway event. ###### JSON Params (Guild channel) -Requires the `MANAGE_CHANNELS` permission for the guild. Fires a [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) Gateway event. If modifying a category, individual [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) events will fire for each child channel that also changes. If modifying permission overwrites, the `MANAGE_ROLES` permission is required. Only permissions your bot has in the guild or channel can be allowed/denied (unless your bot has a `MANAGE_ROLES` overwrite in the channel). +Requires the `MANAGE_CHANNELS` permission for the guild. Fires a [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) Gateway event. If modifying a category, individual [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) events will fire for each child channel that also changes. If modifying permission overwrites, the `MANAGE_ROLES` permission is required. Only permissions your bot has in the guild or parent channel (if applicable) can be allowed/denied (unless your bot has a `MANAGE_ROLES` overwrite in the channel). | Field | Type | Description | Channel Type | |-------------------------------|---------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------| @@ -1031,7 +1031,7 @@ Any message IDs given that do not exist or are invalid will count towards the mi ## Edit Channel Permissions % PUT /channels/{channel.id#DOCS_RESOURCES_CHANNEL/channel-object}/permissions/{overwrite.id#DOCS_RESOURCES_CHANNEL/overwrite-object} -Edit the channel permission overwrites for a user or role in a channel. Only usable for guild channels. Requires the `MANAGE_ROLES` permission. Only permissions your bot has in the guild or channel can be allowed/denied (unless your bot has a `MANAGE_ROLES` overwrite in the channel). Returns a 204 empty response on success. For more information about permissions, see [permissions](#DOCS_TOPICS_PERMISSIONS/permissions). +Edit the channel permission overwrites for a user or role in a channel. Only usable for guild channels. Requires the `MANAGE_ROLES` permission. Only permissions your bot has in the guild or parent channel (if applicable) can be allowed/denied (unless your bot has a `MANAGE_ROLES` overwrite in the channel). Returns a 204 empty response on success. For more information about permissions, see [permissions](#DOCS_TOPICS_PERMISSIONS/permissions). > info > This endpoint supports the `X-Audit-Log-Reason` header. From da071ca33b5b79a05d65b8fc4d4f2b1948796164 Mon Sep 17 00:00:00 2001 From: Zack Date: Thu, 17 Mar 2022 18:00:18 -0400 Subject: [PATCH 169/181] fixes #4414 --- docs/interactions/Receiving_and_Responding.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 15fc8adb36..35feccc974 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -361,11 +361,11 @@ Create a followup message for an Interaction. Functions the same as [Execute Web ## Get Followup Message % GET /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} -Returns a followup message for an Interaction. Functions the same as [Get Webhook Message](#DOCS_RESOURCES_WEBHOOK/get-webhook-message). Does not support ephemeral followups. +Returns a followup message for an Interaction. Functions the same as [Get Webhook Message](#DOCS_RESOURCES_WEBHOOK/get-webhook-message). ## Edit Followup Message % PATCH /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} -Edits a followup message for an Interaction. Functions the same as [Edit Webhook Message](#DOCS_RESOURCES_WEBHOOK/edit-webhook-message). Does not support ephemeral followups. +Edits a followup message for an Interaction. Functions the same as [Edit Webhook Message](#DOCS_RESOURCES_WEBHOOK/edit-webhook-message). ## Delete Followup Message % DELETE /webhooks/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/{interaction.token#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING/interaction-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object} From 7514b209273e26b3be300769701295b8bff2ccbd Mon Sep 17 00:00:00 2001 From: Rodry <38259440+ImRodry@users.noreply.github.com> Date: Thu, 17 Mar 2022 22:09:01 +0000 Subject: [PATCH 170/181] docs: fix typo in select menu structure (#4656) --- docs/interactions/Message_Components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Message_Components.md b/docs/interactions/Message_Components.md index 30afaefdcb..2a236e54c8 100644 --- a/docs/interactions/Message_Components.md +++ b/docs/interactions/Message_Components.md @@ -264,7 +264,7 @@ Select menus support single-select and multi-select behavior, meaning you can pr | Field | Type | Description | | ------------ | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | type | integer | `3` for a select menu | -| custom_id | string | a developer-defined identifier for the button, max 100 characters | +| custom_id | string | a developer-defined identifier for the select menu, max 100 characters | | options | array of [select options](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/select-menu-object-select-option-structure) | the choices in the select, max 25 | | placeholder? | string | custom placeholder text if nothing is selected, max 150 characters | | min_values? | integer | the minimum number of items that must be chosen; default 1, min 0, max 25 | From 94c67acbc9ea1a91bb893c307621f80b71d0a1ec Mon Sep 17 00:00:00 2001 From: Splatterxl Date: Fri, 18 Mar 2022 16:13:12 +0000 Subject: [PATCH 171/181] add application commands to Oauth2 documentation (#4661) * add application commands to oauth2 docs * fix inconsistency * reword text --- docs/topics/OAuth2.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/topics/OAuth2.md b/docs/topics/OAuth2.md index acd08455da..599abb4a8a 100644 --- a/docs/topics/OAuth2.md +++ b/docs/topics/OAuth2.md @@ -265,6 +265,8 @@ https://discord.com/api/oauth2/authorize?client_id=157730590492196864&scope=bot& In the case of bots, the `scope` parameter should be set to `bot`. There's also a new parameter, `permissions`, which is an integer corresponding to the [permission calculations](#DOCS_TOPICS_PERMISSIONS/permissions-bitwise-permission-flags) for the bot. You'll also notice the absence of `response_type` and `redirect_uri`. Bot authorization does not require these parameters because there is no need to retrieve the user's access token. +Additionally, if your bot provides [Application Commands](#DOCS_INTERACTIONS_APPLICATION_COMMANDS), you can add `applications.commands` to the URL's scopes, so that commands will be available in the guild. + When the user navigates to this page, they'll be prompted to add the bot to a guild in which they have proper permissions. On acceptance, the bot will be added. Super easy! If you happen to already know the ID of the guild the user will add your bot to, you can provide this ID in the URL as a `guild_id=GUILD_ID` parameter. @@ -274,7 +276,7 @@ If your bot is super specific to your private clubhouse, or you just don't like ### Advanced Bot Authorization -Devs can extend the bot authorization functionality. You can request additional scopes outside of `bot`, which will prompt a continuation into a complete [authorization code grant flow](#DOCS_TOPICS_OAUTH2/authorization-code-grant) and add the ability to request the user's access token. If you request any scopes outside of `bot`, `response_type` is again mandatory; we will also automatically redirect the user to the first URI in your application's registered list unless `redirect_uri` is specified. +Devs can extend the bot authorization functionality. You can request additional scopes outside of `bot` and `applications.commands`, which will prompt a continuation into a complete [authorization code grant flow](#DOCS_TOPICS_OAUTH2/authorization-code-grant) and add the ability to request the user's access token. If you request any scopes outside of `bot` and `applications.commands`, `response_type` is again mandatory; we will also automatically redirect the user to the first URI in your application's registered list unless `redirect_uri` is specified. When receiving the access code on redirect, there will be additional querystring parameters of `guild_id` and `permissions`. The `guild_id` parameter should only be used as a hint as to the relationship between your bot and a guild. To be sure of the relationship between your bot and the guild, consider requiring the Oauth2 code grant in your bot's settings. Enabling it requires anyone adding your bot to a server to go through a full OAuth2 [authorization code grant flow](#DOCS_TOPICS_OAUTH2/authorization-code-grant). When you retrieve the user's access token, you'll also receive information about the guild to which your bot was added: From 2eb013baba7b3654ca0aaaeba1791bdac478c32e Mon Sep 17 00:00:00 2001 From: Dominic Ruggiero Date: Tue, 22 Mar 2022 13:33:01 -0400 Subject: [PATCH 172/181] Update alert box to show selling games has been discontinued (#4663) --- docs/game_sdk/Overlay.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/game_sdk/Overlay.md b/docs/game_sdk/Overlay.md index f7ad8175a0..ee198c660d 100644 --- a/docs/game_sdk/Overlay.md +++ b/docs/game_sdk/Overlay.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord is now discontinued. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) > warn > The overlay is only supported on Windows for DirectX or OpenGL games. Linux, Mac, and games using Vulkan are not supported. [Click here for more info.](https://support.discord.com/hc/en-us/articles/217659737-Games-Overlay-101) From 440601e16e4437dbd7bd9724c2a05fdd3d0755d3 Mon Sep 17 00:00:00 2001 From: Harry Hopkinson <63599884+Harry-Hopkinson@users.noreply.github.com> Date: Tue, 22 Mar 2022 17:35:05 +0000 Subject: [PATCH 173/181] Formatted Files According to the .prettierrc.json. (#4681) * Formatted Files According to the .prettierrc.json. * Fixed spelling mistakes * Revert Spelling Changes. --- .github/ISSUE_TEMPLATE/api-bug-report.yml | 90 +++++++++---------- .../developer-site-bug-report.yml | 90 +++++++++---------- .../message-components-bug-report.yml | 90 +++++++++---------- .../slash-command-bug-report.yml | 90 +++++++++---------- CODE_OF_CONDUCT.md | 22 ++--- README.md | 12 ++- 6 files changed, 199 insertions(+), 195 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/api-bug-report.yml b/.github/ISSUE_TEMPLATE/api-bug-report.yml index 6f42159e3f..b81393112f 100644 --- a/.github/ISSUE_TEMPLATE/api-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/api-bug-report.yml @@ -2,48 +2,48 @@ name: API Bug Report description: A bug has been found in Discord's API, Gateway, OAuth2, SDK, etc. labels: ["bug"] body: -- type: markdown - attributes: - value: 'Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues' -- type: textarea - id: description - attributes: - label: Description - description: Provide a clear and concise description of what the problem is. - validations: - required: true -- type: textarea - id: steps - attributes: - label: Steps to Reproduce - description: Provide clear and concise steps for us to reliably reproduce this issue. - validations: - required: true -- type: textarea - id: expected - attributes: - label: Expected Behavior - description: What is the behavior you expect to occur that is not? - validations: - required: true -- type: textarea - id: current - attributes: - label: Current Behavior - description: What is the behavior you are currently seeing instead? - validations: - required: true -- type: textarea - id: screenshots - attributes: - label: Screenshots/Videos - description: Provide a screenshot and/or video demonstrating the issue being experienced. - validations: - required: false -- type: textarea - id: information - attributes: - label: Client and System Information - description: What is the browser/library/client you are using? What operating system and version? - validations: - required: true + - type: markdown + attributes: + value: "Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues" + - type: textarea + id: description + attributes: + label: Description + description: Provide a clear and concise description of what the problem is. + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: Provide clear and concise steps for us to reliably reproduce this issue. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior you expect to occur that is not? + validations: + required: true + - type: textarea + id: current + attributes: + label: Current Behavior + description: What is the behavior you are currently seeing instead? + validations: + required: true + - type: textarea + id: screenshots + attributes: + label: Screenshots/Videos + description: Provide a screenshot and/or video demonstrating the issue being experienced. + validations: + required: false + - type: textarea + id: information + attributes: + label: Client and System Information + description: What is the browser/library/client you are using? What operating system and version? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml b/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml index d46188d941..043a1d4c94 100644 --- a/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/developer-site-bug-report.yml @@ -2,48 +2,48 @@ name: Developer Site Bug Report description: A bug has been found with Discord's Developer site or documentation. labels: ["bug"] body: -- type: markdown - attributes: - value: 'Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues' -- type: textarea - id: description - attributes: - label: Description - description: Provide a clear and concise description of what the problem is. - validations: - required: true -- type: textarea - id: steps - attributes: - label: Steps to Reproduce - description: Provide clear and concise steps for us to reliably reproduce this issue. - validations: - required: true -- type: textarea - id: expected - attributes: - label: Expected Behavior - description: What is the behavior you expect to occur that is not? - validations: - required: true -- type: textarea - id: current - attributes: - label: Current Behavior - description: What is the behavior you are currently seeing instead? - validations: - required: true -- type: textarea - id: screenshots - attributes: - label: Screenshots/Videos - description: Provide a screenshot and/or video demonstrating the issue being experienced. - validations: - required: false -- type: textarea - id: information - attributes: - label: Client and System Information - description: What is the browser/library/client you are using? What operating system and version? - validations: - required: true + - type: markdown + attributes: + value: "Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues" + - type: textarea + id: description + attributes: + label: Description + description: Provide a clear and concise description of what the problem is. + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: Provide clear and concise steps for us to reliably reproduce this issue. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior you expect to occur that is not? + validations: + required: true + - type: textarea + id: current + attributes: + label: Current Behavior + description: What is the behavior you are currently seeing instead? + validations: + required: true + - type: textarea + id: screenshots + attributes: + label: Screenshots/Videos + description: Provide a screenshot and/or video demonstrating the issue being experienced. + validations: + required: false + - type: textarea + id: information + attributes: + label: Client and System Information + description: What is the browser/library/client you are using? What operating system and version? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/message-components-bug-report.yml b/.github/ISSUE_TEMPLATE/message-components-bug-report.yml index 4c8a0f16d6..d430cc53cd 100644 --- a/.github/ISSUE_TEMPLATE/message-components-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/message-components-bug-report.yml @@ -2,48 +2,48 @@ name: Message Components Bug Report description: A bug has been found in Discord's Message Components. labels: ["message components"] body: -- type: markdown - attributes: - value: 'Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues?q=is%3Aissue+label%3A%22message+components%22+' -- type: textarea - id: description - attributes: - label: Description - description: Provide a clear and concise description of what the problem is. - validations: - required: true -- type: textarea - id: steps - attributes: - label: Steps to Reproduce - description: Provide clear and concise steps for us to reliably reproduce this issue. - validations: - required: true -- type: textarea - id: expected - attributes: - label: Expected Behavior - description: What is the behavior you expect to occur that is not? - validations: - required: true -- type: textarea - id: current - attributes: - label: Current Behavior - description: What is the behavior you are currently seeing instead? - validations: - required: true -- type: textarea - id: screenshots - attributes: - label: Screenshots/Videos - description: Provide a screenshot and/or video demonstrating the issue being experienced. - validations: - required: false -- type: textarea - id: information - attributes: - label: Client and System Information - description: What is the browser/library/client you are using? What operating system and version? - validations: - required: true + - type: markdown + attributes: + value: "Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues?q=is%3Aissue+label%3A%22message+components%22+" + - type: textarea + id: description + attributes: + label: Description + description: Provide a clear and concise description of what the problem is. + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: Provide clear and concise steps for us to reliably reproduce this issue. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior you expect to occur that is not? + validations: + required: true + - type: textarea + id: current + attributes: + label: Current Behavior + description: What is the behavior you are currently seeing instead? + validations: + required: true + - type: textarea + id: screenshots + attributes: + label: Screenshots/Videos + description: Provide a screenshot and/or video demonstrating the issue being experienced. + validations: + required: false + - type: textarea + id: information + attributes: + label: Client and System Information + description: What is the browser/library/client you are using? What operating system and version? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/slash-command-bug-report.yml b/.github/ISSUE_TEMPLATE/slash-command-bug-report.yml index d2cae22660..555a7c22b8 100644 --- a/.github/ISSUE_TEMPLATE/slash-command-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/slash-command-bug-report.yml @@ -2,48 +2,48 @@ name: Slash Commands Bug Report description: A bug has been found in Discord's Slash Commands and Interactions. labels: ["slash commands"] body: -- type: markdown - attributes: - value: 'Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues?q=is%3Aissue+label%3A%22slash+commands%22+' -- type: textarea - id: description - attributes: - label: Description - description: Provide a clear and concise description of what the problem is. - validations: - required: true -- type: textarea - id: steps - attributes: - label: Steps to Reproduce - description: Provide clear and concise steps for us to reliably reproduce this issue. - validations: - required: true -- type: textarea - id: expected - attributes: - label: Expected Behavior - description: What is the behavior you expect to occur that is not? - validations: - required: true -- type: textarea - id: current - attributes: - label: Current Behavior - description: What is the behavior you are currently seeing instead? - validations: - required: true -- type: textarea - id: screenshots - attributes: - label: Screenshots/Videos - description: Provide a screenshot and/or video demonstrating the issue being experienced. - validations: - required: false -- type: textarea - id: information - attributes: - label: Client and System Information - description: What is the browser/library/client you are using? What operating system and version? - validations: - required: true + - type: markdown + attributes: + value: "Before opening a new issue, please search existing issues: https://github.com/discord/discord-api-docs/issues?q=is%3Aissue+label%3A%22slash+commands%22+" + - type: textarea + id: description + attributes: + label: Description + description: Provide a clear and concise description of what the problem is. + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: Provide clear and concise steps for us to reliably reproduce this issue. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: What is the behavior you expect to occur that is not? + validations: + required: true + - type: textarea + id: current + attributes: + label: Current Behavior + description: What is the behavior you are currently seeing instead? + validations: + required: true + - type: textarea + id: screenshots + attributes: + label: Screenshots/Videos + description: Provide a screenshot and/or video demonstrating the issue being experienced. + validations: + required: false + - type: textarea + id: information + attributes: + label: Client and System Information + description: What is the browser/library/client you are using? What operating system and version? + validations: + required: true diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c9deead7e6..0da2efdb0f 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -8,19 +8,19 @@ We pledge to act and interact in ways that contribute to an open, welcoming, div Examples of behavior that contributes to a positive environment for our community include: -- Demonstrating empathy and kindness toward other people -- Being respectful of differing opinions, viewpoints, and experiences -- Giving and gracefully accepting constructive feedback -- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -- Focusing on what is best not just for us as individuals, but for the overall community +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -- The use of sexualized language or imagery, and sexual attention or advances of any kind -- Trolling, insulting or derogatory comments, hate speech, and personal or political attacks -- Public or private harassment -- Publishing others’ private information, such as a physical or email address, without their explicit permission -- Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, hate speech, and personal or political attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or email address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting ## **Enforcement Responsibilities** @@ -40,7 +40,7 @@ All community leaders are obligated to respect the privacy and security of the r ## **Enforcement Guidelines** -Community leaders will follow the Community Impact Guidelines below in determining the consequences for any action they deem in violation of this Code of Conduct. We reserve the right to take a more severe enforcement action if a single violation is extremely egregious and harmful, for example: hate speech or threats of IRL violence. +Community leaders will follow the Community Impact Guidelines below in determining the consequences for any action they deem in violation of this Code of Conduct. We reserve the right to take a more severe enforcement action if a single violation is extremely egregious and harmful, for example: hate speech or threats of IRL violence. ### 1. Correction diff --git a/README.md b/README.md index b69c154dd5..2294cd8a47 100644 --- a/README.md +++ b/README.md @@ -2,22 +2,24 @@ This repo contains the official Discord API documentation, which can be viewed online [HERE](https://discord.com/developers/docs/intro). Before submitting pull-requests, please remember to _fully_ read the [Contributing](CONTRIBUTING.md) guidelines. -This repository reflects the Discord API as it is meant to be accessed by third-party applications. It omits features and capabilities that are not generally available, or are not fully supported for third-party usage. +This repository reflects the Discord API as it is meant to be accessed by third-party applications. It omits features and capabilities that are not generally available, or are not fully supported for third-party usage. We welcome your contributions! -- Issue tracker: Discord API bugs -- Discussions: Discord API feature and improvement requests -- Pull Requests: See [Contributing.md](https://github.com/discord/discord-api-docs/blob/master/CONTRIBUTING.md) +- Issue tracker: Discord API bugs +- Discussions: Discord API feature and improvement requests +- Pull Requests: See [Contributing.md](https://github.com/discord/discord-api-docs/blob/master/CONTRIBUTING.md) ## Markdown Syntax This repository uses special markdown syntax that helps style the resulting web version of the documentation. ### H6 Headings + H6 headings should be used above tables and code blocks to properly label them. ### Linking + Links between docs can be achieved by using a hash symbol (#), plus the markdown file name, plus a slash, and finally the dash-separated anchor. For instance, to link to the above H6 heading section: ```md @@ -25,9 +27,11 @@ Links between docs can be achieved by using a hash symbol (#), plus the markdown ``` ### Alert Boxes + Alert boxes are achieved by using a block quote that has one of 'warn', 'danger' or 'info' on the first line. ## Need some help? + Here are some Discord servers that can help you out with everything Discord API: The [Official Discord Developers server](https://discord.gg/discord-developers) has plenty of help channels with knowledgeable people and Discord's developers to get you help with something you need, and get updates straight from the developers. However do keep in mind this is a purely on-topic server. If you are looking for a community, join the server below. From 6ae688b87ed50143df811469cfd2ef75078c8837 Mon Sep 17 00:00:00 2001 From: Leo Developer Date: Tue, 22 Mar 2022 18:36:45 +0100 Subject: [PATCH 174/181] Update locale table to better reflect in-app languages (#4680) * add native name, use name and order used in discord * fix amount of spaces --- docs/Reference.md | 64 +++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/Reference.md b/docs/Reference.md index 2d504baf92..8cf034e4d6 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -442,35 +442,35 @@ For example: ## Locales -| Locale | Language Name | -| ------ | ----------------------- | -| en-US | English (United States) | -| en-GB | English (Great Britain) | -| bg | Bulgarian | -| zh-CN | Chinese (China) | -| zh-TW | Chinese (Taiwan) | -| hr | Croatian | -| cs | Czech | -| da | Danish | -| nl | Dutch | -| fi | Finnish | -| fr | French | -| de | German | -| el | Greek | -| hi | Hindi | -| hu | Hungarian | -| it | Italian | -| ja | Japanese | -| ko | Korean | -| lt | Lithuanian | -| no | Norwegian | -| pl | Polish | -| pt-BR | Portuguese (Brazil) | -| ro | Romanian | -| ru | Russian | -| es-ES | Spanish (Spain) | -| sv-SE | Swedish | -| th | Thai | -| tr | Turkish | -| uk | Ukrainian | -| vi | Vietnamese | +| Locale | Language Name | Native Name | +| ------ | --------------------- | ------------------- | +| da | Danish | Dansk | +| de | German | Deutsch | +| en-GB | English, UK | English, UK | +| en-US | English, US | English, US | +| es-ES | Spanish | Español | +| fr | French | Français | +| hr | Croatian | Hrvatski | +| it | Italian | Italiano | +| lt | Lithuanian | Lietuviškai | +| hu | Hungarian | Magyar | +| nl | Dutch | Nederlands | +| no | Norwegian | Norsk | +| pl | Polish | Polski | +| pt-BR | Portuguese, Brazilian | Português do Brasil | +| ro | Romanian, Romania | Română | +| fi | Finnish | Suomi | +| sv-SE | Swedish | Svenska | +| vi | Vietnamese | Tiếng Việt | +| tr | Turkish | Türkçe | +| cs | Czech | Čeština | +| el | Greek | Ελληνικά | +| bg | Bulgarian | български | +| ru | Russian | Pусский | +| uk | Ukrainian | Українська | +| hi | Hindi | हिन्दी | +| th | Thai | ไทย | +| zh-CN | Chinese, China | 中文 | +| ja | Japanese | 日本語 | +| zh-TW | Chinese, Taiwan | 繁體中文 | +| ko | Korean | 한국어 | From 4bebe4c662650a5b79648992397b4633feffbd64 Mon Sep 17 00:00:00 2001 From: SQKo <87897282+SQKo@users.noreply.github.com> Date: Wed, 23 Mar 2022 00:37:20 +0700 Subject: [PATCH 175/181] Modal title max length (#4649) --- docs/interactions/Receiving_and_Responding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/interactions/Receiving_and_Responding.md b/docs/interactions/Receiving_and_Responding.md index 35feccc974..ad7890d281 100644 --- a/docs/interactions/Receiving_and_Responding.md +++ b/docs/interactions/Receiving_and_Responding.md @@ -211,7 +211,7 @@ Not all message fields are currently supported. | Name | Type | Description | | ---------- | ------------------------------------------------------------- | --------------------------------------------------------------------------- | | custom_id | string | a developer-defined identifier for the component, max 100 characters | -| title | string | the title of the popup modal | +| title | string | the title of the popup modal, max 45 characters | | components | array of [components](#DOCS_INTERACTIONS_MESSAGE_COMPONENTS/) | between 1 and 5 (inclusive) components that make up the modal | > warn From cdafd48218e97b7d04f5895f786e4194c3232e5d Mon Sep 17 00:00:00 2001 From: MaskDuck Date: Wed, 23 Mar 2022 00:37:36 +0700 Subject: [PATCH 176/181] clarify application.summary is an empty string (#4668) * clarify application.summary is an empty string * Update docs/resources/Application.md Co-authored-by: Splatterxl Co-authored-by: Splatterxl --- docs/resources/Application.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/Application.md b/docs/resources/Application.md index a8c7b80e77..5cff625f39 100644 --- a/docs/resources/Application.md +++ b/docs/resources/Application.md @@ -16,7 +16,7 @@ | terms_of_service_url? | string | the url of the app's terms of service | | privacy_policy_url? | string | the url of the app's privacy policy | | owner? | partial [user](#DOCS_RESOURCES_USER/user-object) object | partial user object containing info on the owner of the application | -| summary | string | if this application is a game sold on Discord, this field will be the summary field for the store page of its primary sku | +| summary | string | **deprecated**: previously if this application was a game sold on Discord, this field would be the summary field for the store page of its primary SKU; now an empty string | | verify_key | string | the hex encoded key for verification in interactions and the GameSDK's [GetTicket](#DOCS_GAME_SDK_APPLICATIONS/getticket) | | team | ?[team](#DOCS_TOPICS_TEAMS/data-models-team-object) object | if the application belongs to a team, this will be a list of the members of that team | | guild_id? | snowflake | if this application is a game sold on Discord, this field will be the guild to which it has been linked | From cadb5f4bc906fdc920f9d1608d52df8a0b572f52 Mon Sep 17 00:00:00 2001 From: Joey <90417397+qtdceu@users.noreply.github.com> Date: Tue, 22 Mar 2022 17:38:53 +0000 Subject: [PATCH 177/181] Fix of 'Selling SKUs' danger message tense (#4677) --- docs/game_sdk/Achievements.md | 2 +- docs/game_sdk/Activities.md | 2 +- docs/game_sdk/Applications.md | 2 +- docs/game_sdk/Discord.md | 2 +- docs/game_sdk/Discord_Voice.md | 2 +- docs/game_sdk/Images.md | 2 +- docs/game_sdk/Lobbies.md | 2 +- docs/game_sdk/Networking.md | 2 +- docs/game_sdk/Overlay.md | 2 +- docs/game_sdk/Relationships.md | 2 +- docs/game_sdk/SDK_Starter_Guide.md | 2 +- docs/game_sdk/Storage.md | 2 +- docs/game_sdk/Store.md | 2 +- docs/game_sdk/Users.md | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/game_sdk/Achievements.md b/docs/game_sdk/Achievements.md index 61871458f2..345783a72a 100644 --- a/docs/game_sdk/Achievements.md +++ b/docs/game_sdk/Achievements.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) There's no feeling quite like accomplishing a goal that you've set out to achieve. Is killing 1000 zombies in a game as great an achievement as climbing Mt. Everest? Of course it is, and I didn't even have to leave my house. So get off my back, society. diff --git a/docs/game_sdk/Activities.md b/docs/game_sdk/Activities.md index c96eb2df70..e7d785fcdd 100644 --- a/docs/game_sdk/Activities.md +++ b/docs/game_sdk/Activities.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Looking to integrate Rich Presence into your game? No need to manage multiple SDKs—this one does all that awesome stuff, too!. Delight your players with the ability to post game invites in chat and party up directly from Discord. Surface interesting live game data in their profile and on the Games Tab for their friends, encouraging them to group up and play together. diff --git a/docs/game_sdk/Applications.md b/docs/game_sdk/Applications.md index 5ae3affb4e..864a9e4d41 100644 --- a/docs/game_sdk/Applications.md +++ b/docs/game_sdk/Applications.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Many games run their own backend servers for things like user authentication. If one of those many games is yours, then we've got something for you! This manager gives you access to a bearer token for the currently connected Discord user, which you can send off to your server to do user authentication. diff --git a/docs/game_sdk/Discord.md b/docs/game_sdk/Discord.md index 2c53e97a2e..aedae232a9 100644 --- a/docs/game_sdk/Discord.md +++ b/docs/game_sdk/Discord.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Making a game? Need a whole bunch of fancy APIs to help make it great and your players' lives a breeze? Look no further! The Discord GameSDK is an easy drop-in SDK to help you manage all the hard things that come with making a game. Well, all the hards things about coding it at least. Interpersonal communication skills are on you (have you heard of this cool chat app called Discord?). diff --git a/docs/game_sdk/Discord_Voice.md b/docs/game_sdk/Discord_Voice.md index 4d93e04f5d..54cdb9ca8b 100644 --- a/docs/game_sdk/Discord_Voice.md +++ b/docs/game_sdk/Discord_Voice.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Discord's pride and joy is its voice chat. Well, ok, also its memes, but mostly the voice chat. Text and video chat are pretty great, too. And have you seen that store? Anyway. diff --git a/docs/game_sdk/Images.md b/docs/game_sdk/Images.md index bb28ab5c57..db738bd049 100644 --- a/docs/game_sdk/Images.md +++ b/docs/game_sdk/Images.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Discord is like a book; it's better with pictures. The image manager helps you fetch image data for images in Discord, including user's avatars. They worked hard to pick out those photos and gifs. Show them you care, too. diff --git a/docs/game_sdk/Lobbies.md b/docs/game_sdk/Lobbies.md index 37fc8588ee..9e88f446d8 100644 --- a/docs/game_sdk/Lobbies.md +++ b/docs/game_sdk/Lobbies.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Looking to integrate multiplayer into your game? Lobbies are a great way to organize players into contexts to play together. This manager works hand in hand with the networking layer of our SDK to make multiplayer integrations a breeze by: diff --git a/docs/game_sdk/Networking.md b/docs/game_sdk/Networking.md index a3595c26fd..b06794db0a 100644 --- a/docs/game_sdk/Networking.md +++ b/docs/game_sdk/Networking.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) A note before starting: this documentation covers the "low layer" networking level of the Discord GameSDK. What that means is that using the network manager directly affords you the flexibility to update routes, open channels, and handle events directly emitted by the SDK. If you're looking for something a bit easier and faster to integrate, we recommend that you check out the networking wrapper around our lobby documentation: [Integrated Networking](#DOCS_GAME_SDK_LOBBIES/integrated-networking) diff --git a/docs/game_sdk/Overlay.md b/docs/game_sdk/Overlay.md index ee198c660d..1e1d60965d 100644 --- a/docs/game_sdk/Overlay.md +++ b/docs/game_sdk/Overlay.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now discontinued. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) > warn > The overlay is only supported on Windows for DirectX or OpenGL games. Linux, Mac, and games using Vulkan are not supported. [Click here for more info.](https://support.discord.com/hc/en-us/articles/217659737-Games-Overlay-101) diff --git a/docs/game_sdk/Relationships.md b/docs/game_sdk/Relationships.md index f64bd3f718..5a29b3a392 100644 --- a/docs/game_sdk/Relationships.md +++ b/docs/game_sdk/Relationships.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) This manager helps you access the relationships your players have made on Discord. Unfortunately, it won't help them make relationships IRL. They're on their own for that. It lets you: diff --git a/docs/game_sdk/SDK_Starter_Guide.md b/docs/game_sdk/SDK_Starter_Guide.md index 5dadb6bffe..e807797d1e 100644 --- a/docs/game_sdk/SDK_Starter_Guide.md +++ b/docs/game_sdk/SDK_Starter_Guide.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) Welcome to the Discord GameSDK! We're glad you made it. This SDK is here to solve all your problems, if your problems include finding an awesome SDK to help develop your game. Our SDK is like Clippy, if Clippy were built on a modern tech stack, talked less, and was an awesome game development SDK. diff --git a/docs/game_sdk/Storage.md b/docs/game_sdk/Storage.md index 71ac3377f1..0ce3d744a8 100644 --- a/docs/game_sdk/Storage.md +++ b/docs/game_sdk/Storage.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) We've been told that people playing games want to save their progress as they go, allowing them to come back where they left off and continue their epic journey of power. diff --git a/docs/game_sdk/Store.md b/docs/game_sdk/Store.md index 0b19e4611a..8a5d925666 100644 --- a/docs/game_sdk/Store.md +++ b/docs/game_sdk/Store.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) If your game has DLC or offers in-app purchases, this manager is for you! The Store Manager allows you to fetch a users' entitlements, as well as being notified when a user is granted an entitlement from a purchase flow for your game. diff --git a/docs/game_sdk/Users.md b/docs/game_sdk/Users.md index 8a914266e1..5a5b6126fe 100644 --- a/docs/game_sdk/Users.md +++ b/docs/game_sdk/Users.md @@ -4,7 +4,7 @@ > Need help with the SDK? Talk to us in the [Discord Developers Server](https://discord.gg/discord-developers)! > danger -> Selling SKUs on Discord is now deprecated, and will be discontinued on March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) +> Selling SKUs on Discord has now been discontinued as of March 1, 2022. [Read here for more info.](https://support-dev.discord.com/hc/en-us/articles/4414590563479) This manager helps retrieve basic user information for any user on Discord. From 919d6ab1709c5d7aea5a422a97257a00727a8cea Mon Sep 17 00:00:00 2001 From: Dhafit Farenza <87353624+dhafitf@users.noreply.github.com> Date: Wed, 23 Mar 2022 00:43:14 +0700 Subject: [PATCH 178/181] fix typos (#4670) --- docs/game_sdk/Activities.md | 2 +- docs/game_sdk/Discord.md | 3 +-- docs/topics/Opcodes_and_Status_Codes.md | 2 +- docs/topics/RPC.md | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/game_sdk/Activities.md b/docs/game_sdk/Activities.md index e7d785fcdd..d66d5f3aef 100644 --- a/docs/game_sdk/Activities.md +++ b/docs/game_sdk/Activities.md @@ -498,7 +498,7 @@ Fires when the user receives a join or spectate invite. // An invite has been received. Consider rendering the user / activity on the UI. activityManager.OnActivityInvite += (Discord.ActivityActionType Type, ref Discord.User user, ref Discord.Activity activity2) => { - Console.WriteLine("Recieved Invite Type: {0}, from User: {1}, with Activity Name: {2}", Type, user.Username, activity2.Name); + Console.WriteLine("Received Invite Type: {0}, from User: {1}, with Activity Name: {2}", Type, user.Username, activity2.Name); // activityManager.AcceptInvite(user.Id, result => // { // Console.WriteLine("AcceptInvite {0}", result); diff --git a/docs/game_sdk/Discord.md b/docs/game_sdk/Discord.md index aedae232a9..d4abad3fb6 100644 --- a/docs/game_sdk/Discord.md +++ b/docs/game_sdk/Discord.md @@ -58,8 +58,7 @@ userManager.OnCurrentUserUpdate += () => Console.WriteLine(currentUser.Username); Console.WriteLine(currentUser.Discriminator); Console.WriteLine(currentUser.Id); - }; -}); +}; ``` ## Environment Variables diff --git a/docs/topics/Opcodes_and_Status_Codes.md b/docs/topics/Opcodes_and_Status_Codes.md index 55e13ffaf3..b9e0efab04 100644 --- a/docs/topics/Opcodes_and_Status_Codes.md +++ b/docs/topics/Opcodes_and_Status_Codes.md @@ -22,7 +22,7 @@ All gateway events in Discord are tagged with an opcode that denotes the payload ###### Gateway Close Event Codes -In order to prevent broken reconnect loops, you should consider some close codes as a signal to stop reconnnecting. This can be because your token expired, or your identification is invalid. This table explains what the application defined close codes for the gateway are, and which close codes you should not attempt to reconnect. +In order to prevent broken reconnect loops, you should consider some close codes as a signal to stop reconnecting. This can be because your token expired, or your identification is invalid. This table explains what the application defined close codes for the gateway are, and which close codes you should not attempt to reconnect. | Code | Description | Explanation | Reconnect | diff --git a/docs/topics/RPC.md b/docs/topics/RPC.md index 8976c84233..d61d82984b 100644 --- a/docs/topics/RPC.md +++ b/docs/topics/RPC.md @@ -900,7 +900,7 @@ Used to unsubscribe from events. `evt` of the payload should be set to the event Used by hardware manufacturers to send information about the current state of their certified devices that are connected to Discord. -###### Set Certified Devices Argument Strucure +###### Set Certified Devices Argument Structure | Field | Type | Description | | ------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------- | From dc08e0c558d0c7ccb710313d1eb9565670a5967c Mon Sep 17 00:00:00 2001 From: Joey <90417397+qtdceu@users.noreply.github.com> Date: Tue, 22 Mar 2022 18:39:00 +0000 Subject: [PATCH 179/181] Added invites to developer server (#4683) --- docs/dispatch/Error_Codes.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/dispatch/Error_Codes.md b/docs/dispatch/Error_Codes.md index e1ed897db8..7fb6608bcf 100644 --- a/docs/dispatch/Error_Codes.md +++ b/docs/dispatch/Error_Codes.md @@ -13,14 +13,14 @@ This page outlines some of the common errors codes that may be encountered when | 2024 | Uninstall Failed | Attempt to manually remove game files from disk | | 2025 | Install Script Failed | Restart Discord, attempt to uninstall/reinstall the game, ensure script is correct | | 2029 | Build Not Found | Completely close and re-open Discord | -| 2051 | Panic! | Escalate in the dev server in #dispatch | -| 2058 | Too Many API Retries | Escalate in the #dispatch channel of the [Discord Developers server](https://discord.gg/discord-developers) | +| 2051 | Panic! | Escalate in the #dispatch channel of the [Discord Developers Server](https://discord.gg/discord-developers) | +| 2058 | Too Many API Retries | Escalate in the #dispatch channel of the [Discord Developers Server](https://discord.gg/discord-developers) | | 2059 | Failed to set Registry Key | User most likely denied Windows administrator permissions prompt. Try again, and accept the prompt | | 2064 | Failed to Patch File | Attempted to patch the game while running: ensure the game process is entirely ended, try restarting Discord, try disabling antivirus | | 2065 | No Manifests | Ensure that your manifests are properly selected in the Developer Portal for your SKU | -| 2069 | API Error | Intermittent API issues. Wait, escalate to #dispatch in the dev server if it persists | -| 2070 | Bad Response | Intermittent API issues. Wait, escalate to #dispatch in the dev server if it persists | +| 2069 | API Error | Intermittent API issues. Wait, escalate in the #dispatch channel of the [Discord Developers Server](https://discord.gg/discord-developers) | +| 2070 | Bad Response | Intermittent API issues. Wait, escalate in the #dispatch channel of the [Discord Developers Server](https://discord.gg/discord-developers) | | 2073 | Not Entitled | Check that your manifests are properly configured in the Developer Portal. Have the user install the game from the Library, not the store page | | 2076 | Two Clients Patching | User has multiple Discords open trying to patch the same game; only use one | -| 9001 | Unknown | Catch-all error code. Escalate to #dispatch in dev server with repro steps/as much info as possible | +| 9001 | Unknown | Catch-all error code. Escalate escalate in the #dispatch channel of the [Discord Developers Server](https://discord.gg/discord-developers) with repro steps/as much info as possible | From 839ad24364c782b311f807f3ca51d13db8a7a414 Mon Sep 17 00:00:00 2001 From: Ian Webster Date: Tue, 22 Mar 2022 13:49:57 -0700 Subject: [PATCH 180/181] remove extra word --- docs/dispatch/Error_Codes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dispatch/Error_Codes.md b/docs/dispatch/Error_Codes.md index 7fb6608bcf..a0aa444df7 100644 --- a/docs/dispatch/Error_Codes.md +++ b/docs/dispatch/Error_Codes.md @@ -22,5 +22,5 @@ This page outlines some of the common errors codes that may be encountered when | 2070 | Bad Response | Intermittent API issues. Wait, escalate in the #dispatch channel of the [Discord Developers Server](https://discord.gg/discord-developers) | | 2073 | Not Entitled | Check that your manifests are properly configured in the Developer Portal. Have the user install the game from the Library, not the store page | | 2076 | Two Clients Patching | User has multiple Discords open trying to patch the same game; only use one | -| 9001 | Unknown | Catch-all error code. Escalate escalate in the #dispatch channel of the [Discord Developers Server](https://discord.gg/discord-developers) with repro steps/as much info as possible | +| 9001 | Unknown | Catch-all error code. Escalate in the #dispatch channel of the [Discord Developers Server](https://discord.gg/discord-developers) with repro steps/as much info as possible | From 931af47f253369d004e1c56476f4c40a3af9dc09 Mon Sep 17 00:00:00 2001 From: Patrick Yang Date: Wed, 23 Mar 2022 10:49:12 -0700 Subject: [PATCH 181/181] Slash command localization (#4653) * Document slash command localization * fix links? * prettify tables * some style and functionality updates * style changes --- docs/interactions/Application_Commands.md | 152 ++++++++++++++++++---- 1 file changed, 125 insertions(+), 27 deletions(-) diff --git a/docs/interactions/Application_Commands.md b/docs/interactions/Application_Commands.md index 5e49eba9e8..8744dda08e 100644 --- a/docs/interactions/Application_Commands.md +++ b/docs/interactions/Application_Commands.md @@ -10,17 +10,19 @@ Application commands are commands that an application can register to Discord. T ###### Application Command Structure -| Field | Type | Description | Valid Types | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-------------| -| id | snowflake | unique id of the command | all | -| type? | one of [application command type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-types) | the type of command, defaults `1` if not set | all | -| application_id | snowflake | unique id of the parent application | all | -| guild_id? | snowflake | guild id of the command, if not global | all | -| name | string | [1-32 character name](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-naming) | all | -| description | string | 1-100 character description for `CHAT_INPUT` commands, empty string for `USER` and `MESSAGE` commands | all | -| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | the parameters for the command, max 25 | CHAT_INPUT | -| default_permission? | boolean (default `true`) | whether the command is enabled by default when the app is added to a guild | all | -| version | snowflake | autoincrementing version identifier updated during substantial record changes | all | +| Field | Type | Description | Valid Types | +|----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-------------| +| id | snowflake | unique id of the command | all | +| type? | one of [application command type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-types) | the type of command, defaults `1` if not set | all | +| application_id | snowflake | unique id of the parent application | all | +| guild_id? | snowflake | guild id of the command, if not global | all | +| name | string | [1-32 character name](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-naming) | all | +| name_localizations? | dictionary with keys in [available locales](#DOCS_REFERENCE/locales) | Localization dictionary for the `name` field. Values follow the same restrictions as `name` | all | +| description | string | 1-100 character description for `CHAT_INPUT` commands, empty string for `USER` and `MESSAGE` commands | all | +| description_localizations? | dictionary with keys in [available locales](#DOCS_REFERENCE/locales) | Localization dictionary for the `description` field. Values follow the same restrictions as `description` | all | +| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | the parameters for the command, max 25 | CHAT_INPUT | +| default_permission? | boolean | whether the command is enabled by default when the app is added to a guild (default `true`) | all | +| version | snowflake | autoincrementing version identifier updated during substantial record changes | all | ###### Application Command Types @@ -37,18 +39,20 @@ Application commands are commands that an application can register to Discord. T > warn > Required `options` must be listed before optional options -| Field | Type | Description | -| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | -| type | one of [application command option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) | the type of option | -| name | string | [1-32 character name](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-naming) | -| description | string | 1-100 character description | -| required? | boolean | if the parameter is required or optional--default `false` | -| choices? | array of [application command option choice](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-choice-structure) | choices for `STRING`, `INTEGER`, and `NUMBER` types for the user to pick from, max 25 | -| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | if the option is a subcommand or subcommand group type, these nested options will be the parameters | -| channel_types? | array of [channel types](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | if the option is a channel type, the channels shown will be restricted to these types | -| min_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the minimum value permitted | -| max_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the maximum value permitted | -| autocomplete? \* | boolean | if autocomplete interactions are enabled for this `STRING`, `INTEGER`, or `NUMBER` type option | +| Field | Type | Description | +|----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------| +| type | one of [application command option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) | the type of option | +| name | string | [1-32 character name](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-naming) | +| name_localizations? | dictionary with keys in [available locales](#DOCS_REFERENCE/locales) | Localization dictionary for the `name` field. Values follow the same restrictions as `name` | +| description | string | 1-100 character description | +| description_localizations? | dictionary with keys in [available locales](#DOCS_REFERENCE/locales) | Localization dictionary for the `description` field. Values follow the same restrictions as `description` | +| required? | boolean | if the parameter is required or optional--default `false` | +| choices? | array of [application command option choice](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-choice-structure) | choices for `STRING`, `INTEGER`, and `NUMBER` types for the user to pick from, max 25 | +| options? | array of [application command option](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-structure) | if the option is a subcommand or subcommand group type, these nested options will be the parameters | +| channel_types? | array of [channel types](#DOCS_RESOURCES_CHANNEL/channel-object-channel-types) | if the option is a channel type, the channels shown will be restricted to these types | +| min_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the minimum value permitted | +| max_value? | integer for `INTEGER` options, double for `NUMBER` options | if the option is an `INTEGER` or `NUMBER` type, the maximum value permitted | +| autocomplete? \* | boolean | if autocomplete interactions are enabled for this `STRING`, `INTEGER`, or `NUMBER` type option | \* `autocomplete` may not be set to true if `choices` are present. @@ -75,10 +79,11 @@ Application commands are commands that an application can register to Discord. T If you specify `choices` for an option, they are the **only** valid values for a user to pick -| Field | Type | Description | -| ----- | ----------------------------- | --------------------------------------------------- | -| name | string | 1-100 character choice name | -| value | string, integer, or double \* | value of the choice, up to 100 characters if string | +| Field | Type | Description | +|---------------------|----------------------------------------------------------------------|----------------------------------------------------------------------------------------------| +| name | string | 1-100 character choice name | +| name_localizations? | dictionary with keys in [available locales](#DOCS_REFERENCE/locales) | Localization dictionary for the `name` field. Values follow the same restrictions as `name` | +| value | string, integer, or double \* | value of the choice, up to 100 characters if string | \* Type of `value` depends on the [option type](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object-application-command-option-type) that the choice belongs to. @@ -390,6 +395,8 @@ When someone uses a slash command, your application will receive an interaction: }, "id": "786008729715212338", "guild_id": "290926798626357999", + "guild_locale": "en-US", + "locale": "en-US", "data": { "options": [{ "name": "cardname", @@ -740,7 +747,9 @@ When someone uses a user command, your application will receive an interaction: "type": 2 }, "guild_id": "772904309264089089", + "guild_locale": "en-US", "id": "867794291820986368", + "locale": "en-US", "member": { "avatar": null, "deaf": false, @@ -828,7 +837,9 @@ When someone uses a message command, your application will receive an interactio "type": 3 }, "guild_id": "772904309264089089", + "guild_locale": "en-US", "id": "867793873336926249", + "locale": "en-US", "member": { "avatar": null, "deaf": false, @@ -883,6 +894,75 @@ An autocomplete interaction **can return partial data** for option values. Your } ``` +## Localization + +Slash commands can be localized, which will cause them to use localized names and descriptions depending on the client's selected language. This is entirely optional. Localization is available for names and descriptions of commands, subcommands, and options, as well as the names of choices, by submitting the appropriate `name_localizations` and `description_localizations` fields when creating or updating the application command. + +Application commands may be partially localized - not all [available locales](#DOCS_REFERENCE/locales) are required, nor do different fields within a command need to support the same set of locales. If a locale is not present in a localizations dictionary for a field, users in that locale will see the default value for that field. It's not necessary to fill out all locales with the default value. Any localized values that are identical to the default will be ignored. + +Localized option names are subject to an additional constraint, which is that they must be distinct from all other default option names of that command, as well as all other option names within that locale on that command. + +When taking advantage of slash command localization, the interaction payload received by your client will still use default command, subcommand, and option names. To localize your interaction response, you can determine the client's selected language by using the `locale` key in the interaction payload. + +An application command furnished with localizations might look like this: + +```json +{ + "name": "birthday", + "type": 1, + "description": "Wish a friend a happy birthday", + "name_localizations": { + "zh-CN": "生日", + "el": "γενέθλια" + }, + "description_localizations": { + "zh-CN": "祝你朋友生日快乐" + }, + "options": [ + { + "name": "age", + "type": 4, + "description": "Your friend's age", + "name_localizations": { + "zh-CN": "岁数" + }, + "description_localizations": { + "zh-CN": "你朋友的岁数" + } + } + ] +} +``` + +### Retrieving localized commands + +While most endpoints that return application command objects will return the `name_localizations` and `description_localizations` fields, some will not by default. This includes `GET` endpoints that return all of an application's guild or global commands. Instead, those endpoints will supply additional `name_localized` or `description_localized` fields, which only contain the localization relevant to the requester's locale. (The full dictionaries can still be obtained by supplying the appropriate query argument). + +For example, if a batch `GET` request were made with locale `zh-CN`, including the above command, the returned object would look as follows: + +```json +{ + "name": "birthday", + "type": 1, + "description": "Wish a friend a happy birthday", + "name_localized": "生日", + "description_localized": "祝你朋友生日快乐", + "options": [ + { + "name": "age", + "type": 4, + "description": "Your friend's age", + "name_localized": "岁数", + "description_localized": "你朋友的岁数", + } + ] +} +``` + +If the requester's locale is not found in a localizations dictionary, then the corresponding `name_localization` or `description_localization` for that field will also not be present. + +Locale is determined by looking at the `X-Discord-Locale` header, then the `Accept-Language` header if not present, then lastly the user settings locale. + ### Endpoints > info @@ -890,8 +970,17 @@ An autocomplete interaction **can return partial data** for option values. Your ## Get Global Application Commands % GET /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/commands +> warn +> The objects returned by this endpoint may be augmented with [additional fields if localization is active](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/retrieving-localized-commands). + Fetch all of the global commands for your application. Returns an array of [application command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object) objects. +###### Query String Params + +| Field | Type | Description | +|---------------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| with_localizations? | boolean | Whether to include full localization dictionaries (`name_localizations` and `description_localizations`) in the returned objects, instead of the `name_localized` and `description_localized` fields. Default `false`. | + ## Create Global Application Command % POST /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/commands > danger @@ -942,8 +1031,17 @@ Takes a list of application commands, overwriting the existing global command li ## Get Guild Application Commands % GET /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/commands +> warn +> The objects returned by this endpoint may be augmented with [additional fields if localization is active](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/retrieving-localized-commands). + Fetch all of the guild commands for your application for a specific guild. Returns an array of [application command](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/application-command-object) objects. +###### Query String Params + +| Field | Type | Description | +|---------------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| with_localizations? | boolean | Whether to include full localization dictionaries (`name_localizations` and `description_localizations`) in the returned objects, instead of the `name_localized` and `description_localized` fields. Default `false`. | + ## Create Guild Application Command % POST /applications/{application.id#DOCS_RESOURCES_APPLICATION/application-object}/guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/commands > danger