Compare commits

...

76 Commits

Author SHA1 Message Date
github-actions[bot]
1a6884423c chore(release): 0.37.5 🎉 (#572)
Build ran for 0098889499

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-08-25 18:24:03 +04:00
Vitor
0098889499 feat(FormattingPatterns): add ApplicationCommand (#525)
Co-authored-by: Almeida <almeidx@pm.me>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2022-08-24 01:22:44 +03:00
github-actions[bot]
bd8765d666 chore(release): 0.37.4 🎉 (#571)
Build ran for 96b4bc504d

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-08-22 15:27:57 +03:00
Vlad Frangu
96b4bc504d chore: small navbar fix for dropdown 2022-08-20 19:59:35 +03:00
dependabot[bot]
35b17dcbf8 chore(deps): bump minimist from 1.2.5 to 1.2.6 in /website (#567)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-20 01:43:03 +03:00
Glenn
956f289e88 feat: add common JSON error types (#568) 2022-08-20 01:42:28 +03:00
Vlad Frangu
ef8241fe88 chore: prettier search and contextual search 2022-08-19 22:39:35 +03:00
Ian Mitchell
248484e556 feat(ApplicationCommand): export base chat input types (#569) 2022-08-19 22:12:35 +03:00
github-actions[bot]
1fe707c00e chore(release): 0.37.3 🎉 (#566)
Build ran for 5bb50ae7ea

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-08-18 15:32:34 +03:00
Vitor
5bb50ae7ea feat(RESTJSONErrorCodes): add 240000 (#565) 2022-08-17 21:02:08 +03:00
github-actions[bot]
0fab79feda chore(release): 0.37.2 🎉 (#561)
Build ran for 4732f1abbe

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-08-11 15:27:27 +03:00
MateoDeveloper
4732f1abbe docs: add notes about MESSAGE_CONTENT intent in affected data fields (#556) 2022-08-10 17:37:19 +03:00
MateoDeveloper
796f6d8a3b fix(RESTGetAPIChannelUsersThreadsArchivedResult): add has_more missing field (#543) 2022-08-09 23:40:46 +03:00
MateoDeveloper
4488d8fd26 feat(APIVoiceChannel): support text in voice, properties last_message_id and rate_limit_per_user (#544) 2022-08-09 23:39:54 +03:00
Vitor
9a50367dad feat(GatewayReadyDispatchData): add resume_gateway_url (#552) 2022-08-09 23:37:50 +03:00
aetheryx
dc3d5df0a2 fix(GatewayRequestGuildMembersData): limit being required with user_ids (#559) 2022-08-09 23:37:26 +03:00
aetheryx
0e03e39aa2 fix(GatewayGuildMembersChunkDispatchData): make chunk pagination properties mandatory (#558) 2022-08-09 15:24:46 +00:00
Vlad Frangu
f8a9c8b5c6 feat: add search that might or might not work 2022-08-09 12:55:23 +03:00
github-actions[bot]
3eb239ce0c chore(release): 0.37.1 🎉 (#551)
Build ran for 48016e5115

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-08-04 15:57:24 +03:00
MateoDeveloper
48016e5115 docs: fix wrong reference links (#545) 2022-08-03 19:01:28 +03:00
github-actions[bot]
a08e82f097 chore(release): 0.37.0 🎉 (#542)
Build ran for 1def1010ca

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-07-29 12:34:52 +03:00
Superchupu
1def1010ca docs: update discord channel name again (#541) 2022-07-26 10:38:35 +00:00
dependabot[bot]
af8e7c7a5b chore(deps): bump terser from 5.14.0 to 5.14.2 in /website (#535)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-26 12:14:05 +03:00
MateoDeveloper
cecf17b415 refactor(RESTJSONErrorCodes): use MaximumThreadParticipantsReached instead in error code 30033 (#540)
BREAKING CHANGE: `MaximumThreadParticipants` was renamed to `MaximumThreadParticipantsReached` for consistency with the rest of the codes
2022-07-26 12:13:34 +03:00
github-actions[bot]
cb6d4bacc4 chore(release): 0.36.3 🎉 (#536)
Build ran for 0a2e7787c6

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-07-21 15:30:52 +03:00
MateoDeveloper
0a2e7787c6 feat(RESTJSONErrorCodes): add error 30034 (#530)
Co-authored-by: Vitor <vito7.dev@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2022-07-20 14:56:14 +00:00
Vitor
65b672e2af feat(RESTJSONErrorCodes): add new errors (#506)
* feat(RESTJSONErrorCodes): add new errors

* feat: add 50138

* feat: add 40043

* chore: up-to-date with upstream PR
2022-07-20 17:48:37 +03:00
Vitor
2b53b20b84 feat(APIThreadChannel): add fields about new message counter capability (#532) 2022-07-20 17:47:27 +03:00
MateoDeveloper
907d88ada9 feat(RESTJSONErrorCodes): add error 50132 (#505)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2022-07-16 11:56:16 +00:00
Vitor
8465c5866c refactor(GuildFeature): remove Commerce (#523)
* refactor(GuildFeature): remove `Commerce`

* docs: add `@unstable` tag to `Hub` & `LinkedToHub`
2022-07-16 14:53:47 +03:00
Vitor
09a114133c feat(RESTJSONErrorCodes): add ApplicationNotYetAvailable (#507) 2022-07-15 23:53:58 +03:00
Vitor
4577ac2609 feat(APIConnection): add ConnectionService to type (#491)
* feat: add `ConnectionService` to `APIConnection#type`

* feat: add `epicgames`

* feat: add old connections

* refactor: capitalization

* feat: add missing `SamsungGalaxy`
2022-07-15 20:47:05 +00:00
Vitor
59e247729f feat(GatewayGuildCreateDispatchData): add missing unavailable (#504) 2022-07-15 22:47:44 +03:00
MateoDeveloper
e78de0c83b feat(RESTJSONErrorCodes): add error 50146 (#527) 2022-07-14 23:53:31 +03:00
github-actions[bot]
3644b70e2e chore(release): 0.36.2 🎉 (#528)
Build ran for 4af2ea9141

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-07-14 15:32:42 +03:00
Vitor
4af2ea9141 feat(RESTPutAPIApplicationGuildCommandsJSONBody): add missing id (#522) 2022-07-13 23:42:14 +03:00
Almeida
f2c3451c2a feat(RESTJSONErrorCodes): add error 30032 (#521) 2022-07-13 20:52:11 +03:00
Parbez
d503c71252 docs: mark the maximum allowed length for string option types (#514) 2022-07-07 19:31:20 +03:00
Superchupu
e253a4ac87 chore: resolve ci error (#518) 2022-07-05 22:33:13 +03:00
Superchupu
84226e402a docs: update discord channel name (#517) 2022-07-05 18:16:44 +03:00
github-actions[bot]
2e84efb9b8 chore(release): 0.36.1 🎉 (#516)
Build ran for df1527c4bb

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-07-04 16:15:13 +03:00
MateoDeveloper
df1527c4bb docs(APIApplicationCommandOption): number and integer typos in max_value field description (#515) 2022-07-03 22:16:10 +00:00
MateoDeveloper
2cade98ed0 feat(APIApplicationCommandStringOption): add min_length and max_length (#513) 2022-07-02 13:54:15 +03:00
Vitor
d3535d6db1 docs(APIMessageInteraction): name now includes more info (#511) 2022-07-02 02:40:00 +03:00
github-actions[bot]
2f2d4ae3fa chore(release): 0.36.0 🎉 (#510)
Build ran for 0c65d40af0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-06-30 15:26:23 +03:00
Vitor
0c65d40af0 feat(APIBaseInteraction): add app_permissions (#509) 2022-06-29 21:17:57 +03:00
advaith
12072b70a0 feat(MessageType): update names (#498)
BREAKING CHANGE: The following message types have been renamed:
- `GuildMemberJoin` -> `UserJoin`
- `UserPremiumGuildSubscription` -> `GuildBoost`
- `UserPremiumGuildSubscriptionTier1` -> `GuildBoostTier1`
- `UserPremiumGuildSubscriptionTier2` -> `GuildBoostTier2`
- `UserPremiumGuildSubscriptionTier3` -> `GuildBoostTier3`
2022-06-27 23:55:04 +03:00
Suneet Tipirneni
34908aa4ce feat(RESTJSONErrorCodes): add error 20024 (#480) 2022-06-27 23:36:00 +03:00
github-actions[bot]
b2eeb3f27b chore(release): 0.35.0 🎉 (#503)
Build ran for fc3aa1c911

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-06-23 21:16:21 +03:00
MateoDeveloper
fc3aa1c911 feat(UserFlags): add Quarantined flag (#495)
* feat(UserFlags): add Quarantined flag

* fix: change to Math.pow()

* chore: add @unstable

* fix: improvements to @unstable

* fix: description errors
2022-06-21 13:33:33 +03:00
Vitor
06098869d5 feat(REST): add CDNRoutes (#502) 2022-06-21 01:48:46 +03:00
MateoDeveloper
a2d76fc7ca chore(UserFlags): add @unstable to Spammer flag (#500) 2022-06-21 01:46:38 +03:00
n1ck_pro
56d491fa68 feat(APIEmbedVideo): add missing proxy_url property (#496) 2022-06-18 21:46:11 +03:00
Almeida
3b10c60faa refactor(GatewayIdentifyProperties): remove $ prefix from keys (#493)
BREAKING CHANGE: The fields for identify no longer use the `$` prefix for the values.
2022-06-17 22:41:12 +03:00
github-actions[bot]
c6e320bd22 chore(release): 0.34.0 🎉 (#492)
Build ran for f49546c780

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-06-13 16:15:34 +02:00
Vlad Frangu
f49546c780 chore: more website fixes (#490) 2022-06-13 10:16:01 +03:00
Vlad Frangu
63959ef2aa chore: fix ci for publishing new versions (#488) 2022-06-12 15:07:15 +03:00
Vlad Frangu
f72fbc93f6 docs: lazy load JetBrains mono font (#486) 2022-06-10 21:43:17 +03:00
Vlad Frangu
d83dadca17 docs: fix some grammar mistakes (#485) 2022-06-10 21:43:05 +03:00
Vitor
0bb2204b5d refactor: separate MESSAGE_CREATE fields from APIMessage object (#434)
BREAKING CHANGE: Certain fields that come only through the gateway are now correctly typed as such
2022-06-08 22:24:24 +03:00
Almeida
292c6b58ee feat: add guild mfa endpoint and error 50017 (#476) 2022-06-08 22:18:18 +03:00
Vitor
63ca86afbd docs(RESTPatchAPIChannelJSONBody): voice channels can be set as nsfw (#474) 2022-06-08 21:54:54 +03:00
Vitor
20653b3481 feat(RESTJSONErrorCodes): add 220003 error (#466) 2022-06-08 21:44:07 +03:00
Vlad Frangu
7bef64df76 chore: update vercel links (#484) 2022-06-08 20:36:09 +02:00
Vlad Frangu
6477c1e5d8 chore: showcase website in package.json (#482) 2022-06-08 01:44:23 +03:00
github-actions[bot]
e957695400 chore(release): 0.33.5 🎉 (#481)
Build ran for d8543177cd

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-06-07 12:42:27 +02:00
Almeida
d8543177cd feat(RESTJSONErrorCodes): add error 30052 (#469) 2022-06-07 01:55:57 +03:00
Vlad Frangu
cb663096a5 chore: make website build again -.- (#478)
Thanks Docusaurus!!
2022-06-06 18:57:02 +03:00
A. Román
eff8892b03 fix(RESTPostAPIWebhookWithTokenJSONBody): thread_name should be optional (#479) 2022-06-06 18:56:48 +03:00
DD
d268e0bff7 fix(GatewayGuildCreateDispatch): add missing GatewayGuildCreateDispatch (#477) 2022-06-06 17:04:20 +03:00
github-actions[bot]
7b1e5a70e5 chore(release): 0.33.4 🎉 (#475)
Build ran for 8e5f07e2ee

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-06-06 14:38:21 +02:00
Vitor
8e5f07e2ee feat(RESTPostAPIWebhookWithTokenJSONBody): add thread_name (#463)
* feat(RESTPostAPIWebhookWithTokenJSONBody): add `thread_name`

* docs: update from upstream

* docs: make it clear
2022-06-04 17:52:22 +03:00
github-actions[bot]
1c6ea86110 chore(release): 0.33.3 🎉 (#472)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-06-04 15:22:11 +02:00
DD
43c372d817 fix(AddUndefinedToPossiblyUndefinedProperties): recurse down objects (#471) 2022-06-04 16:14:01 +03:00
Vlad Frangu
9f386cb874 docs: fix typo (#468) 2022-06-03 12:30:37 +03:00
Vlad Frangu
019b9de1e8 docs: fix line highlighting for contributing guide (#467) 2022-06-03 11:54:19 +03:00
144 changed files with 7467 additions and 2652 deletions

View File

@@ -5,5 +5,6 @@
"source.organizeImports": false,
"source.fixAll": true,
"source.fixAll.eslint": true
}
},
"cSpell.enableFiletypes": ["mdx"]
}

View File

@@ -1,3 +1,146 @@
## [0.37.5](https://github.com/discordjs/discord-api-types/compare/0.37.4...0.37.5) (2022-08-25)
### Features
- **FormattingPatterns:** add `ApplicationCommand` ([#525](https://github.com/discordjs/discord-api-types/issues/525)) ([0098889](https://github.com/discordjs/discord-api-types/commit/00988894995f7ac5e8ddc34125704a230329137c))
## [0.37.4](https://github.com/discordjs/discord-api-types/compare/0.37.3...0.37.4) (2022-08-22)
### Features
- add common JSON error types ([#568](https://github.com/discordjs/discord-api-types/issues/568)) ([956f289](https://github.com/discordjs/discord-api-types/commit/956f289e885763a620cb67a36e7e42683b5c08bf))
- **ApplicationCommand:** export base chat input types ([#569](https://github.com/discordjs/discord-api-types/issues/569)) ([248484e](https://github.com/discordjs/discord-api-types/commit/248484e55613e2da3f1d659395e1f4c010cb51b5))
## [0.37.3](https://github.com/discordjs/discord-api-types/compare/0.37.2...0.37.3) (2022-08-18)
### Features
- **RESTJSONErrorCodes:** add 240000 ([#565](https://github.com/discordjs/discord-api-types/issues/565)) ([5bb50ae](https://github.com/discordjs/discord-api-types/commit/5bb50ae7ea6859845c9d9996f02ac42c61413df0))
## [0.37.2](https://github.com/discordjs/discord-api-types/compare/0.37.1...0.37.2) (2022-08-11)
### Bug Fixes
- **GatewayGuildMembersChunkDispatchData:** make chunk pagination properties mandatory ([#558](https://github.com/discordjs/discord-api-types/issues/558)) ([0e03e39](https://github.com/discordjs/discord-api-types/commit/0e03e39aa2bf8f1b9a58113a3242c4722e64922b))
- **GatewayRequestGuildMembersData:** limit being required with user_ids ([#559](https://github.com/discordjs/discord-api-types/issues/559)) ([dc3d5df](https://github.com/discordjs/discord-api-types/commit/dc3d5df0a2931eff63991987166634661d5bd1d8))
- **RESTGetAPIChannelUsersThreadsArchivedResult:** add `has_more` missing field ([#543](https://github.com/discordjs/discord-api-types/issues/543)) ([796f6d8](https://github.com/discordjs/discord-api-types/commit/796f6d8a3b2f55d2a120137801e0450ddf30576e))
### Features
- add search that might or might not work ([f8a9c8b](https://github.com/discordjs/discord-api-types/commit/f8a9c8b5c6bdd73bcbf9dd6fff66fafac2594ba4))
- **APIVoiceChannel:** support text in voice, properties `last_message_id` and `rate_limit_per_user` ([#544](https://github.com/discordjs/discord-api-types/issues/544)) ([4488d8f](https://github.com/discordjs/discord-api-types/commit/4488d8fd2611a6547fc6149ba1cec5682340a119))
- **GatewayReadyDispatchData:** add `resume_gateway_url` ([#552](https://github.com/discordjs/discord-api-types/issues/552)) ([9a50367](https://github.com/discordjs/discord-api-types/commit/9a50367dad3a06fbca6e8d1fdd98fbf144595d4e))
## [0.37.1](https://github.com/discordjs/discord-api-types/compare/0.37.0...0.37.1) (2022-08-04)
# [0.37.0](https://github.com/discordjs/discord-api-types/compare/0.36.3...0.37.0) (2022-07-28)
### Code Refactoring
- **RESTJSONErrorCodes:** use `MaximumThreadParticipantsReached` instead in error code 30033 ([#540](https://github.com/discordjs/discord-api-types/issues/540)) ([cecf17b](https://github.com/discordjs/discord-api-types/commit/cecf17b4158fbebb3ee508518a9e9a7b1297356f))
### BREAKING CHANGES
- **RESTJSONErrorCodes:** `MaximumThreadParticipants` was renamed to `MaximumThreadParticipantsReached` for consistency with the rest of the codes
## [0.36.3](https://github.com/discordjs/discord-api-types/compare/0.36.2...0.36.3) (2022-07-21)
### Features
- **APIConnection:** add `ConnectionService` to `type` ([#491](https://github.com/discordjs/discord-api-types/issues/491)) ([4577ac2](https://github.com/discordjs/discord-api-types/commit/4577ac2609f4a861505bc41f4293f482db251cdc))
- **APIThreadChannel:** add fields about new message counter capability ([#532](https://github.com/discordjs/discord-api-types/issues/532)) ([2b53b20](https://github.com/discordjs/discord-api-types/commit/2b53b20b84b7434b9a35b715d8ebdeb040835dca))
- **GatewayGuildCreateDispatchData:** add missing `unavailable` ([#504](https://github.com/discordjs/discord-api-types/issues/504)) ([59e2477](https://github.com/discordjs/discord-api-types/commit/59e247729fcd27be839c88516939ec22843781ce))
- **RESTJSONErrorCodes:** add `ApplicationNotYetAvailable` ([#507](https://github.com/discordjs/discord-api-types/issues/507)) ([09a1141](https://github.com/discordjs/discord-api-types/commit/09a114133c7599cc14d4a0eb61425162091c45ee))
- **RESTJSONErrorCodes:** add error `30034` ([#530](https://github.com/discordjs/discord-api-types/issues/530)) ([0a2e778](https://github.com/discordjs/discord-api-types/commit/0a2e7787c672ffb4af83e055df632aae36811445))
- **RESTJSONErrorCodes:** add error `50132` ([#505](https://github.com/discordjs/discord-api-types/issues/505)) ([907d88a](https://github.com/discordjs/discord-api-types/commit/907d88ada93221802a4aefe7dc0ca3b2b73f94f0))
- **RESTJSONErrorCodes:** add error `50146` ([#527](https://github.com/discordjs/discord-api-types/issues/527)) ([e78de0c](https://github.com/discordjs/discord-api-types/commit/e78de0c83ba93145a2302ddea2e55b5050291c52))
- **RESTJSONErrorCodes:** add new errors ([#506](https://github.com/discordjs/discord-api-types/issues/506)) ([65b672e](https://github.com/discordjs/discord-api-types/commit/65b672e2afd2135333272d4e7b771eba237a21b6))
## [0.36.2](https://github.com/discordjs/discord-api-types/compare/0.36.1...0.36.2) (2022-07-14)
### Features
- **RESTJSONErrorCodes:** add error `30032` ([#521](https://github.com/discordjs/discord-api-types/issues/521)) ([f2c3451](https://github.com/discordjs/discord-api-types/commit/f2c3451c2a8bc91bcca65372d2944a07a3c34a9a))
- **RESTPutAPIApplicationGuildCommandsJSONBody:** add missing `id` ([#522](https://github.com/discordjs/discord-api-types/issues/522)) ([4af2ea9](https://github.com/discordjs/discord-api-types/commit/4af2ea91415a5662171d342379c4bd33bfa5a6d5))
## [0.36.1](https://github.com/discordjs/discord-api-types/compare/0.36.0...0.36.1) (2022-07-04)
### Features
- **APIApplicationCommandStringOption:** add `min_length` and `max_length` ([#513](https://github.com/discordjs/discord-api-types/issues/513)) ([2cade98](https://github.com/discordjs/discord-api-types/commit/2cade98ed0a0a074254fbc1580fc56d0e0b3dc9c))
# [0.36.0](https://github.com/discordjs/discord-api-types/compare/0.35.0...0.36.0) (2022-06-30)
### Features
- **APIBaseInteraction:** add `app_permissions` ([#509](https://github.com/discordjs/discord-api-types/issues/509)) ([0c65d40](https://github.com/discordjs/discord-api-types/commit/0c65d40af00499233830ce272a2a274bcd5b9e8c))
- **MessageType:** update names ([#498](https://github.com/discordjs/discord-api-types/issues/498)) ([12072b7](https://github.com/discordjs/discord-api-types/commit/12072b70a0c70e1e1f9de920789e26829268de12))
- **RESTJSONErrorCodes:** add error 20024 ([#480](https://github.com/discordjs/discord-api-types/issues/480)) ([34908aa](https://github.com/discordjs/discord-api-types/commit/34908aa4ceeca4b58276cc207f5bdb77cef04296))
### BREAKING CHANGES
- **MessageType:** The following message types have been renamed:
* `GuildMemberJoin` -> `UserJoin`
* `UserPremiumGuildSubscription` -> `GuildBoost`
* `UserPremiumGuildSubscriptionTier1` -> `GuildBoostTier1`
* `UserPremiumGuildSubscriptionTier2` -> `GuildBoostTier2`
* `UserPremiumGuildSubscriptionTier3` -> `GuildBoostTier3`
# [0.35.0](https://github.com/discordjs/discord-api-types/compare/0.34.0...0.35.0) (2022-06-23)
### Code Refactoring
- **GatewayIdentifyProperties:** remove `$` prefix from keys ([#493](https://github.com/discordjs/discord-api-types/issues/493)) ([3b10c60](https://github.com/discordjs/discord-api-types/commit/3b10c60faa5943501ab1f7cfa0d5f3c5317cdbbd))
### Features
- **APIEmbedVideo:** add missing `proxy_url` property ([#496](https://github.com/discordjs/discord-api-types/issues/496)) ([56d491f](https://github.com/discordjs/discord-api-types/commit/56d491fa6808d9a8762bff606ca8feb5e11f13a4))
- **REST:** add `CDNRoutes` ([#502](https://github.com/discordjs/discord-api-types/issues/502)) ([0609886](https://github.com/discordjs/discord-api-types/commit/06098869d552139fadcc204b5ce4e1a7e5352b68))
- **UserFlags:** add `Quarantined` flag ([#495](https://github.com/discordjs/discord-api-types/issues/495)) ([fc3aa1c](https://github.com/discordjs/discord-api-types/commit/fc3aa1c9110e4730c6b8ba3e36815ecd2da66c68))
### BREAKING CHANGES
- **GatewayIdentifyProperties:** The fields for identify no longer use the `$` prefix for the values.
# [0.34.0](https://github.com/discordjs/discord-api-types/compare/0.33.5...0.34.0) (2022-06-13)
### Code Refactoring
- separate `MESSAGE_CREATE` fields from `APIMessage` object ([#434](https://github.com/discordjs/discord-api-types/issues/434)) ([0bb2204](https://github.com/discordjs/discord-api-types/commit/0bb2204b5ddd32b791641a33d52669bc739bc208))
### Features
- add guild mfa endpoint and error `50017` ([#476](https://github.com/discordjs/discord-api-types/issues/476)) ([292c6b5](https://github.com/discordjs/discord-api-types/commit/292c6b58ee9384db2ce06addb80d2ea2bcd32de2))
- **RESTJSONErrorCodes:** add 220003 error ([#466](https://github.com/discordjs/discord-api-types/issues/466)) ([20653b3](https://github.com/discordjs/discord-api-types/commit/20653b34819f6adf8116bef2a1e5edc3233c4117))
### BREAKING CHANGES
- Certain fields that come only through the gateway are now correctly typed as such
## [0.33.5](https://github.com/discordjs/discord-api-types/compare/0.33.4...0.33.5) (2022-06-07)
### Bug Fixes
- **GatewayGuildCreateDispatch:** add missing `GatewayGuildCreateDispatch` ([#477](https://github.com/discordjs/discord-api-types/issues/477)) ([d268e0b](https://github.com/discordjs/discord-api-types/commit/d268e0bff7429e1cde43174fdf6d2342569860d5))
- **RESTPostAPIWebhookWithTokenJSONBody:** `thread_name` should be optional ([#479](https://github.com/discordjs/discord-api-types/issues/479)) ([eff8892](https://github.com/discordjs/discord-api-types/commit/eff8892b03656cfc2b709c6c30edb98e38bf2a1e))
### Features
- **RESTJSONErrorCodes:** add error `30052` ([#469](https://github.com/discordjs/discord-api-types/issues/469)) ([d854317](https://github.com/discordjs/discord-api-types/commit/d8543177cd978a19daa32fbb183892b6f8c24772))
## [0.33.4](https://github.com/discordjs/discord-api-types/compare/0.33.3...0.33.4) (2022-06-06)
### Features
- **RESTPostAPIWebhookWithTokenJSONBody:** add `thread_name` ([#463](https://github.com/discordjs/discord-api-types/issues/463)) ([8e5f07e](https://github.com/discordjs/discord-api-types/commit/8e5f07e2eebc14e5777dbfb932ef54f252165524))
## [0.33.3](https://github.com/discordjs/discord-api-types/compare/0.33.2...0.33.3) (2022-06-04)
### Bug Fixes
- **AddUndefinedToPossiblyUndefinedProperties:** recurse down objects ([#471](https://github.com/discordjs/discord-api-types/issues/471)) ([43c372d](https://github.com/discordjs/discord-api-types/commit/43c372d81722e48b105d5121a2cfdf614f1e7704))
## [0.33.2](https://github.com/discordjs/discord-api-types/compare/0.33.1...0.33.2) (2022-06-01)
### Bug Fixes

View File

@@ -1,6 +1,6 @@
# Discord API Types
[![discord-api-types](./website/static/svgs/logo_long_blurple.svg)](https://github.com/discordjs/discord-api-types)
[![discord-api-types](https://raw.githubusercontent.com/discordjs/discord-api-types/main/website/static/svgs/logo_long_blurple.svg)](https://github.com/discordjs/discord-api-types)
[![GitHub](https://img.shields.io/github/license/discordjs/discord-api-types)](https://github.com/discordjs/discord-api-types/blob/main/LICENSE.md)
[![npm](https://img.shields.io/npm/v/discord-api-types?color=crimson&logo=npm)](https://www.npmjs.com/package/discord-api-types)
@@ -8,6 +8,7 @@
[![Patreon Donate](https://img.shields.io/badge/patreon-donate-brightgreen.svg?label=Donate%20with%20Patreon&logo=patreon&colorB=F96854&link=https://www.patreon.com/vladfrangu)](https://www.patreon.com/vladfrangu)
[![Ko-fi Donate](https://img.shields.io/badge/kofi-donate-brightgreen.svg?label=Donate%20with%20Ko-fi&logo=ko-fi&colorB=F16061&link=https://ko-fi.com/wolfgalvlad&logoColor=FFFFFF)](https://ko-fi.com/wolfgalvlad)
[![GitHub Sponsors](https://img.shields.io/badge/patreon-donate-brightgreen.svg?label=Sponsor%20through%20GitHub&logo=github&colorB=F96854&link=https://github.com/sponsors/vladfrangu)](https://github.com/sponsors/vladfrangu)
[![Powered by Vercel](https://raw.githubusercontent.com/discordjs/discord-api-types/main/website/static/powered-by-vercel.svg)](https://vercel.com?utm_source=discordjs&utm_campaign=oss)
Simple type definitions for the [Discord API](https://discord.com/developers/docs/intro).

View File

@@ -1,3 +1,146 @@
## [0.37.5](https://github.com/discordjs/discord-api-types/compare/0.37.4...0.37.5) (2022-08-25)
### Features
- **FormattingPatterns:** add `ApplicationCommand` ([#525](https://github.com/discordjs/discord-api-types/issues/525)) ([0098889](https://github.com/discordjs/discord-api-types/commit/00988894995f7ac5e8ddc34125704a230329137c))
## [0.37.4](https://github.com/discordjs/discord-api-types/compare/0.37.3...0.37.4) (2022-08-22)
### Features
- add common JSON error types ([#568](https://github.com/discordjs/discord-api-types/issues/568)) ([956f289](https://github.com/discordjs/discord-api-types/commit/956f289e885763a620cb67a36e7e42683b5c08bf))
- **ApplicationCommand:** export base chat input types ([#569](https://github.com/discordjs/discord-api-types/issues/569)) ([248484e](https://github.com/discordjs/discord-api-types/commit/248484e55613e2da3f1d659395e1f4c010cb51b5))
## [0.37.3](https://github.com/discordjs/discord-api-types/compare/0.37.2...0.37.3) (2022-08-18)
### Features
- **RESTJSONErrorCodes:** add 240000 ([#565](https://github.com/discordjs/discord-api-types/issues/565)) ([5bb50ae](https://github.com/discordjs/discord-api-types/commit/5bb50ae7ea6859845c9d9996f02ac42c61413df0))
## [0.37.2](https://github.com/discordjs/discord-api-types/compare/0.37.1...0.37.2) (2022-08-11)
### Bug Fixes
- **GatewayGuildMembersChunkDispatchData:** make chunk pagination properties mandatory ([#558](https://github.com/discordjs/discord-api-types/issues/558)) ([0e03e39](https://github.com/discordjs/discord-api-types/commit/0e03e39aa2bf8f1b9a58113a3242c4722e64922b))
- **GatewayRequestGuildMembersData:** limit being required with user_ids ([#559](https://github.com/discordjs/discord-api-types/issues/559)) ([dc3d5df](https://github.com/discordjs/discord-api-types/commit/dc3d5df0a2931eff63991987166634661d5bd1d8))
- **RESTGetAPIChannelUsersThreadsArchivedResult:** add `has_more` missing field ([#543](https://github.com/discordjs/discord-api-types/issues/543)) ([796f6d8](https://github.com/discordjs/discord-api-types/commit/796f6d8a3b2f55d2a120137801e0450ddf30576e))
### Features
- add search that might or might not work ([f8a9c8b](https://github.com/discordjs/discord-api-types/commit/f8a9c8b5c6bdd73bcbf9dd6fff66fafac2594ba4))
- **APIVoiceChannel:** support text in voice, properties `last_message_id` and `rate_limit_per_user` ([#544](https://github.com/discordjs/discord-api-types/issues/544)) ([4488d8f](https://github.com/discordjs/discord-api-types/commit/4488d8fd2611a6547fc6149ba1cec5682340a119))
- **GatewayReadyDispatchData:** add `resume_gateway_url` ([#552](https://github.com/discordjs/discord-api-types/issues/552)) ([9a50367](https://github.com/discordjs/discord-api-types/commit/9a50367dad3a06fbca6e8d1fdd98fbf144595d4e))
## [0.37.1](https://github.com/discordjs/discord-api-types/compare/0.37.0...0.37.1) (2022-08-04)
# [0.37.0](https://github.com/discordjs/discord-api-types/compare/0.36.3...0.37.0) (2022-07-28)
### Code Refactoring
- **RESTJSONErrorCodes:** use `MaximumThreadParticipantsReached` instead in error code 30033 ([#540](https://github.com/discordjs/discord-api-types/issues/540)) ([cecf17b](https://github.com/discordjs/discord-api-types/commit/cecf17b4158fbebb3ee508518a9e9a7b1297356f))
### BREAKING CHANGES
- **RESTJSONErrorCodes:** `MaximumThreadParticipants` was renamed to `MaximumThreadParticipantsReached` for consistency with the rest of the codes
## [0.36.3](https://github.com/discordjs/discord-api-types/compare/0.36.2...0.36.3) (2022-07-21)
### Features
- **APIConnection:** add `ConnectionService` to `type` ([#491](https://github.com/discordjs/discord-api-types/issues/491)) ([4577ac2](https://github.com/discordjs/discord-api-types/commit/4577ac2609f4a861505bc41f4293f482db251cdc))
- **APIThreadChannel:** add fields about new message counter capability ([#532](https://github.com/discordjs/discord-api-types/issues/532)) ([2b53b20](https://github.com/discordjs/discord-api-types/commit/2b53b20b84b7434b9a35b715d8ebdeb040835dca))
- **GatewayGuildCreateDispatchData:** add missing `unavailable` ([#504](https://github.com/discordjs/discord-api-types/issues/504)) ([59e2477](https://github.com/discordjs/discord-api-types/commit/59e247729fcd27be839c88516939ec22843781ce))
- **RESTJSONErrorCodes:** add `ApplicationNotYetAvailable` ([#507](https://github.com/discordjs/discord-api-types/issues/507)) ([09a1141](https://github.com/discordjs/discord-api-types/commit/09a114133c7599cc14d4a0eb61425162091c45ee))
- **RESTJSONErrorCodes:** add error `30034` ([#530](https://github.com/discordjs/discord-api-types/issues/530)) ([0a2e778](https://github.com/discordjs/discord-api-types/commit/0a2e7787c672ffb4af83e055df632aae36811445))
- **RESTJSONErrorCodes:** add error `50132` ([#505](https://github.com/discordjs/discord-api-types/issues/505)) ([907d88a](https://github.com/discordjs/discord-api-types/commit/907d88ada93221802a4aefe7dc0ca3b2b73f94f0))
- **RESTJSONErrorCodes:** add error `50146` ([#527](https://github.com/discordjs/discord-api-types/issues/527)) ([e78de0c](https://github.com/discordjs/discord-api-types/commit/e78de0c83ba93145a2302ddea2e55b5050291c52))
- **RESTJSONErrorCodes:** add new errors ([#506](https://github.com/discordjs/discord-api-types/issues/506)) ([65b672e](https://github.com/discordjs/discord-api-types/commit/65b672e2afd2135333272d4e7b771eba237a21b6))
## [0.36.2](https://github.com/discordjs/discord-api-types/compare/0.36.1...0.36.2) (2022-07-14)
### Features
- **RESTJSONErrorCodes:** add error `30032` ([#521](https://github.com/discordjs/discord-api-types/issues/521)) ([f2c3451](https://github.com/discordjs/discord-api-types/commit/f2c3451c2a8bc91bcca65372d2944a07a3c34a9a))
- **RESTPutAPIApplicationGuildCommandsJSONBody:** add missing `id` ([#522](https://github.com/discordjs/discord-api-types/issues/522)) ([4af2ea9](https://github.com/discordjs/discord-api-types/commit/4af2ea91415a5662171d342379c4bd33bfa5a6d5))
## [0.36.1](https://github.com/discordjs/discord-api-types/compare/0.36.0...0.36.1) (2022-07-04)
### Features
- **APIApplicationCommandStringOption:** add `min_length` and `max_length` ([#513](https://github.com/discordjs/discord-api-types/issues/513)) ([2cade98](https://github.com/discordjs/discord-api-types/commit/2cade98ed0a0a074254fbc1580fc56d0e0b3dc9c))
# [0.36.0](https://github.com/discordjs/discord-api-types/compare/0.35.0...0.36.0) (2022-06-30)
### Features
- **APIBaseInteraction:** add `app_permissions` ([#509](https://github.com/discordjs/discord-api-types/issues/509)) ([0c65d40](https://github.com/discordjs/discord-api-types/commit/0c65d40af00499233830ce272a2a274bcd5b9e8c))
- **MessageType:** update names ([#498](https://github.com/discordjs/discord-api-types/issues/498)) ([12072b7](https://github.com/discordjs/discord-api-types/commit/12072b70a0c70e1e1f9de920789e26829268de12))
- **RESTJSONErrorCodes:** add error 20024 ([#480](https://github.com/discordjs/discord-api-types/issues/480)) ([34908aa](https://github.com/discordjs/discord-api-types/commit/34908aa4ceeca4b58276cc207f5bdb77cef04296))
### BREAKING CHANGES
- **MessageType:** The following message types have been renamed:
* `GuildMemberJoin` -> `UserJoin`
* `UserPremiumGuildSubscription` -> `GuildBoost`
* `UserPremiumGuildSubscriptionTier1` -> `GuildBoostTier1`
* `UserPremiumGuildSubscriptionTier2` -> `GuildBoostTier2`
* `UserPremiumGuildSubscriptionTier3` -> `GuildBoostTier3`
# [0.35.0](https://github.com/discordjs/discord-api-types/compare/0.34.0...0.35.0) (2022-06-23)
### Code Refactoring
- **GatewayIdentifyProperties:** remove `$` prefix from keys ([#493](https://github.com/discordjs/discord-api-types/issues/493)) ([3b10c60](https://github.com/discordjs/discord-api-types/commit/3b10c60faa5943501ab1f7cfa0d5f3c5317cdbbd))
### Features
- **APIEmbedVideo:** add missing `proxy_url` property ([#496](https://github.com/discordjs/discord-api-types/issues/496)) ([56d491f](https://github.com/discordjs/discord-api-types/commit/56d491fa6808d9a8762bff606ca8feb5e11f13a4))
- **REST:** add `CDNRoutes` ([#502](https://github.com/discordjs/discord-api-types/issues/502)) ([0609886](https://github.com/discordjs/discord-api-types/commit/06098869d552139fadcc204b5ce4e1a7e5352b68))
- **UserFlags:** add `Quarantined` flag ([#495](https://github.com/discordjs/discord-api-types/issues/495)) ([fc3aa1c](https://github.com/discordjs/discord-api-types/commit/fc3aa1c9110e4730c6b8ba3e36815ecd2da66c68))
### BREAKING CHANGES
- **GatewayIdentifyProperties:** The fields for identify no longer use the `$` prefix for the values.
# [0.34.0](https://github.com/discordjs/discord-api-types/compare/0.33.5...0.34.0) (2022-06-13)
### Code Refactoring
- separate `MESSAGE_CREATE` fields from `APIMessage` object ([#434](https://github.com/discordjs/discord-api-types/issues/434)) ([0bb2204](https://github.com/discordjs/discord-api-types/commit/0bb2204b5ddd32b791641a33d52669bc739bc208))
### Features
- add guild mfa endpoint and error `50017` ([#476](https://github.com/discordjs/discord-api-types/issues/476)) ([292c6b5](https://github.com/discordjs/discord-api-types/commit/292c6b58ee9384db2ce06addb80d2ea2bcd32de2))
- **RESTJSONErrorCodes:** add 220003 error ([#466](https://github.com/discordjs/discord-api-types/issues/466)) ([20653b3](https://github.com/discordjs/discord-api-types/commit/20653b34819f6adf8116bef2a1e5edc3233c4117))
### BREAKING CHANGES
- Certain fields that come only through the gateway are now correctly typed as such
## [0.33.5](https://github.com/discordjs/discord-api-types/compare/0.33.4...0.33.5) (2022-06-07)
### Bug Fixes
- **GatewayGuildCreateDispatch:** add missing `GatewayGuildCreateDispatch` ([#477](https://github.com/discordjs/discord-api-types/issues/477)) ([d268e0b](https://github.com/discordjs/discord-api-types/commit/d268e0bff7429e1cde43174fdf6d2342569860d5))
- **RESTPostAPIWebhookWithTokenJSONBody:** `thread_name` should be optional ([#479](https://github.com/discordjs/discord-api-types/issues/479)) ([eff8892](https://github.com/discordjs/discord-api-types/commit/eff8892b03656cfc2b709c6c30edb98e38bf2a1e))
### Features
- **RESTJSONErrorCodes:** add error `30052` ([#469](https://github.com/discordjs/discord-api-types/issues/469)) ([d854317](https://github.com/discordjs/discord-api-types/commit/d8543177cd978a19daa32fbb183892b6f8c24772))
## [0.33.4](https://github.com/discordjs/discord-api-types/compare/0.33.3...0.33.4) (2022-06-06)
### Features
- **RESTPostAPIWebhookWithTokenJSONBody:** add `thread_name` ([#463](https://github.com/discordjs/discord-api-types/issues/463)) ([8e5f07e](https://github.com/discordjs/discord-api-types/commit/8e5f07e2eebc14e5777dbfb932ef54f252165524))
## [0.33.3](https://github.com/discordjs/discord-api-types/compare/0.33.2...0.33.3) (2022-06-04)
### Bug Fixes
- **AddUndefinedToPossiblyUndefinedProperties:** recurse down objects ([#471](https://github.com/discordjs/discord-api-types/issues/471)) ([43c372d](https://github.com/discordjs/discord-api-types/commit/43c372d81722e48b105d5121a2cfdf614f1e7704))
## [0.33.2](https://github.com/discordjs/discord-api-types/compare/0.33.1...0.33.2) (2022-06-01)
### Bug Fixes

View File

@@ -1,6 +1,6 @@
# Discord API Types
[![discord-api-types](./website/static/svgs/logo_long_blurple.svg)](https://github.com/discordjs/discord-api-types)
[![discord-api-types](https://raw.githubusercontent.com/discordjs/discord-api-types/main/website/static/svgs/logo_long_blurple.svg)](https://github.com/discordjs/discord-api-types)
[![GitHub](https://img.shields.io/github/license/discordjs/discord-api-types)](https://github.com/discordjs/discord-api-types/blob/main/LICENSE.md)
[![npm](https://img.shields.io/npm/v/discord-api-types?color=crimson&logo=npm)](https://www.npmjs.com/package/discord-api-types)
@@ -8,6 +8,7 @@
[![Patreon Donate](https://img.shields.io/badge/patreon-donate-brightgreen.svg?label=Donate%20with%20Patreon&logo=patreon&colorB=F96854&link=https://www.patreon.com/vladfrangu)](https://www.patreon.com/vladfrangu)
[![Ko-fi Donate](https://img.shields.io/badge/kofi-donate-brightgreen.svg?label=Donate%20with%20Ko-fi&logo=ko-fi&colorB=F16061&link=https://ko-fi.com/wolfgalvlad&logoColor=FFFFFF)](https://ko-fi.com/wolfgalvlad)
[![GitHub Sponsors](https://img.shields.io/badge/patreon-donate-brightgreen.svg?label=Sponsor%20through%20GitHub&logo=github&colorB=F96854&link=https://github.com/sponsors/vladfrangu)](https://github.com/sponsors/vladfrangu)
[![Powered by Vercel](https://raw.githubusercontent.com/discordjs/discord-api-types/main/website/static/powered-by-vercel.svg)](https://vercel.com?utm_source=discordjs&utm_campaign=oss)
Simple type definitions for the [Discord API](https://discord.com/developers/docs/intro).

View File

@@ -274,6 +274,7 @@ export type GatewayDispatchPayload =
| GatewayChannelModifyDispatch
| GatewayChannelPinsUpdateDispatch
| GatewayGuildBanModifyDispatch
| GatewayGuildCreateDispatch
| GatewayGuildDeleteDispatch
| GatewayGuildEmojisUpdateDispatch
| GatewayGuildIntegrationsUpdateDispatch
@@ -408,6 +409,10 @@ export interface GatewayReadyDispatchData {
* Used for resuming connections
*/
session_id: string;
/**
* Gateway url for resuming connections
*/
resume_gateway_url: string;
/**
* The shard information associated with this session, if sent when identifying
*
@@ -532,6 +537,10 @@ export interface GatewayGuildCreateDispatchData extends APIGuild {
* **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event**
*/
large: boolean;
/**
* `true` if this guild is unavailable due to an outage
*/
unavailable?: boolean;
/**
* Total number of members in this guild
*
@@ -816,11 +825,11 @@ export interface GatewayGuildMembersChunkDispatchData {
/**
* The chunk index in the expected chunks for this response (`0 <= chunk_index < chunk_count`)
*/
chunk_index?: number;
chunk_index: number;
/**
* The total number of expected chunks for this response
*/
chunk_count?: number;
chunk_count: number;
/**
* If passing an invalid id to `REQUEST_GUILD_MEMBERS`, it will be returned here
*/
@@ -1124,7 +1133,7 @@ export type GatewayMessageCreateDispatch = DataPayload<
/**
* https://discord.com/developers/docs/topics/gateway#message-create
*/
export type GatewayMessageCreateDispatchData = APIMessage;
export type GatewayMessageCreateDispatchData = Omit<APIMessage, 'mentions'> & GatewayMessageEventExtraFields;
/**
* https://discord.com/developers/docs/topics/gateway#message-update
@@ -1137,10 +1146,43 @@ export type GatewayMessageUpdateDispatch = DataPayload<
/**
* https://discord.com/developers/docs/topics/gateway#message-update
*/
export type GatewayMessageUpdateDispatchData = {
id: Snowflake;
channel_id: Snowflake;
} & Partial<APIMessage>;
export type GatewayMessageUpdateDispatchData = Omit<Partial<APIMessage>, 'mentions'> &
GatewayMessageEventExtraFields & {
/**
* ID of the message
*/
id: Snowflake;
/**
* ID of the channel the message was sent in
*/
channel_id: Snowflake;
};
export interface GatewayMessageEventExtraFields {
/**
* ID of the guild the message was sent in
*/
guild_id?: Snowflake;
/**
* Member properties for this message's author
*
* The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
member?: APIGuildMember;
/**
* Users specifically mentioned in the message
*
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/user#user-object
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
}
/**
* https://discord.com/developers/docs/topics/gateway#message-delete
@@ -1568,15 +1610,15 @@ export interface GatewayIdentifyProperties {
/**
* Your operating system
*/
$os: string;
os: string;
/**
* Your library name
*/
$browser: string;
browser: string;
/**
* Your library name
*/
$device: string;
device: string;
}
/**
@@ -1613,31 +1655,15 @@ export interface GatewayRequestGuildMembers {
d: GatewayRequestGuildMembersData;
}
/**
* https://discord.com/developers/docs/topics/gateway#request-guild-members
*/
export interface GatewayRequestGuildMembersData {
export interface GatewayRequestGuildMembersDataBase {
/**
* ID of the guild to get members for
*/
guild_id: Snowflake;
/**
* String that username starts with, or an empty string to return all members
*/
query?: string;
/**
* Maximum number of members to send matching the `query`;
* a limit of `0` can be used with an empty string `query` to return all members
*/
limit: number;
/**
* Used to specify if we want the presences of the matched members
*/
presences?: boolean;
/**
* Used to specify which users you wish to fetch
*/
user_ids?: Snowflake | Snowflake[];
/**
* Nonce to identify the Guild Members Chunk response
*
@@ -1648,6 +1674,32 @@ export interface GatewayRequestGuildMembersData {
nonce?: string;
}
export interface GatewayRequestGuildMembersDataWithUserIds extends GatewayRequestGuildMembersDataBase {
/**
* Used to specify which users you wish to fetch
*/
user_ids: Snowflake | Snowflake[];
}
export interface GatewayRequestGuildMembersDataWithQuery extends GatewayRequestGuildMembersDataBase {
/**
* String that username starts with, or an empty string to return all members
*/
query: string;
/**
* Maximum number of members to send matching the `query`;
* a limit of `0` can be used with an empty string `query` to return all members
*/
limit: number;
}
/**
* https://discord.com/developers/docs/topics/gateway#request-guild-members
*/
export type GatewayRequestGuildMembersData =
| GatewayRequestGuildMembersDataWithUserIds
| GatewayRequestGuildMembersDataWithQuery;
/**
* https://discord.com/developers/docs/topics/gateway#update-voice-state
*/

View File

@@ -273,6 +273,7 @@ export type GatewayDispatchPayload =
| GatewayChannelModifyDispatch
| GatewayChannelPinsUpdateDispatch
| GatewayGuildBanModifyDispatch
| GatewayGuildCreateDispatch
| GatewayGuildDeleteDispatch
| GatewayGuildEmojisUpdateDispatch
| GatewayGuildIntegrationsUpdateDispatch
@@ -407,6 +408,10 @@ export interface GatewayReadyDispatchData {
* Used for resuming connections
*/
session_id: string;
/**
* Gateway url for resuming connections
*/
resume_gateway_url: string;
/**
* The shard information associated with this session, if sent when identifying
*
@@ -531,6 +536,10 @@ export interface GatewayGuildCreateDispatchData extends APIGuild {
* **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event**
*/
large: boolean;
/**
* `true` if this guild is unavailable due to an outage
*/
unavailable?: boolean;
/**
* Total number of members in this guild
*
@@ -815,11 +824,11 @@ export interface GatewayGuildMembersChunkDispatchData {
/**
* The chunk index in the expected chunks for this response (`0 <= chunk_index < chunk_count`)
*/
chunk_index?: number;
chunk_index: number;
/**
* The total number of expected chunks for this response
*/
chunk_count?: number;
chunk_count: number;
/**
* If passing an invalid id to `REQUEST_GUILD_MEMBERS`, it will be returned here
*/
@@ -1123,7 +1132,7 @@ export type GatewayMessageCreateDispatch = DataPayload<
/**
* https://discord.com/developers/docs/topics/gateway#message-create
*/
export type GatewayMessageCreateDispatchData = APIMessage;
export type GatewayMessageCreateDispatchData = Omit<APIMessage, 'mentions'> & GatewayMessageEventExtraFields;
/**
* https://discord.com/developers/docs/topics/gateway#message-update
@@ -1136,10 +1145,43 @@ export type GatewayMessageUpdateDispatch = DataPayload<
/**
* https://discord.com/developers/docs/topics/gateway#message-update
*/
export type GatewayMessageUpdateDispatchData = {
id: Snowflake;
channel_id: Snowflake;
} & Partial<APIMessage>;
export type GatewayMessageUpdateDispatchData = Omit<Partial<APIMessage>, 'mentions'> &
GatewayMessageEventExtraFields & {
/**
* ID of the message
*/
id: Snowflake;
/**
* ID of the channel the message was sent in
*/
channel_id: Snowflake;
};
export interface GatewayMessageEventExtraFields {
/**
* ID of the guild the message was sent in
*/
guild_id?: Snowflake;
/**
* Member properties for this message's author
*
* The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
member?: APIGuildMember;
/**
* Users specifically mentioned in the message
*
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/user#user-object
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
}
/**
* https://discord.com/developers/docs/topics/gateway#message-delete
@@ -1567,15 +1609,15 @@ export interface GatewayIdentifyProperties {
/**
* Your operating system
*/
$os: string;
os: string;
/**
* Your library name
*/
$browser: string;
browser: string;
/**
* Your library name
*/
$device: string;
device: string;
}
/**
@@ -1612,31 +1654,15 @@ export interface GatewayRequestGuildMembers {
d: GatewayRequestGuildMembersData;
}
/**
* https://discord.com/developers/docs/topics/gateway#request-guild-members
*/
export interface GatewayRequestGuildMembersData {
export interface GatewayRequestGuildMembersDataBase {
/**
* ID of the guild to get members for
*/
guild_id: Snowflake;
/**
* String that username starts with, or an empty string to return all members
*/
query?: string;
/**
* Maximum number of members to send matching the `query`;
* a limit of `0` can be used with an empty string `query` to return all members
*/
limit: number;
/**
* Used to specify if we want the presences of the matched members
*/
presences?: boolean;
/**
* Used to specify which users you wish to fetch
*/
user_ids?: Snowflake | Snowflake[];
/**
* Nonce to identify the Guild Members Chunk response
*
@@ -1647,6 +1673,32 @@ export interface GatewayRequestGuildMembersData {
nonce?: string;
}
export interface GatewayRequestGuildMembersDataWithUserIds extends GatewayRequestGuildMembersDataBase {
/**
* Used to specify which users you wish to fetch
*/
user_ids: Snowflake | Snowflake[];
}
export interface GatewayRequestGuildMembersDataWithQuery extends GatewayRequestGuildMembersDataBase {
/**
* String that username starts with, or an empty string to return all members
*/
query: string;
/**
* Maximum number of members to send matching the `query`;
* a limit of `0` can be used with an empty string `query` to return all members
*/
limit: number;
}
/**
* https://discord.com/developers/docs/topics/gateway#request-guild-members
*/
export type GatewayRequestGuildMembersData =
| GatewayRequestGuildMembersDataWithUserIds
| GatewayRequestGuildMembersDataWithQuery;
/**
* https://discord.com/developers/docs/topics/gateway#update-voice-state
*/

View File

@@ -45,6 +45,13 @@ export const FormattingPatterns = {
* The `id` group property is present on the `exec` result of this expression
*/
Role: /<@&(?<id>\d{17,20})>/,
/**
* Regular expression for matching a application command mention
*
* The `fullName` (possibly including `name`, `subcommandOrGroup` and `subcommand`) and `id` group properties are present on the `exec` result of this expression
*/
SlashCommand:
/<\/(?<fullName>(?<name>[\w-]{1,32})(?: (?<subcommandOrGroup>[\w-]{1,32}))?(?: (?<subcommand>[\w-]{1,32}))?):(?<id>\d{17,20})>/,
/**
* Regular expression for matching a custom emoji, either static or animated
*

View File

@@ -58,3 +58,23 @@ export const PermissionFlagsBits = {
Object.freeze(PermissionFlagsBits);
export type LocalizationMap = Partial<Record<LocaleString, string | null>>;
/**
* https://discord.com/developers/docs/topics/opcodes-and-status-codes#json
*/
export interface RESTError {
code: number;
message: string;
errors?: RESTErrorData;
}
export interface RESTErrorFieldInformation {
code: string;
message: string;
}
export interface RESTErrorGroupWrapper {
_errors: RESTErrorData[];
}
export type RESTErrorData = RESTErrorGroupWrapper | RESTErrorFieldInformation | { [k: string]: RESTErrorData } | string;

View File

@@ -12,7 +12,7 @@ interface APIApplicationCommandIntegerOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -12,7 +12,7 @@ interface APIApplicationCommandNumberOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -5,8 +5,20 @@ import type {
} from './base.ts';
import type { APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from './shared.ts';
interface APIApplicationCommandStringOptionBase
extends APIApplicationCommandOptionBase<ApplicationCommandOptionType.String> {
/**
* For option type `STRING`, the minimum allowed length (minimum of `0`, maximum of `6000`).
*/
min_length?: number;
/**
* For option type `STRING`, the maximum allowed length (minimum of `1`, maximum of `6000`).
*/
max_length?: number;
}
export type APIApplicationCommandStringOption = APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper<
APIApplicationCommandOptionBase<ApplicationCommandOptionType.String>,
APIApplicationCommandStringOptionBase,
APIApplicationCommandOptionChoice<string>
>;

View File

@@ -54,6 +54,7 @@ import type {
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
export * from './_chatInput/attachment.ts';
export * from './_chatInput/base.ts';
export * from './_chatInput/boolean.ts';
export * from './_chatInput/channel.ts';
export * from './_chatInput/integer.ts';
@@ -108,7 +109,7 @@ export type APIApplicationCommandInteractionDataBasicOption =
| APIApplicationCommandInteractionDataAttachmentOption;
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIChatInputApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {

View File

@@ -10,7 +10,7 @@ import type {
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIUserApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.User> {
@@ -27,7 +27,7 @@ export interface APIUserApplicationCommandInteractionDataResolved {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIMessageApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.Message> {
@@ -43,7 +43,7 @@ export interface APIMessageApplicationCommandInteractionDataResolved {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export type APIContextMenuInteractionData =
| APIUserApplicationCommandInteractionData

View File

@@ -101,7 +101,7 @@ export enum ApplicationCommandType {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export type APIApplicationCommandInteractionData =
| APIChatInputApplicationCommandInteractionData

View File

@@ -31,7 +31,7 @@ export interface APIMessageInteraction {
*/
type: InteractionType;
/**
* The name of the ApplicationCommand
* The name of the application command, including subcommands and subcommand groups
*/
name: string;
/**
@@ -104,6 +104,10 @@ export interface APIBaseInteraction<Type extends InteractionType, Data> {
* For components, the message they were attached to
*/
message?: APIMessage;
/**
* Bitwise set of permissions the app or bot has within the channel the interaction was sent from
*/
app_permissions?: Permissions;
/**
* The selected language of the invoking user
*/

View File

@@ -62,7 +62,7 @@ export interface APIApplication {
/**
* The hexadecimal encoded key for verification in interactions and the GameSDK's GetTicket function
*
* See https://discord.com/developers/docs/game-sdk/applications#get-ticket
* See https://discord.com/developers/docs/game-sdk/applications#getticket
*/
verify_key: string;
/**

View File

@@ -4,7 +4,6 @@
import type { APIApplication } from './application.ts';
import type { APIPartialEmoji } from './emoji.ts';
import type { APIGuildMember } from './guild.ts';
import type { APIMessageInteraction } from './interactions.ts';
import type { APIRole } from './permissions.ts';
import type { APISticker, APIStickerItem } from './sticker.ts';
@@ -40,7 +39,6 @@ export interface APIChannelBase<T extends ChannelType> extends APIPartialChannel
flags?: ChannelFlags;
}
// TODO: update when text in voice is released
export type TextChannelType =
| ChannelType.DM
| ChannelType.GroupDM
@@ -49,7 +47,8 @@ export type TextChannelType =
| ChannelType.GuildPrivateThread
| ChannelType.GuildNewsThread
| ChannelType.GuildText
| ChannelType.GuildForum;
| ChannelType.GuildForum
| ChannelType.GuildVoice;
export type GuildChannelType = Exclude<
TextChannelType | ChannelType.GuildVoice | ChannelType.GuildStageVoice | ChannelType.GuildNews,
@@ -61,6 +60,16 @@ export interface APITextBasedChannel<T extends ChannelType> extends APIChannelBa
* The id of the last message sent in this channel (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
/**
* 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_CHANNELS`, are unaffected
*
* `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.
*
* For thread channels, `rate_limit_per_user` is only returned if the field is set to a non-zero and non-null value.
* The absence of this field in API calls and Gateway events should indicate that slowmode has been reset to the default value.
*/
rate_limit_per_user?: number;
}
export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T> {
@@ -112,23 +121,11 @@ export interface APIGuildTextChannel<T extends GuildTextChannelType>
last_pin_timestamp?: string | null;
}
export interface APITextChannel extends APIGuildTextChannel<ChannelType.GuildText> {
/**
* 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_CHANNELS`, are unaffected
*
* `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.
*
* For thread channels, `rate_limit_per_user` is only returned if the field is set to a non-zero and non-null value.
* The absence of this field in API calls and Gateway events should indicate that slowmode has been reset to the default value.
*/
rate_limit_per_user?: number;
}
export type APITextChannel = APIGuildTextChannel<ChannelType.GuildText>;
export type APINewsChannel = APIGuildTextChannel<ChannelType.GuildNews>;
export type APIGuildCategoryChannel = APIGuildChannel<ChannelType.GuildCategory>;
export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageVoice | ChannelType.GuildVoice> {
export interface APIVoiceChannelBase<T extends ChannelType> extends APIGuildChannel<T> {
/**
* The bitrate (in bits) of the voice channel
*/
@@ -143,6 +140,11 @@ export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageV
* See https://discord.com/developers/docs/resources/voice#voice-region-object
*/
rtc_region?: string | null;
}
export interface APIGuildVoiceChannel
extends APIVoiceChannelBase<ChannelType.GuildVoice>,
APITextBasedChannel<ChannelType.GuildVoice> {
/**
* The camera video quality mode of the voice channel, `1` when not present
*
@@ -151,7 +153,9 @@ export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageV
video_quality_mode?: VideoQualityMode;
}
interface APIDMChannelBase<T extends ChannelType> extends APITextBasedChannel<T> {
export type APIGuildStageVoiceChannel = APIVoiceChannelBase<ChannelType.GuildStageVoice>;
export interface APIDMChannelBase<T extends ChannelType> extends Omit<APITextBasedChannel<T>, 'rate_limit_per_user'> {
/**
* The recipients of the DM
*
@@ -198,7 +202,9 @@ export interface APIThreadChannel
*/
thread_metadata?: APIThreadMetadata;
/**
* The approximate message count of the thread, does not count above 50 even if there are more messages
* Number of messages (not including the initial message or deleted messages) in a thread
*
* If the thread was created before July 1, 2022, it stops counting at 50 messages
*/
message_count?: number;
/**
@@ -223,6 +229,12 @@ export interface APIThreadChannel
* The id of the last message sent in this thread (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
/**
* Number of messages ever sent in a thread
*
* Similar to `message_count` on message creation, but won't decrement when a message is deleted
*/
total_message_sent?: number;
}
export type APIGuildForumChannel = APIGuildTextChannel<ChannelType.GuildForum>;
@@ -235,7 +247,8 @@ export type APIChannel =
| APIDMChannel
| APITextChannel
| APINewsChannel
| APIVoiceChannel
| APIGuildVoiceChannel
| APIGuildStageVoiceChannel
| APIGuildCategoryChannel
| APIThreadChannel
| APINewsChannel
@@ -326,10 +339,6 @@ export interface APIMessage {
* ID of the channel the message was sent in
*/
channel_id: Snowflake;
/**
* ID of the guild the message was sent in
*/
guild_id?: Snowflake;
/**
* The author of this message (only a valid user in the case where the message is generated by a user or bot user)
*
@@ -339,17 +348,15 @@ export interface APIMessage {
* See https://discord.com/developers/docs/resources/user#user-object
*/
author: APIUser;
/**
* Member properties for this message's author
*
* The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
member?: APIGuildMember;
/**
* Contents of the message
*
* The `MESSAGE_CONTENT` privileged gateway intent is required for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**.
* You also need to specify the intent bit value (`1 << 15`) if you are connecting to the gateway
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
content: string;
/**
@@ -377,7 +384,7 @@ export interface APIMessage {
* See https://discord.com/developers/docs/resources/user#user-object
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
mentions: APIUser[];
/**
* Roles specifically mentioned in this message
*
@@ -400,12 +407,26 @@ export interface APIMessage {
* Any attached files
*
* See https://discord.com/developers/docs/resources/channel#attachment-object
*
* The `MESSAGE_CONTENT` privileged gateway intent is required for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**.
* You also need to specify the intent bit value (`1 << 15`) if you are connecting to the gateway
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
attachments: APIAttachment[];
/**
* Any embedded content
*
* See https://discord.com/developers/docs/resources/channel#embed-object
*
* The `MESSAGE_CONTENT` privileged gateway intent is required for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**.
* You also need to specify the intent bit value (`1 << 15`) if you are connecting to the gateway
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
embeds: APIEmbed[];
/**
@@ -444,7 +465,7 @@ export interface APIMessage {
/**
* Sent with Rich Presence-related chat embeds
*
* See https://discord.com/developers/docs/resources/channel#message-object-message-application-structure
* See https://discord.com/developers/docs/resources/application#application-object
*/
application?: Partial<APIApplication>;
/**
@@ -489,6 +510,13 @@ export interface APIMessage {
thread?: APIChannel;
/**
* Sent if the message contains components like buttons, action rows, or other interactive components
*
* The `MESSAGE_CONTENT` privileged gateway intent is required for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**.
* You also need to specify the intent bit value (`1 << 15`) if you are connecting to the gateway
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
components?: APIActionRowComponent<APIMessageActionRowComponent>[];
/**
@@ -504,6 +532,12 @@ export interface APIMessage {
* @deprecated Use `sticker_items` instead
*/
stickers?: APISticker[];
/**
* A generally increasing integer (there may be gaps or duplicates) that represents the approximate position of the message in a thread
*
* It can be used to estimate the relative position of the message in a thread in company with `total_message_sent` on parent thread
*/
position?: number;
}
/**
@@ -517,11 +551,11 @@ export enum MessageType {
ChannelNameChange,
ChannelIconChange,
ChannelPinnedMessage,
GuildMemberJoin,
UserPremiumGuildSubscription,
UserPremiumGuildSubscriptionTier1,
UserPremiumGuildSubscriptionTier2,
UserPremiumGuildSubscriptionTier3,
UserJoin,
GuildBoost,
GuildBoostTier1,
GuildBoostTier2,
GuildBoostTier3,
ChannelFollowAdd,
GuildDiscoveryDisqualified = 14,
GuildDiscoveryRequalified,
@@ -917,6 +951,10 @@ export interface APIEmbedVideo {
* Source url of video
*/
url?: string;
/**
* A proxied url of the video
*/
proxy_url?: string;
/**
* Height of video
*/
@@ -1156,7 +1194,7 @@ export interface APIBaseComponent<T extends ComponentType> {
}
/**
* https://discord.com/developers/docs/interactions/message-components#component-types
* https://discord.com/developers/docs/interactions/message-components#component-object-component-types
*/
export enum ComponentType {
/**

View File

@@ -69,10 +69,6 @@ export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'
* The vanity url code for the guild
*/
vanity_url_code?: string | null;
/**
* `true` if this guild is unavailable due to an outage
*/
unavailable?: boolean;
}
/**
@@ -389,10 +385,6 @@ export enum GuildFeature {
* Guild has access to set a guild banner image
*/
Banner = 'BANNER',
/**
* Guild has access to use commerce features (i.e. create store channels)
*/
Commerce = 'COMMERCE',
/**
* Guild can enable welcome screen, Membership Screening and discovery, and receives community updates
*/
@@ -413,6 +405,8 @@ export enum GuildFeature {
* Guild is a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
Hub = 'HUB',
/**
@@ -423,6 +417,8 @@ export enum GuildFeature {
* Guild is in a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
LinkedToHub = 'LINKED_TO_HUB',
/**
@@ -773,7 +769,7 @@ export interface APIBan {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object
*/
export interface APIGuildWidget {
id: Snowflake;
@@ -785,7 +781,7 @@ export interface APIGuildWidget {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
*/
export interface APIGuildWidgetChannel {
id: Snowflake;
@@ -794,7 +790,7 @@ export interface APIGuildWidgetChannel {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
*/
export interface APIGuildWidgetMember {
id: string;

View File

@@ -53,7 +53,7 @@ export interface APIInvite {
/**
* The type of target for this voice channel invite
*
* See https://discord.com/developers/docs/resources/invite#invite-object-target-user-types
* See https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types
*/
target_type?: InviteTargetType;
/**
@@ -65,7 +65,7 @@ export interface APIInvite {
/**
* The embedded application to open for this voice channel embedded application invite
*
* See https://discord.com/developers/docs/topics/oauth2#application
* See https://discord.com/developers/docs/resources/application#application-object
*/
target_application?: Partial<APIApplication>;
/**

View File

@@ -32,7 +32,7 @@ export interface APITeam {
}
/**
* https://discord.com/developers/docs/topics/teams#data-models-team-members-object
* https://discord.com/developers/docs/topics/teams#data-models-team-member-object
*/
export interface APITeamMember {
/**

View File

@@ -1,5 +1,5 @@
/**
* Types extracted from https://discord.com/developers/docs/resources/template
* Types extracted from https://discord.com/developers/docs/resources/guild-template
*/
import type { APIUser } from './user.ts';
@@ -7,7 +7,7 @@ import type { Snowflake } from '../../globals.ts';
import type { RESTPostAPIGuildsJSONBody } from '../../rest/v10/mod.ts';
/**
* https://discord.com/developers/docs/resources/template#template-object
* https://discord.com/developers/docs/resources/guild-template#guild-template-object
*/
export interface APITemplate {
/**

View File

@@ -143,8 +143,16 @@ export enum UserFlags {
BotHTTPInteractions = 1 << 19,
/**
* User has been identified as spammer
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Quarantined = Math.pow(2, 44),
}
/**
@@ -170,8 +178,10 @@ export interface APIConnection {
name: string;
/**
* The service of the connection
*
* See https://discord.com/developers/docs/resources/user#connection-object-services
*/
type: string;
type: ConnectionService;
/**
* Whether the connection is revoked
*/
@@ -202,6 +212,24 @@ export interface APIConnection {
visibility: ConnectionVisibility;
}
export enum ConnectionService {
BattleNet = 'battlenet',
EpicGames = 'epicgames',
Facebook = 'facebook',
GitHub = 'github',
LeagueOfLegends = 'leagueoflegends',
PlayStationNetwork = 'playstation',
Reddit = 'reddit',
SamsungGalaxy = 'samsunggalaxy',
Spotify = 'spotify',
Skype = 'skype',
Steam = 'steam',
Twitch = 'twitch',
Twitter = 'twitter',
Xbox = 'xbox',
YouTube = 'youtube',
}
export enum ConnectionVisibility {
/**
* Invisible to everyone except the user themselves

View File

@@ -15,7 +15,7 @@ interface APIApplicationCommandIntegerOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -15,7 +15,7 @@ interface APIApplicationCommandNumberOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -145,8 +145,16 @@ export enum UserFlags {
BotHTTPInteractions = 1 << 19,
/**
* User has been identified as spammer
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Quarantined = Math.pow(2, 44),
}
/**

View File

@@ -12,7 +12,7 @@ interface APIApplicationCommandIntegerOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -12,7 +12,7 @@ interface APIApplicationCommandNumberOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -5,8 +5,20 @@ import type {
} from './base.ts';
import type { APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from './shared.ts';
interface APIApplicationCommandStringOptionBase
extends APIApplicationCommandOptionBase<ApplicationCommandOptionType.String> {
/**
* For option type `STRING`, the minimum allowed length (minimum of `0`, maximum of `6000`).
*/
min_length?: number;
/**
* For option type `STRING`, the maximum allowed length (minimum of `1`, maximum of `6000`).
*/
max_length?: number;
}
export type APIApplicationCommandStringOption = APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper<
APIApplicationCommandOptionBase<ApplicationCommandOptionType.String>,
APIApplicationCommandStringOptionBase,
APIApplicationCommandOptionChoice<string>
>;

View File

@@ -54,6 +54,7 @@ import type {
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
export * from './_chatInput/attachment.ts';
export * from './_chatInput/base.ts';
export * from './_chatInput/boolean.ts';
export * from './_chatInput/channel.ts';
export * from './_chatInput/integer.ts';
@@ -108,7 +109,7 @@ export type APIApplicationCommandInteractionDataBasicOption =
| APIApplicationCommandInteractionDataAttachmentOption;
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIChatInputApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {

View File

@@ -10,7 +10,7 @@ import type {
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIUserApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.User> {
@@ -27,7 +27,7 @@ export interface APIUserApplicationCommandInteractionDataResolved {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIMessageApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.Message> {
@@ -43,7 +43,7 @@ export interface APIMessageApplicationCommandInteractionDataResolved {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export type APIContextMenuInteractionData =
| APIUserApplicationCommandInteractionData

View File

@@ -101,7 +101,7 @@ export enum ApplicationCommandType {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export type APIApplicationCommandInteractionData =
| APIChatInputApplicationCommandInteractionData

View File

@@ -31,7 +31,7 @@ export interface APIMessageInteraction {
*/
type: InteractionType;
/**
* The name of the ApplicationCommand
* The name of the application command, including subcommands and subcommand groups
*/
name: string;
/**
@@ -104,6 +104,10 @@ export interface APIBaseInteraction<Type extends InteractionType, Data> {
* For components, the message they were attached to
*/
message?: APIMessage;
/**
* Bitwise set of permissions the app or bot has within the channel the interaction was sent from
*/
app_permissions?: Permissions;
/**
* The selected language of the invoking user
*/

View File

@@ -62,7 +62,7 @@ export interface APIApplication {
/**
* The hexadecimal encoded key for verification in interactions and the GameSDK's GetTicket function
*
* See https://discord.com/developers/docs/game-sdk/applications#get-ticket
* See https://discord.com/developers/docs/game-sdk/applications#getticket
*/
verify_key: string;
/**

View File

@@ -4,7 +4,6 @@
import type { APIApplication } from './application.ts';
import type { APIPartialEmoji } from './emoji.ts';
import type { APIGuildMember } from './guild.ts';
import type { APIMessageInteraction } from './interactions.ts';
import type { APIRole } from './permissions.ts';
import type { APISticker, APIStickerItem } from './sticker.ts';
@@ -40,7 +39,6 @@ export interface APIChannelBase<T extends ChannelType> extends APIPartialChannel
flags?: ChannelFlags;
}
// TODO: update when text in voice is released
export type TextChannelType =
| ChannelType.DM
| ChannelType.GroupDM
@@ -49,7 +47,8 @@ export type TextChannelType =
| ChannelType.GuildPrivateThread
| ChannelType.GuildNewsThread
| ChannelType.GuildText
| ChannelType.GuildForum;
| ChannelType.GuildForum
| ChannelType.GuildVoice;
export type GuildChannelType = Exclude<
TextChannelType | ChannelType.GuildVoice | ChannelType.GuildStageVoice | ChannelType.GuildNews,
@@ -61,6 +60,16 @@ export interface APITextBasedChannel<T extends ChannelType> extends APIChannelBa
* The id of the last message sent in this channel (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
/**
* 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_CHANNELS`, are unaffected
*
* `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.
*
* For thread channels, `rate_limit_per_user` is only returned if the field is set to a non-zero and non-null value.
* The absence of this field in API calls and Gateway events should indicate that slowmode has been reset to the default value.
*/
rate_limit_per_user?: number;
}
export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T> {
@@ -112,23 +121,11 @@ export interface APIGuildTextChannel<T extends GuildTextChannelType>
last_pin_timestamp?: string | null;
}
export interface APITextChannel extends APIGuildTextChannel<ChannelType.GuildText> {
/**
* 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_CHANNELS`, are unaffected
*
* `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.
*
* For thread channels, `rate_limit_per_user` is only returned if the field is set to a non-zero and non-null value.
* The absence of this field in API calls and Gateway events should indicate that slowmode has been reset to the default value.
*/
rate_limit_per_user?: number;
}
export type APITextChannel = APIGuildTextChannel<ChannelType.GuildText>;
export type APINewsChannel = APIGuildTextChannel<ChannelType.GuildNews>;
export type APIGuildCategoryChannel = APIGuildChannel<ChannelType.GuildCategory>;
export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageVoice | ChannelType.GuildVoice> {
export interface APIVoiceChannelBase<T extends ChannelType> extends APIGuildChannel<T> {
/**
* The bitrate (in bits) of the voice channel
*/
@@ -143,6 +140,11 @@ export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageV
* See https://discord.com/developers/docs/resources/voice#voice-region-object
*/
rtc_region?: string | null;
}
export interface APIGuildVoiceChannel
extends APIVoiceChannelBase<ChannelType.GuildVoice>,
APITextBasedChannel<ChannelType.GuildVoice> {
/**
* The camera video quality mode of the voice channel, `1` when not present
*
@@ -151,7 +153,9 @@ export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageV
video_quality_mode?: VideoQualityMode;
}
interface APIDMChannelBase<T extends ChannelType> extends APITextBasedChannel<T> {
export type APIGuildStageVoiceChannel = APIVoiceChannelBase<ChannelType.GuildStageVoice>;
export interface APIDMChannelBase<T extends ChannelType> extends Omit<APITextBasedChannel<T>, 'rate_limit_per_user'> {
/**
* The recipients of the DM
*
@@ -198,7 +202,9 @@ export interface APIThreadChannel
*/
thread_metadata?: APIThreadMetadata;
/**
* The approximate message count of the thread, does not count above 50 even if there are more messages
* Number of messages (not including the initial message or deleted messages) in a thread
*
* If the thread was created before July 1, 2022, it stops counting at 50 messages
*/
message_count?: number;
/**
@@ -223,6 +229,12 @@ export interface APIThreadChannel
* The id of the last message sent in this thread (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
/**
* Number of messages ever sent in a thread
*
* Similar to `message_count` on message creation, but won't decrement when a message is deleted
*/
total_message_sent?: number;
}
export type APIGuildForumChannel = APIGuildTextChannel<ChannelType.GuildForum>;
@@ -235,7 +247,8 @@ export type APIChannel =
| APIDMChannel
| APITextChannel
| APINewsChannel
| APIVoiceChannel
| APIGuildVoiceChannel
| APIGuildStageVoiceChannel
| APIGuildCategoryChannel
| APIThreadChannel
| APINewsChannel
@@ -326,10 +339,6 @@ export interface APIMessage {
* ID of the channel the message was sent in
*/
channel_id: Snowflake;
/**
* ID of the guild the message was sent in
*/
guild_id?: Snowflake;
/**
* The author of this message (only a valid user in the case where the message is generated by a user or bot user)
*
@@ -339,17 +348,14 @@ export interface APIMessage {
* See https://discord.com/developers/docs/resources/user#user-object
*/
author: APIUser;
/**
* Member properties for this message's author
*
* The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
member?: APIGuildMember;
/**
* Contents of the message
*
* The `MESSAGE_CONTENT` privileged gateway intent will become required after **August 31, 2022** for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
content: string;
/**
@@ -377,7 +383,7 @@ export interface APIMessage {
* See https://discord.com/developers/docs/resources/user#user-object
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
mentions: APIUser[];
/**
* Roles specifically mentioned in this message
*
@@ -400,12 +406,24 @@ export interface APIMessage {
* Any attached files
*
* See https://discord.com/developers/docs/resources/channel#attachment-object
*
* The `MESSAGE_CONTENT` privileged gateway intent will become required after **August 31, 2022** for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
attachments: APIAttachment[];
/**
* Any embedded content
*
* See https://discord.com/developers/docs/resources/channel#embed-object
*
* The `MESSAGE_CONTENT` privileged gateway intent will become required after **August 31, 2022** for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
embeds: APIEmbed[];
/**
@@ -444,7 +462,7 @@ export interface APIMessage {
/**
* Sent with Rich Presence-related chat embeds
*
* See https://discord.com/developers/docs/resources/channel#message-object-message-application-structure
* See https://discord.com/developers/docs/resources/application#application-object
*/
application?: Partial<APIApplication>;
/**
@@ -489,6 +507,12 @@ export interface APIMessage {
thread?: APIChannel;
/**
* Sent if the message contains components like buttons, action rows, or other interactive components
*
* The `MESSAGE_CONTENT` privileged gateway intent will become required after **August 31, 2022** for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
components?: APIActionRowComponent<APIMessageActionRowComponent>[];
/**
@@ -504,6 +528,12 @@ export interface APIMessage {
* @deprecated Use `sticker_items` instead
*/
stickers?: APISticker[];
/**
* A generally increasing integer (there may be gaps or duplicates) that represents the approximate position of the message in a thread
*
* It can be used to estimate the relative position of the message in a thread in company with `total_message_sent` on parent thread
*/
position?: number;
}
/**
@@ -517,11 +547,11 @@ export enum MessageType {
ChannelNameChange,
ChannelIconChange,
ChannelPinnedMessage,
GuildMemberJoin,
UserPremiumGuildSubscription,
UserPremiumGuildSubscriptionTier1,
UserPremiumGuildSubscriptionTier2,
UserPremiumGuildSubscriptionTier3,
UserJoin,
GuildBoost,
GuildBoostTier1,
GuildBoostTier2,
GuildBoostTier3,
ChannelFollowAdd,
GuildDiscoveryDisqualified = 14,
GuildDiscoveryRequalified,
@@ -921,6 +951,10 @@ export interface APIEmbedVideo {
* Source url of video
*/
url?: string;
/**
* A proxied url of the video
*/
proxy_url?: string;
/**
* Height of video
*/
@@ -1160,7 +1194,7 @@ export interface APIBaseComponent<T extends ComponentType> {
}
/**
* https://discord.com/developers/docs/interactions/message-components#component-types
* https://discord.com/developers/docs/interactions/message-components#component-object-component-types
*/
export enum ComponentType {
/**

View File

@@ -69,10 +69,6 @@ export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'
* The vanity url code for the guild
*/
vanity_url_code?: string | null;
/**
* `true` if this guild is unavailable due to an outage
*/
unavailable?: boolean;
}
/**
@@ -389,10 +385,6 @@ export enum GuildFeature {
* Guild has access to set a guild banner image
*/
Banner = 'BANNER',
/**
* Guild has access to use commerce features (i.e. create store channels)
*/
Commerce = 'COMMERCE',
/**
* Guild can enable welcome screen, Membership Screening and discovery, and receives community updates
*/
@@ -413,6 +405,8 @@ export enum GuildFeature {
* Guild is a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
Hub = 'HUB',
/**
@@ -423,6 +417,8 @@ export enum GuildFeature {
* Guild is in a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
LinkedToHub = 'LINKED_TO_HUB',
/**
@@ -773,7 +769,7 @@ export interface APIBan {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object
*/
export interface APIGuildWidget {
id: Snowflake;
@@ -785,7 +781,7 @@ export interface APIGuildWidget {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
*/
export interface APIGuildWidgetChannel {
id: Snowflake;
@@ -794,7 +790,7 @@ export interface APIGuildWidgetChannel {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
*/
export interface APIGuildWidgetMember {
id: string;

View File

@@ -53,7 +53,7 @@ export interface APIInvite {
/**
* The type of target for this voice channel invite
*
* See https://discord.com/developers/docs/resources/invite#invite-object-target-user-types
* See https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types
*/
target_type?: InviteTargetType;
/**
@@ -65,7 +65,7 @@ export interface APIInvite {
/**
* The embedded application to open for this voice channel embedded application invite
*
* See https://discord.com/developers/docs/topics/oauth2#application
* See https://discord.com/developers/docs/resources/application#application-object
*/
target_application?: Partial<APIApplication>;
/**

View File

@@ -32,7 +32,7 @@ export interface APITeam {
}
/**
* https://discord.com/developers/docs/topics/teams#data-models-team-members-object
* https://discord.com/developers/docs/topics/teams#data-models-team-member-object
*/
export interface APITeamMember {
/**

View File

@@ -1,5 +1,5 @@
/**
* Types extracted from https://discord.com/developers/docs/resources/template
* Types extracted from https://discord.com/developers/docs/resources/guild-template
*/
import type { APIUser } from './user.ts';
@@ -7,7 +7,7 @@ import type { Snowflake } from '../../globals.ts';
import type { RESTPostAPIGuildsJSONBody } from '../../rest/v9/mod.ts';
/**
* https://discord.com/developers/docs/resources/template#template-object
* https://discord.com/developers/docs/resources/guild-template#template-object
*/
export interface APITemplate {
/**

View File

@@ -143,8 +143,16 @@ export enum UserFlags {
BotHTTPInteractions = 1 << 19,
/**
* User has been identified as spammer
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Quarantined = Math.pow(2, 44),
}
/**
@@ -170,8 +178,10 @@ export interface APIConnection {
name: string;
/**
* The service of the connection
*
* See https://discord.com/developers/docs/resources/user#connection-object-services
*/
type: string;
type: ConnectionService;
/**
* Whether the connection is revoked
*/
@@ -202,6 +212,24 @@ export interface APIConnection {
visibility: ConnectionVisibility;
}
export enum ConnectionService {
BattleNet = 'battlenet',
EpicGames = 'epicgames',
Facebook = 'facebook',
GitHub = 'github',
LeagueOfLegends = 'leagueoflegends',
PlayStationNetwork = 'playstation',
Reddit = 'reddit',
SamsungGalaxy = 'samsunggalaxy',
Spotify = 'spotify',
Skype = 'skype',
Steam = 'steam',
Twitch = 'twitch',
Twitter = 'twitter',
Xbox = 'xbox',
YouTube = 'youtube',
}
export enum ConnectionVisibility {
/**
* Invisible to everyone except the user themselves

View File

@@ -70,6 +70,8 @@ export enum RESTJSONErrorCodes {
AnnouncementEditLimitExceeded = 20022,
UnderMinimumAge = 20024,
ChannelSendRateLimit = 20028,
ServerSendRateLimit,
@@ -99,10 +101,10 @@ export enum RESTJSONErrorCodes {
MaximumNumberOfServerCategoriesReached = 30030,
GuildAlreadyHasTemplate = 30031,
MaximumThreadParticipants = 30033,
MaximumNumberOfNonGuildMemberBansHasBeenExceeded = 30035,
MaximumNumberOfApplicationCommandsReached,
MaximumThreadParticipantsReached,
MaximumDailyApplicationCommandCreatesReached,
MaximumNumberOfNonGuildMemberBansHasBeenExceeded,
MaximumNumberOfBanFetchesHasBeenReached = 30037,
MaximumNumberOfUncompletedGuildScheduledEventsReached,
@@ -116,6 +118,8 @@ export enum RESTJSONErrorCodes {
MaximumNumberOfPinnedThreadsInForumHasBeenReached,
MaximumNumberOfTagsInForumHasBeenReached,
BitrateIsTooHighForChannelOfThisType = 30052,
Unauthorized = 40001,
VerifyYourAccount,
OpeningDirectMessagesTooFast,
@@ -124,11 +128,15 @@ export enum RESTJSONErrorCodes {
FeatureTemporarilyDisabledServerSide,
UserBannedFromThisGuild,
ConnectionHasBeenRevoked = 40012,
TargetUserIsNotConnectedToVoice = 40032,
ThisMessageWasAlreadyCrossposted,
ApplicationCommandWithThatNameAlreadyExists = 40041,
ApplicationInteractionFailedToSend = 40043,
InteractionHasAlreadyBeenAcknowledged = 40060,
TagNamesMustBeUnique,
@@ -148,6 +156,7 @@ export enum RESTJSONErrorCodes {
InvalidToken,
NoteWasTooLong,
ProvidedTooFewOrTooManyMessagesToDelete,
InvalidMFALevel,
MessageCanOnlyBePinnedInTheChannelItWasSentIn = 50019,
InviteCodeInvalidOrTaken,
@@ -195,6 +204,12 @@ export enum RESTJSONErrorCodes {
RequestBodyContainsInvalidJSON = 50109,
OwnershipCannotBeMovedToABotUser = 50132,
FailedToResizeAssetBelowTheMinimumSize = 50138,
UploadedFileNotFound = 50146,
YouDoNotHavePermissionToSendThisSticker = 50600,
TwoFactorAuthenticationIsRequired = 60003,
@@ -203,6 +218,8 @@ export enum RESTJSONErrorCodes {
ReactionWasBlocked = 90001,
ApplicationNotYetAvailable = 110001,
APIResourceOverloaded = 130000,
TheStageIsAlreadyOpen = 150006,
@@ -225,6 +242,13 @@ export enum RESTJSONErrorCodes {
CannotUpdateAFinishedEvent = 180000,
FailedToCreateStageNeededForStageEvent = 180002,
MessageWasBlockedByAutomaticModeration = 200000,
TitleWasBlockedByAutomaticModeration,
WebhooksCanOnlyCreateThreadsInForumChannels = 220003,
MessageBlockedByHarmfulLinksFilter = 240000,
}
/**

View File

@@ -64,7 +64,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
/**
* Whether the channel is nsfw
*
* Channel types: text, news
* Channel types: text, voice, news
*/
nsfw?: boolean | null;
/**
@@ -96,7 +96,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
/**
* ID of the new parent category for a channel
*
* Channel types: text, news, voice
* Channel types: text, voice, news
*/
parent_id?: Snowflake | null;
/**
@@ -665,4 +665,9 @@ export interface RESTGetAPIChannelThreadsArchivedQuery {
/**
* https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads
*/
export type RESTGetAPIChannelUsersThreadsArchivedResult = APIThreadList;
export interface RESTGetAPIChannelUsersThreadsArchivedResult extends APIThreadList {
/**
* Whether there are potentially additional threads
*/
has_more: boolean;
}

View File

@@ -20,6 +20,7 @@ import type {
GuildDefaultMessageNotifications,
GuildExplicitContentFilter,
GuildFeature,
GuildMFALevel,
GuildSystemChannelFlags,
GuildVerificationLevel,
GuildWidgetStyle,
@@ -158,6 +159,23 @@ export type RESTPostAPIGuildsJSONBody = AddUndefinedToPossiblyUndefinedPropertie
*/
export type RESTPostAPIGuildsResult = APIGuild;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export interface RESTPostAPIGuildsMFAJSONBody {
/**
* MFA level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-mfa-level
*/
level: GuildMFALevel;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export type RESTPostAPIGuildsMFAResult = RESTPostAPIGuildsMFAJSONBody;
/**
* https://discord.com/developers/docs/resources/guild#get-guild
*/
@@ -339,7 +357,7 @@ export type RESTPatchAPIGuildChannelPositionsJSONBody = Array<
export type RESTPatchAPIGuildChannelPositionsResult = never;
/**
* https://discord.com/developers/docs/resources/guild#list-active-threads
* https://discord.com/developers/docs/resources/guild#list-active-guild-threads
*/
export type RESTGetAPIGuildThreadsResult = APIThreadList;

View File

@@ -129,8 +129,10 @@ export type RESTPatchAPIApplicationGuildCommandResult = Omit<APIApplicationComma
* https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands
*/
export type RESTPutAPIApplicationGuildCommandsJSONBody = (
| Omit<RESTPostAPIChatInputApplicationCommandsJSONBody, 'dm_permission'>
| Omit<RESTPostAPIContextMenuApplicationCommandsJSONBody, 'dm_permission'>
| (Omit<RESTPostAPIChatInputApplicationCommandsJSONBody, 'dm_permission'> &
Pick<Partial<APIApplicationCommand>, 'id'>)
| (Omit<RESTPostAPIContextMenuApplicationCommandsJSONBody, 'dm_permission'> &
Pick<Partial<APIApplicationCommand>, 'id'>)
)[];
/**

View File

@@ -274,6 +274,14 @@ export const Routes = {
return `/guilds/${guildId}/members/${memberId}/roles/${roleId}` as const;
},
/**
* Route for:
* - POST `/guilds/{guild.id}/mfa`
*/
guildMFA(guildId: Snowflake) {
return `/guilds/${guildId}/mfa` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/bans`
@@ -836,6 +844,262 @@ export const Routes = {
},
};
export const StickerPackApplicationId = '710982414301790216';
export const CDNRoutes = {
/**
* Route for:
* - GET `/emojis/{emoji.id}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
emoji(emojiId: Snowflake, format: EmojiFormat) {
return `/emojis/${emojiId}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/icons/{guild.id}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildIcon(guildId: Snowflake, guildIcon: string, format: GuildIconFormat) {
return `icons/${guildId}/${guildIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/splashes/{guild.id}/{guild.splash}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildSplash(guildId: Snowflake, guildSplash: string, format: GuildSplashFormat) {
return `/splashes/${guildId}/${guildSplash}.${format}` as const;
},
/**
* Route for:
* - GET `/discovery-splashes/{guild.id}/{guild.discovery_splash}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildDiscoverySplash(guildId: Snowflake, guildDiscoverySplash: string, format: GuildDiscoverySplashFormat) {
return `/discovery-splashes/${guildId}/${guildDiscoverySplash}.${format}` as const;
},
/**
* Route for:
* - GET `/banners/{guild.id}/{guild.banner}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildBanner(guildId: Snowflake, guildBanner: string, format: GuildBannerFormat) {
return `/banners/${guildId}/${guildBanner}.${format}` as const;
},
/**
* Route for:
* - GET `/banners/{user.id}/{user.banner}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
userBanner(userId: Snowflake, userBanner: string, format: UserBannerFormat) {
return `/banners/${userId}/${userBanner}.${format}` as const;
},
/**
* Route for:
* - GET `/embed/avatars/{user.discriminator % 5}.png`
*
* The `userDiscriminator` parameter should be the user discriminator modulo 5 (e.g. 1337 % 5 = 2)
*
* This route supports the extension: PNG
*/
defaultUserAvatar(userDiscriminator: DefaultUserAvatarAssets) {
return `/embed/avatars/${userDiscriminator}.png` as const;
},
/**
* Route for:
* - GET `/avatars/{user.id}/{user.avatar}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
userAvatar(userId: Snowflake, userAvatar: string, format: UserAvatarFormat) {
return `/avatars/${userId}/${userAvatar}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/users/{user.id}/{guild_member.avatar}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildMemberAvatar(guildId: Snowflake, userId: Snowflake, memberAvatar: string, format: GuildMemberAvatarFormat) {
return `/guilds/${guildId}/users/${userId}/avatars/${memberAvatar}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationIcon(applicationId: Snowflake, applicationIcon: string, format: ApplicationIconFormat) {
return `/app-icons/${applicationId}/${applicationIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.cover_image}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationCover(applicationId: Snowflake, applicationCoverImage: string, format: ApplicationCoverFormat) {
return `/app-icons/${applicationId}/${applicationCoverImage}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.asset_id}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationAsset(applicationId: Snowflake, applicationAssetId: string, format: ApplicationAssetFormat) {
return `/app-icons/${applicationId}/${applicationAssetId}.${format}` as const;
},
/**
* Route for:
* - GET `/app-assets/{application.id}/achievements/{achievement.id}/icons/{achievement.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
achievementIcon(
applicationId: Snowflake,
achievementId: Snowflake,
achievementIconHash: string,
format: AchievementIconFormat,
) {
return `/app-assets/${applicationId}/achievements/${achievementId}/icons/${achievementIconHash}.${format}` as const;
},
/**
* Route for:
* - GET `/app-assets/710982414301790216/store/{sticker_pack.banner.asset_id}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
stickerPackBanner(stickerPackBannerAssetId: Snowflake, format: StickerPackBannerFormat) {
return `/app-assets/${StickerPackApplicationId}/store/${stickerPackBannerAssetId}.${format}` as const;
},
/**
* Route for:
* - GET `team-icons/{team.id}/{team.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
teamIcon(teamId: Snowflake, teamIcon: string, format: TeamIconFormat) {
return `/team-icons/${teamId}/${teamIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/stickers/{sticker.id}.{png|json}`
*
* This route supports the extensions: PNG, Lottie
*/
sticker(stickerId: Snowflake, format: StickerFormat) {
return `/stickers/${stickerId}.${format}` as const;
},
/**
* Route for:
* - GET `/role-icons/{role.id}/{role.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
roleIcon(roleId: Snowflake, roleIcon: string, format: RoleIconFormat) {
return `/role-icons/${roleId}/${roleIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/guild-events/{guild_scheduled_event.id}/{guild_scheduled_event.image}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildScheduledEventCover(
guildScheduledEventId: Snowflake,
guildScheduledEventCoverImage: string,
format: GuildScheduledEventCoverFormat,
) {
return `/guild-events/${guildScheduledEventId}/${guildScheduledEventCoverImage}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/${guild.id}/users/${user.id}/banners/${guild_member.banner}.{png|jpeg|webp|gif}`
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildMemberBanner(guildId: Snowflake, userId: Snowflake, guildMemberBanner: string, format: GuildMemberBannerFormat) {
return `/guilds/${guildId}/users/${userId}/banners/${guildMemberBanner}.${format}` as const;
},
};
export type DefaultUserAvatarAssets = 0 | 1 | 2 | 3 | 4 | 5;
export type EmojiFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildIconFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildSplashFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildDiscoverySplashFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type UserBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type DefaultUserAvatar = Extract<ImageFormat, ImageFormat.PNG>;
export type UserAvatarFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildMemberAvatarFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type ApplicationIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type ApplicationCoverFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type ApplicationAssetFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type AchievementIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type StickerPackBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type TeamIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type StickerFormat = Extract<ImageFormat, ImageFormat.PNG | ImageFormat.Lottie>;
export type RoleIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildScheduledEventCoverFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildMemberBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export enum ImageFormat {
JPEG = 'jpeg',
PNG = 'png',
WebP = 'webp',
GIF = 'gif',
Lottie = 'json',
}
export interface CDNQuery {
/**
* The returned image can have the size changed by using this query parameter
*
* Image size can be any power of two between 16 and 4096
*/
size?: number;
}
export const RouteBases = {
api: `https://discord.com/api/v${APIVersion}`,
cdn: 'https://cdn.discordapp.com',

View File

@@ -144,6 +144,12 @@ export type RESTPostAPIWebhookWithTokenJSONBody = AddUndefinedToPossiblyUndefine
* Message flags combined as a bitfield
*/
flags?: MessageFlags;
/**
* Name of thread to create
*
* Available only if the webhook is in a forum channel and a thread is not specified in {@link RESTPostAPIWebhookWithTokenQuery.thread_id} query parameter
*/
thread_name?: string;
}>;
/**
@@ -171,6 +177,8 @@ export interface RESTPostAPIWebhookWithTokenQuery {
wait?: boolean;
/**
* Send a message to the specified thread within a webhook's channel. The thread will automatically be unarchived.
*
* Available only if the {@link RESTPostAPIWebhookWithTokenJSONBody.thread_name} JSON body property is not specified
*/
thread_id?: Snowflake;
}

View File

@@ -64,7 +64,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
/**
* Whether the channel is nsfw
*
* Channel types: text, news
* Channel types: text, voice, news
*/
nsfw?: boolean | null;
/**
@@ -96,7 +96,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
/**
* ID of the new parent category for a channel
*
* Channel types: text, news, voice
* Channel types: text, voice, news
*/
parent_id?: Snowflake | null;
/**

View File

@@ -18,6 +18,7 @@ import type {
GuildDefaultMessageNotifications,
GuildExplicitContentFilter,
GuildFeature,
GuildMFALevel,
GuildSystemChannelFlags,
GuildVerificationLevel,
GuildWidgetStyle,
@@ -158,6 +159,23 @@ export type RESTPostAPIGuildsJSONBody = AddUndefinedToPossiblyUndefinedPropertie
*/
export type RESTPostAPIGuildsResult = APIGuild;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export interface RESTPostAPIGuildsMFAJSONBody {
/**
* MFA level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-mfa-level
*/
level: GuildMFALevel;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export type RESTPostAPIGuildsMFAResult = RESTPostAPIGuildsMFAJSONBody;
/**
* https://discord.com/developers/docs/resources/guild#get-guild
*/
@@ -339,7 +357,7 @@ export type RESTPatchAPIGuildChannelPositionsJSONBody = Array<
export type RESTPatchAPIGuildChannelPositionsResult = never;
/**
* https://discord.com/developers/docs/resources/guild#list-active-threads
* https://discord.com/developers/docs/resources/guild#list-active-guild-threads
*/
export type RESTGetAPIGuildThreadsResult = Omit<APIThreadList, 'has_more'>;

View File

@@ -129,8 +129,10 @@ export type RESTPatchAPIApplicationGuildCommandResult = Omit<APIApplicationComma
* https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands
*/
export type RESTPutAPIApplicationGuildCommandsJSONBody = (
| Omit<RESTPostAPIChatInputApplicationCommandsJSONBody, 'dm_permission'>
| Omit<RESTPostAPIContextMenuApplicationCommandsJSONBody, 'dm_permission'>
| (Omit<RESTPostAPIChatInputApplicationCommandsJSONBody, 'dm_permission'> &
Pick<Partial<APIApplicationCommand>, 'id'>)
| (Omit<RESTPostAPIContextMenuApplicationCommandsJSONBody, 'dm_permission'> &
Pick<Partial<APIApplicationCommand>, 'id'>)
)[];
/**

View File

@@ -274,6 +274,14 @@ export const Routes = {
return `/guilds/${guildId}/members/${memberId}/roles/${roleId}` as const;
},
/**
* Route for:
* - POST `/guilds/{guild.id}/mfa`
*/
guildMFA(guildId: Snowflake) {
return `/guilds/${guildId}/mfa` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/bans`
@@ -845,6 +853,262 @@ export const Routes = {
},
};
export const StickerPackApplicationId = '710982414301790216';
export const CDNRoutes = {
/**
* Route for:
* - GET `/emojis/{emoji.id}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
emoji(emojiId: Snowflake, format: EmojiFormat) {
return `/emojis/${emojiId}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/icons/{guild.id}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildIcon(guildId: Snowflake, guildIcon: string, format: GuildIconFormat) {
return `icons/${guildId}/${guildIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/splashes/{guild.id}/{guild.splash}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildSplash(guildId: Snowflake, guildSplash: string, format: GuildSplashFormat) {
return `/splashes/${guildId}/${guildSplash}.${format}` as const;
},
/**
* Route for:
* - GET `/discovery-splashes/{guild.id}/{guild.discovery_splash}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildDiscoverySplash(guildId: Snowflake, guildDiscoverySplash: string, format: GuildDiscoverySplashFormat) {
return `/discovery-splashes/${guildId}/${guildDiscoverySplash}.${format}` as const;
},
/**
* Route for:
* - GET `/banners/{guild.id}/{guild.banner}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildBanner(guildId: Snowflake, guildBanner: string, format: GuildBannerFormat) {
return `/banners/${guildId}/${guildBanner}.${format}` as const;
},
/**
* Route for:
* - GET `/banners/{user.id}/{user.banner}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
userBanner(userId: Snowflake, userBanner: string, format: UserBannerFormat) {
return `/banners/${userId}/${userBanner}.${format}` as const;
},
/**
* Route for:
* - GET `/embed/avatars/{user.discriminator % 5}.png`
*
* The `userDiscriminator` parameter should be the user discriminator modulo 5 (e.g. 1337 % 5 = 2)
*
* This route supports the extension: PNG
*/
defaultUserAvatar(userDiscriminator: DefaultUserAvatarAssets) {
return `/embed/avatars/${userDiscriminator}.png` as const;
},
/**
* Route for:
* - GET `/avatars/{user.id}/{user.avatar}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
userAvatar(userId: Snowflake, userAvatar: string, format: UserAvatarFormat) {
return `/avatars/${userId}/${userAvatar}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/users/{user.id}/{guild_member.avatar}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildMemberAvatar(guildId: Snowflake, userId: Snowflake, memberAvatar: string, format: GuildMemberAvatarFormat) {
return `/guilds/${guildId}/users/${userId}/avatars/${memberAvatar}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationIcon(applicationId: Snowflake, applicationIcon: string, format: ApplicationIconFormat) {
return `/app-icons/${applicationId}/${applicationIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.cover_image}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationCover(applicationId: Snowflake, applicationCoverImage: string, format: ApplicationCoverFormat) {
return `/app-icons/${applicationId}/${applicationCoverImage}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.asset_id}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationAsset(applicationId: Snowflake, applicationAssetId: string, format: ApplicationAssetFormat) {
return `/app-icons/${applicationId}/${applicationAssetId}.${format}` as const;
},
/**
* Route for:
* - GET `/app-assets/{application.id}/achievements/{achievement.id}/icons/{achievement.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
achievementIcon(
applicationId: Snowflake,
achievementId: Snowflake,
achievementIconHash: string,
format: AchievementIconFormat,
) {
return `/app-assets/${applicationId}/achievements/${achievementId}/icons/${achievementIconHash}.${format}` as const;
},
/**
* Route for:
* - GET `/app-assets/710982414301790216/store/{sticker_pack.banner.asset_id}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
stickerPackBanner(stickerPackBannerAssetId: Snowflake, format: StickerPackBannerFormat) {
return `/app-assets/${StickerPackApplicationId}/store/${stickerPackBannerAssetId}.${format}` as const;
},
/**
* Route for:
* - GET `team-icons/{team.id}/{team.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
teamIcon(teamId: Snowflake, teamIcon: string, format: TeamIconFormat) {
return `/team-icons/${teamId}/${teamIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/stickers/{sticker.id}.{png|json}`
*
* This route supports the extensions: PNG, Lottie
*/
sticker(stickerId: Snowflake, format: StickerFormat) {
return `/stickers/${stickerId}.${format}` as const;
},
/**
* Route for:
* - GET `/role-icons/{role.id}/{role.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
roleIcon(roleId: Snowflake, roleIcon: string, format: RoleIconFormat) {
return `/role-icons/${roleId}/${roleIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/guild-events/{guild_scheduled_event.id}/{guild_scheduled_event.image}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildScheduledEventCover(
guildScheduledEventId: Snowflake,
guildScheduledEventCoverImage: string,
format: GuildScheduledEventCoverFormat,
) {
return `/guild-events/${guildScheduledEventId}/${guildScheduledEventCoverImage}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/${guild.id}/users/${user.id}/banners/${guild_member.banner}.{png|jpeg|webp|gif}`
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildMemberBanner(guildId: Snowflake, userId: Snowflake, guildMemberBanner: string, format: GuildMemberBannerFormat) {
return `/guilds/${guildId}/users/${userId}/banners/${guildMemberBanner}.${format}` as const;
},
};
export type DefaultUserAvatarAssets = 0 | 1 | 2 | 3 | 4 | 5;
export type EmojiFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildIconFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildSplashFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildDiscoverySplashFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type UserBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type DefaultUserAvatar = Extract<ImageFormat, ImageFormat.PNG>;
export type UserAvatarFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildMemberAvatarFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type ApplicationIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type ApplicationCoverFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type ApplicationAssetFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type AchievementIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type StickerPackBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type TeamIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type StickerFormat = Extract<ImageFormat, ImageFormat.PNG | ImageFormat.Lottie>;
export type RoleIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildScheduledEventCoverFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildMemberBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export enum ImageFormat {
JPEG = 'jpeg',
PNG = 'png',
WebP = 'webp',
GIF = 'gif',
Lottie = 'json',
}
export interface CDNQuery {
/**
* The returned image can have the size changed by using this query parameter
*
* Image size can be any power of two between 16 and 4096
*/
size?: number;
}
export const RouteBases = {
api: `https://discord.com/api/v${APIVersion}`,
cdn: 'https://cdn.discordapp.com',

View File

@@ -144,6 +144,12 @@ export type RESTPostAPIWebhookWithTokenJSONBody = AddUndefinedToPossiblyUndefine
* Message flags combined as a bitfield
*/
flags?: MessageFlags;
/**
* Name of thread to create
*
* Available only if the webhook is in a forum channel and a thread is not specified in {@link RESTPostAPIWebhookWithTokenQuery.thread_id} query parameter
*/
thread_name?: string;
}>;
/**
@@ -171,6 +177,8 @@ export interface RESTPostAPIWebhookWithTokenQuery {
wait?: boolean;
/**
* Send a message to the specified thread within a webhook's channel. The thread will automatically be unarchived.
*
* Available only if the {@link RESTPostAPIWebhookWithTokenJSONBody.thread_name} JSON body property is not specified
*/
thread_id?: Snowflake;
}

View File

@@ -7,7 +7,9 @@ export type Nullable<T> = {
* (since JSON.stringify ignores undefined properties)
*/
export type AddUndefinedToPossiblyUndefinedPropertiesOfInterface<Base> = {
[K in keyof Base]: Base[K] extends Exclude<Base[K], undefined> ? Base[K] : Base[K] | undefined;
[K in keyof Base]: Base[K] extends Exclude<Base[K], undefined>
? AddUndefinedToPossiblyUndefinedPropertiesOfInterface<Base[K]>
: AddUndefinedToPossiblyUndefinedPropertiesOfInterface<Base[K]> | undefined;
};
export type StrictPartial<Base> = AddUndefinedToPossiblyUndefinedPropertiesOfInterface<Partial<Base>>;

View File

@@ -274,6 +274,7 @@ export type GatewayDispatchPayload =
| GatewayChannelModifyDispatch
| GatewayChannelPinsUpdateDispatch
| GatewayGuildBanModifyDispatch
| GatewayGuildCreateDispatch
| GatewayGuildDeleteDispatch
| GatewayGuildEmojisUpdateDispatch
| GatewayGuildIntegrationsUpdateDispatch
@@ -408,6 +409,10 @@ export interface GatewayReadyDispatchData {
* Used for resuming connections
*/
session_id: string;
/**
* Gateway url for resuming connections
*/
resume_gateway_url: string;
/**
* The shard information associated with this session, if sent when identifying
*
@@ -532,6 +537,10 @@ export interface GatewayGuildCreateDispatchData extends APIGuild {
* **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event**
*/
large: boolean;
/**
* `true` if this guild is unavailable due to an outage
*/
unavailable?: boolean;
/**
* Total number of members in this guild
*
@@ -816,11 +825,11 @@ export interface GatewayGuildMembersChunkDispatchData {
/**
* The chunk index in the expected chunks for this response (`0 <= chunk_index < chunk_count`)
*/
chunk_index?: number;
chunk_index: number;
/**
* The total number of expected chunks for this response
*/
chunk_count?: number;
chunk_count: number;
/**
* If passing an invalid id to `REQUEST_GUILD_MEMBERS`, it will be returned here
*/
@@ -1124,7 +1133,7 @@ export type GatewayMessageCreateDispatch = DataPayload<
/**
* https://discord.com/developers/docs/topics/gateway#message-create
*/
export type GatewayMessageCreateDispatchData = APIMessage;
export type GatewayMessageCreateDispatchData = Omit<APIMessage, 'mentions'> & GatewayMessageEventExtraFields;
/**
* https://discord.com/developers/docs/topics/gateway#message-update
@@ -1137,10 +1146,43 @@ export type GatewayMessageUpdateDispatch = DataPayload<
/**
* https://discord.com/developers/docs/topics/gateway#message-update
*/
export type GatewayMessageUpdateDispatchData = {
id: Snowflake;
channel_id: Snowflake;
} & Partial<APIMessage>;
export type GatewayMessageUpdateDispatchData = Omit<Partial<APIMessage>, 'mentions'> &
GatewayMessageEventExtraFields & {
/**
* ID of the message
*/
id: Snowflake;
/**
* ID of the channel the message was sent in
*/
channel_id: Snowflake;
};
export interface GatewayMessageEventExtraFields {
/**
* ID of the guild the message was sent in
*/
guild_id?: Snowflake;
/**
* Member properties for this message's author
*
* The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
member?: APIGuildMember;
/**
* Users specifically mentioned in the message
*
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/user#user-object
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
}
/**
* https://discord.com/developers/docs/topics/gateway#message-delete
@@ -1568,15 +1610,15 @@ export interface GatewayIdentifyProperties {
/**
* Your operating system
*/
$os: string;
os: string;
/**
* Your library name
*/
$browser: string;
browser: string;
/**
* Your library name
*/
$device: string;
device: string;
}
/**
@@ -1613,31 +1655,15 @@ export interface GatewayRequestGuildMembers {
d: GatewayRequestGuildMembersData;
}
/**
* https://discord.com/developers/docs/topics/gateway#request-guild-members
*/
export interface GatewayRequestGuildMembersData {
export interface GatewayRequestGuildMembersDataBase {
/**
* ID of the guild to get members for
*/
guild_id: Snowflake;
/**
* String that username starts with, or an empty string to return all members
*/
query?: string;
/**
* Maximum number of members to send matching the `query`;
* a limit of `0` can be used with an empty string `query` to return all members
*/
limit: number;
/**
* Used to specify if we want the presences of the matched members
*/
presences?: boolean;
/**
* Used to specify which users you wish to fetch
*/
user_ids?: Snowflake | Snowflake[];
/**
* Nonce to identify the Guild Members Chunk response
*
@@ -1648,6 +1674,32 @@ export interface GatewayRequestGuildMembersData {
nonce?: string;
}
export interface GatewayRequestGuildMembersDataWithUserIds extends GatewayRequestGuildMembersDataBase {
/**
* Used to specify which users you wish to fetch
*/
user_ids: Snowflake | Snowflake[];
}
export interface GatewayRequestGuildMembersDataWithQuery extends GatewayRequestGuildMembersDataBase {
/**
* String that username starts with, or an empty string to return all members
*/
query: string;
/**
* Maximum number of members to send matching the `query`;
* a limit of `0` can be used with an empty string `query` to return all members
*/
limit: number;
}
/**
* https://discord.com/developers/docs/topics/gateway#request-guild-members
*/
export type GatewayRequestGuildMembersData =
| GatewayRequestGuildMembersDataWithUserIds
| GatewayRequestGuildMembersDataWithQuery;
/**
* https://discord.com/developers/docs/topics/gateway#update-voice-state
*/

View File

@@ -273,6 +273,7 @@ export type GatewayDispatchPayload =
| GatewayChannelModifyDispatch
| GatewayChannelPinsUpdateDispatch
| GatewayGuildBanModifyDispatch
| GatewayGuildCreateDispatch
| GatewayGuildDeleteDispatch
| GatewayGuildEmojisUpdateDispatch
| GatewayGuildIntegrationsUpdateDispatch
@@ -407,6 +408,10 @@ export interface GatewayReadyDispatchData {
* Used for resuming connections
*/
session_id: string;
/**
* Gateway url for resuming connections
*/
resume_gateway_url: string;
/**
* The shard information associated with this session, if sent when identifying
*
@@ -531,6 +536,10 @@ export interface GatewayGuildCreateDispatchData extends APIGuild {
* **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event**
*/
large: boolean;
/**
* `true` if this guild is unavailable due to an outage
*/
unavailable?: boolean;
/**
* Total number of members in this guild
*
@@ -815,11 +824,11 @@ export interface GatewayGuildMembersChunkDispatchData {
/**
* The chunk index in the expected chunks for this response (`0 <= chunk_index < chunk_count`)
*/
chunk_index?: number;
chunk_index: number;
/**
* The total number of expected chunks for this response
*/
chunk_count?: number;
chunk_count: number;
/**
* If passing an invalid id to `REQUEST_GUILD_MEMBERS`, it will be returned here
*/
@@ -1123,7 +1132,7 @@ export type GatewayMessageCreateDispatch = DataPayload<
/**
* https://discord.com/developers/docs/topics/gateway#message-create
*/
export type GatewayMessageCreateDispatchData = APIMessage;
export type GatewayMessageCreateDispatchData = Omit<APIMessage, 'mentions'> & GatewayMessageEventExtraFields;
/**
* https://discord.com/developers/docs/topics/gateway#message-update
@@ -1136,10 +1145,43 @@ export type GatewayMessageUpdateDispatch = DataPayload<
/**
* https://discord.com/developers/docs/topics/gateway#message-update
*/
export type GatewayMessageUpdateDispatchData = {
id: Snowflake;
channel_id: Snowflake;
} & Partial<APIMessage>;
export type GatewayMessageUpdateDispatchData = Omit<Partial<APIMessage>, 'mentions'> &
GatewayMessageEventExtraFields & {
/**
* ID of the message
*/
id: Snowflake;
/**
* ID of the channel the message was sent in
*/
channel_id: Snowflake;
};
export interface GatewayMessageEventExtraFields {
/**
* ID of the guild the message was sent in
*/
guild_id?: Snowflake;
/**
* Member properties for this message's author
*
* The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
member?: APIGuildMember;
/**
* Users specifically mentioned in the message
*
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/user#user-object
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
}
/**
* https://discord.com/developers/docs/topics/gateway#message-delete
@@ -1567,15 +1609,15 @@ export interface GatewayIdentifyProperties {
/**
* Your operating system
*/
$os: string;
os: string;
/**
* Your library name
*/
$browser: string;
browser: string;
/**
* Your library name
*/
$device: string;
device: string;
}
/**
@@ -1612,31 +1654,15 @@ export interface GatewayRequestGuildMembers {
d: GatewayRequestGuildMembersData;
}
/**
* https://discord.com/developers/docs/topics/gateway#request-guild-members
*/
export interface GatewayRequestGuildMembersData {
export interface GatewayRequestGuildMembersDataBase {
/**
* ID of the guild to get members for
*/
guild_id: Snowflake;
/**
* String that username starts with, or an empty string to return all members
*/
query?: string;
/**
* Maximum number of members to send matching the `query`;
* a limit of `0` can be used with an empty string `query` to return all members
*/
limit: number;
/**
* Used to specify if we want the presences of the matched members
*/
presences?: boolean;
/**
* Used to specify which users you wish to fetch
*/
user_ids?: Snowflake | Snowflake[];
/**
* Nonce to identify the Guild Members Chunk response
*
@@ -1647,6 +1673,32 @@ export interface GatewayRequestGuildMembersData {
nonce?: string;
}
export interface GatewayRequestGuildMembersDataWithUserIds extends GatewayRequestGuildMembersDataBase {
/**
* Used to specify which users you wish to fetch
*/
user_ids: Snowflake | Snowflake[];
}
export interface GatewayRequestGuildMembersDataWithQuery extends GatewayRequestGuildMembersDataBase {
/**
* String that username starts with, or an empty string to return all members
*/
query: string;
/**
* Maximum number of members to send matching the `query`;
* a limit of `0` can be used with an empty string `query` to return all members
*/
limit: number;
}
/**
* https://discord.com/developers/docs/topics/gateway#request-guild-members
*/
export type GatewayRequestGuildMembersData =
| GatewayRequestGuildMembersDataWithUserIds
| GatewayRequestGuildMembersDataWithQuery;
/**
* https://discord.com/developers/docs/topics/gateway#update-voice-state
*/

View File

@@ -45,6 +45,13 @@ export const FormattingPatterns = {
* The `id` group property is present on the `exec` result of this expression
*/
Role: /<@&(?<id>\d{17,20})>/,
/**
* Regular expression for matching a application command mention
*
* The `fullName` (possibly including `name`, `subcommandOrGroup` and `subcommand`) and `id` group properties are present on the `exec` result of this expression
*/
SlashCommand:
/<\/(?<fullName>(?<name>[\w-]{1,32})(?: (?<subcommandOrGroup>[\w-]{1,32}))?(?: (?<subcommand>[\w-]{1,32}))?):(?<id>\d{17,20})>/,
/**
* Regular expression for matching a custom emoji, either static or animated
*

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "discord-api-types",
"version": "0.33.2",
"version": "0.37.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "discord-api-types",
"version": "0.33.2",
"version": "0.37.5",
"license": "MIT",
"devDependencies": {
"@babel/runtime-corejs3": "^7.18.0",

View File

@@ -1,7 +1,8 @@
{
"name": "discord-api-types",
"version": "0.33.2",
"version": "0.37.5",
"description": "Discord API typings that are kept up to date for use in bot library creation.",
"homepage": "https://discord-api-types.dev",
"exports": {
"./globals": {
"require": "./globals.js",

View File

@@ -58,3 +58,23 @@ export const PermissionFlagsBits = {
Object.freeze(PermissionFlagsBits);
export type LocalizationMap = Partial<Record<LocaleString, string | null>>;
/**
* https://discord.com/developers/docs/topics/opcodes-and-status-codes#json
*/
export interface RESTError {
code: number;
message: string;
errors?: RESTErrorData;
}
export interface RESTErrorFieldInformation {
code: string;
message: string;
}
export interface RESTErrorGroupWrapper {
_errors: RESTErrorData[];
}
export type RESTErrorData = RESTErrorGroupWrapper | RESTErrorFieldInformation | { [k: string]: RESTErrorData } | string;

View File

@@ -12,7 +12,7 @@ interface APIApplicationCommandIntegerOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -12,7 +12,7 @@ interface APIApplicationCommandNumberOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -5,8 +5,20 @@ import type {
} from './base';
import type { APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from './shared';
interface APIApplicationCommandStringOptionBase
extends APIApplicationCommandOptionBase<ApplicationCommandOptionType.String> {
/**
* For option type `STRING`, the minimum allowed length (minimum of `0`, maximum of `6000`).
*/
min_length?: number;
/**
* For option type `STRING`, the maximum allowed length (minimum of `1`, maximum of `6000`).
*/
max_length?: number;
}
export type APIApplicationCommandStringOption = APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper<
APIApplicationCommandOptionBase<ApplicationCommandOptionType.String>,
APIApplicationCommandStringOptionBase,
APIApplicationCommandOptionChoice<string>
>;

View File

@@ -54,6 +54,7 @@ import type {
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
export * from './_chatInput/attachment';
export * from './_chatInput/base';
export * from './_chatInput/boolean';
export * from './_chatInput/channel';
export * from './_chatInput/integer';
@@ -108,7 +109,7 @@ export type APIApplicationCommandInteractionDataBasicOption =
| APIApplicationCommandInteractionDataAttachmentOption;
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIChatInputApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {

View File

@@ -10,7 +10,7 @@ import type {
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIUserApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.User> {
@@ -27,7 +27,7 @@ export interface APIUserApplicationCommandInteractionDataResolved {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIMessageApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.Message> {
@@ -43,7 +43,7 @@ export interface APIMessageApplicationCommandInteractionDataResolved {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export type APIContextMenuInteractionData =
| APIUserApplicationCommandInteractionData

View File

@@ -101,7 +101,7 @@ export enum ApplicationCommandType {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export type APIApplicationCommandInteractionData =
| APIChatInputApplicationCommandInteractionData

View File

@@ -31,7 +31,7 @@ export interface APIMessageInteraction {
*/
type: InteractionType;
/**
* The name of the ApplicationCommand
* The name of the application command, including subcommands and subcommand groups
*/
name: string;
/**
@@ -104,6 +104,10 @@ export interface APIBaseInteraction<Type extends InteractionType, Data> {
* For components, the message they were attached to
*/
message?: APIMessage;
/**
* Bitwise set of permissions the app or bot has within the channel the interaction was sent from
*/
app_permissions?: Permissions;
/**
* The selected language of the invoking user
*/

View File

@@ -62,7 +62,7 @@ export interface APIApplication {
/**
* The hexadecimal encoded key for verification in interactions and the GameSDK's GetTicket function
*
* See https://discord.com/developers/docs/game-sdk/applications#get-ticket
* See https://discord.com/developers/docs/game-sdk/applications#getticket
*/
verify_key: string;
/**

View File

@@ -4,7 +4,6 @@
import type { APIApplication } from './application';
import type { APIPartialEmoji } from './emoji';
import type { APIGuildMember } from './guild';
import type { APIMessageInteraction } from './interactions';
import type { APIRole } from './permissions';
import type { APISticker, APIStickerItem } from './sticker';
@@ -40,7 +39,6 @@ export interface APIChannelBase<T extends ChannelType> extends APIPartialChannel
flags?: ChannelFlags;
}
// TODO: update when text in voice is released
export type TextChannelType =
| ChannelType.DM
| ChannelType.GroupDM
@@ -49,7 +47,8 @@ export type TextChannelType =
| ChannelType.GuildPrivateThread
| ChannelType.GuildNewsThread
| ChannelType.GuildText
| ChannelType.GuildForum;
| ChannelType.GuildForum
| ChannelType.GuildVoice;
export type GuildChannelType = Exclude<
TextChannelType | ChannelType.GuildVoice | ChannelType.GuildStageVoice | ChannelType.GuildNews,
@@ -61,6 +60,16 @@ export interface APITextBasedChannel<T extends ChannelType> extends APIChannelBa
* The id of the last message sent in this channel (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
/**
* 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_CHANNELS`, are unaffected
*
* `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.
*
* For thread channels, `rate_limit_per_user` is only returned if the field is set to a non-zero and non-null value.
* The absence of this field in API calls and Gateway events should indicate that slowmode has been reset to the default value.
*/
rate_limit_per_user?: number;
}
export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T> {
@@ -112,23 +121,11 @@ export interface APIGuildTextChannel<T extends GuildTextChannelType>
last_pin_timestamp?: string | null;
}
export interface APITextChannel extends APIGuildTextChannel<ChannelType.GuildText> {
/**
* 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_CHANNELS`, are unaffected
*
* `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.
*
* For thread channels, `rate_limit_per_user` is only returned if the field is set to a non-zero and non-null value.
* The absence of this field in API calls and Gateway events should indicate that slowmode has been reset to the default value.
*/
rate_limit_per_user?: number;
}
export type APITextChannel = APIGuildTextChannel<ChannelType.GuildText>;
export type APINewsChannel = APIGuildTextChannel<ChannelType.GuildNews>;
export type APIGuildCategoryChannel = APIGuildChannel<ChannelType.GuildCategory>;
export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageVoice | ChannelType.GuildVoice> {
export interface APIVoiceChannelBase<T extends ChannelType> extends APIGuildChannel<T> {
/**
* The bitrate (in bits) of the voice channel
*/
@@ -143,6 +140,11 @@ export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageV
* See https://discord.com/developers/docs/resources/voice#voice-region-object
*/
rtc_region?: string | null;
}
export interface APIGuildVoiceChannel
extends APIVoiceChannelBase<ChannelType.GuildVoice>,
APITextBasedChannel<ChannelType.GuildVoice> {
/**
* The camera video quality mode of the voice channel, `1` when not present
*
@@ -151,7 +153,9 @@ export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageV
video_quality_mode?: VideoQualityMode;
}
interface APIDMChannelBase<T extends ChannelType> extends APITextBasedChannel<T> {
export type APIGuildStageVoiceChannel = APIVoiceChannelBase<ChannelType.GuildStageVoice>;
export interface APIDMChannelBase<T extends ChannelType> extends Omit<APITextBasedChannel<T>, 'rate_limit_per_user'> {
/**
* The recipients of the DM
*
@@ -198,7 +202,9 @@ export interface APIThreadChannel
*/
thread_metadata?: APIThreadMetadata;
/**
* The approximate message count of the thread, does not count above 50 even if there are more messages
* Number of messages (not including the initial message or deleted messages) in a thread
*
* If the thread was created before July 1, 2022, it stops counting at 50 messages
*/
message_count?: number;
/**
@@ -223,6 +229,12 @@ export interface APIThreadChannel
* The id of the last message sent in this thread (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
/**
* Number of messages ever sent in a thread
*
* Similar to `message_count` on message creation, but won't decrement when a message is deleted
*/
total_message_sent?: number;
}
export type APIGuildForumChannel = APIGuildTextChannel<ChannelType.GuildForum>;
@@ -235,7 +247,8 @@ export type APIChannel =
| APIDMChannel
| APITextChannel
| APINewsChannel
| APIVoiceChannel
| APIGuildVoiceChannel
| APIGuildStageVoiceChannel
| APIGuildCategoryChannel
| APIThreadChannel
| APINewsChannel
@@ -326,10 +339,6 @@ export interface APIMessage {
* ID of the channel the message was sent in
*/
channel_id: Snowflake;
/**
* ID of the guild the message was sent in
*/
guild_id?: Snowflake;
/**
* The author of this message (only a valid user in the case where the message is generated by a user or bot user)
*
@@ -339,17 +348,15 @@ export interface APIMessage {
* See https://discord.com/developers/docs/resources/user#user-object
*/
author: APIUser;
/**
* Member properties for this message's author
*
* The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
member?: APIGuildMember;
/**
* Contents of the message
*
* The `MESSAGE_CONTENT` privileged gateway intent is required for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**.
* You also need to specify the intent bit value (`1 << 15`) if you are connecting to the gateway
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
content: string;
/**
@@ -377,7 +384,7 @@ export interface APIMessage {
* See https://discord.com/developers/docs/resources/user#user-object
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
mentions: APIUser[];
/**
* Roles specifically mentioned in this message
*
@@ -400,12 +407,26 @@ export interface APIMessage {
* Any attached files
*
* See https://discord.com/developers/docs/resources/channel#attachment-object
*
* The `MESSAGE_CONTENT` privileged gateway intent is required for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**.
* You also need to specify the intent bit value (`1 << 15`) if you are connecting to the gateway
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
attachments: APIAttachment[];
/**
* Any embedded content
*
* See https://discord.com/developers/docs/resources/channel#embed-object
*
* The `MESSAGE_CONTENT` privileged gateway intent is required for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**.
* You also need to specify the intent bit value (`1 << 15`) if you are connecting to the gateway
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
embeds: APIEmbed[];
/**
@@ -444,7 +465,7 @@ export interface APIMessage {
/**
* Sent with Rich Presence-related chat embeds
*
* See https://discord.com/developers/docs/resources/channel#message-object-message-application-structure
* See https://discord.com/developers/docs/resources/application#application-object
*/
application?: Partial<APIApplication>;
/**
@@ -489,6 +510,13 @@ export interface APIMessage {
thread?: APIChannel;
/**
* Sent if the message contains components like buttons, action rows, or other interactive components
*
* The `MESSAGE_CONTENT` privileged gateway intent is required for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**.
* You also need to specify the intent bit value (`1 << 15`) if you are connecting to the gateway
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
components?: APIActionRowComponent<APIMessageActionRowComponent>[];
/**
@@ -504,6 +532,12 @@ export interface APIMessage {
* @deprecated Use `sticker_items` instead
*/
stickers?: APISticker[];
/**
* A generally increasing integer (there may be gaps or duplicates) that represents the approximate position of the message in a thread
*
* It can be used to estimate the relative position of the message in a thread in company with `total_message_sent` on parent thread
*/
position?: number;
}
/**
@@ -517,11 +551,11 @@ export enum MessageType {
ChannelNameChange,
ChannelIconChange,
ChannelPinnedMessage,
GuildMemberJoin,
UserPremiumGuildSubscription,
UserPremiumGuildSubscriptionTier1,
UserPremiumGuildSubscriptionTier2,
UserPremiumGuildSubscriptionTier3,
UserJoin,
GuildBoost,
GuildBoostTier1,
GuildBoostTier2,
GuildBoostTier3,
ChannelFollowAdd,
GuildDiscoveryDisqualified = 14,
GuildDiscoveryRequalified,
@@ -917,6 +951,10 @@ export interface APIEmbedVideo {
* Source url of video
*/
url?: string;
/**
* A proxied url of the video
*/
proxy_url?: string;
/**
* Height of video
*/
@@ -1156,7 +1194,7 @@ export interface APIBaseComponent<T extends ComponentType> {
}
/**
* https://discord.com/developers/docs/interactions/message-components#component-types
* https://discord.com/developers/docs/interactions/message-components#component-object-component-types
*/
export enum ComponentType {
/**

View File

@@ -69,10 +69,6 @@ export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'
* The vanity url code for the guild
*/
vanity_url_code?: string | null;
/**
* `true` if this guild is unavailable due to an outage
*/
unavailable?: boolean;
}
/**
@@ -389,10 +385,6 @@ export enum GuildFeature {
* Guild has access to set a guild banner image
*/
Banner = 'BANNER',
/**
* Guild has access to use commerce features (i.e. create store channels)
*/
Commerce = 'COMMERCE',
/**
* Guild can enable welcome screen, Membership Screening and discovery, and receives community updates
*/
@@ -413,6 +405,8 @@ export enum GuildFeature {
* Guild is a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
Hub = 'HUB',
/**
@@ -423,6 +417,8 @@ export enum GuildFeature {
* Guild is in a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
LinkedToHub = 'LINKED_TO_HUB',
/**
@@ -773,7 +769,7 @@ export interface APIBan {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object
*/
export interface APIGuildWidget {
id: Snowflake;
@@ -785,7 +781,7 @@ export interface APIGuildWidget {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
*/
export interface APIGuildWidgetChannel {
id: Snowflake;
@@ -794,7 +790,7 @@ export interface APIGuildWidgetChannel {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
*/
export interface APIGuildWidgetMember {
id: string;

View File

@@ -53,7 +53,7 @@ export interface APIInvite {
/**
* The type of target for this voice channel invite
*
* See https://discord.com/developers/docs/resources/invite#invite-object-target-user-types
* See https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types
*/
target_type?: InviteTargetType;
/**
@@ -65,7 +65,7 @@ export interface APIInvite {
/**
* The embedded application to open for this voice channel embedded application invite
*
* See https://discord.com/developers/docs/topics/oauth2#application
* See https://discord.com/developers/docs/resources/application#application-object
*/
target_application?: Partial<APIApplication>;
/**

View File

@@ -32,7 +32,7 @@ export interface APITeam {
}
/**
* https://discord.com/developers/docs/topics/teams#data-models-team-members-object
* https://discord.com/developers/docs/topics/teams#data-models-team-member-object
*/
export interface APITeamMember {
/**

View File

@@ -1,5 +1,5 @@
/**
* Types extracted from https://discord.com/developers/docs/resources/template
* Types extracted from https://discord.com/developers/docs/resources/guild-template
*/
import type { APIUser } from './user';
@@ -7,7 +7,7 @@ import type { Snowflake } from '../../globals';
import type { RESTPostAPIGuildsJSONBody } from '../../rest/v10/index';
/**
* https://discord.com/developers/docs/resources/template#template-object
* https://discord.com/developers/docs/resources/guild-template#guild-template-object
*/
export interface APITemplate {
/**

View File

@@ -143,8 +143,16 @@ export enum UserFlags {
BotHTTPInteractions = 1 << 19,
/**
* User has been identified as spammer
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Quarantined = Math.pow(2, 44),
}
/**
@@ -170,8 +178,10 @@ export interface APIConnection {
name: string;
/**
* The service of the connection
*
* See https://discord.com/developers/docs/resources/user#connection-object-services
*/
type: string;
type: ConnectionService;
/**
* Whether the connection is revoked
*/
@@ -202,6 +212,24 @@ export interface APIConnection {
visibility: ConnectionVisibility;
}
export enum ConnectionService {
BattleNet = 'battlenet',
EpicGames = 'epicgames',
Facebook = 'facebook',
GitHub = 'github',
LeagueOfLegends = 'leagueoflegends',
PlayStationNetwork = 'playstation',
Reddit = 'reddit',
SamsungGalaxy = 'samsunggalaxy',
Spotify = 'spotify',
Skype = 'skype',
Steam = 'steam',
Twitch = 'twitch',
Twitter = 'twitter',
Xbox = 'xbox',
YouTube = 'youtube',
}
export enum ConnectionVisibility {
/**
* Invisible to everyone except the user themselves

View File

@@ -15,7 +15,7 @@ interface APIApplicationCommandIntegerOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -15,7 +15,7 @@ interface APIApplicationCommandNumberOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -145,8 +145,16 @@ export enum UserFlags {
BotHTTPInteractions = 1 << 19,
/**
* User has been identified as spammer
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Quarantined = Math.pow(2, 44),
}
/**

View File

@@ -12,7 +12,7 @@ interface APIApplicationCommandIntegerOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -12,7 +12,7 @@ interface APIApplicationCommandNumberOptionBase
*/
min_value?: number;
/**
* If the option is an `INTEGER` or `NUMBER` type, the minimum value permitted.
* If the option is an `INTEGER` or `NUMBER` type, the maximum value permitted.
*/
max_value?: number;
}

View File

@@ -5,8 +5,20 @@ import type {
} from './base';
import type { APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from './shared';
interface APIApplicationCommandStringOptionBase
extends APIApplicationCommandOptionBase<ApplicationCommandOptionType.String> {
/**
* For option type `STRING`, the minimum allowed length (minimum of `0`, maximum of `6000`).
*/
min_length?: number;
/**
* For option type `STRING`, the maximum allowed length (minimum of `1`, maximum of `6000`).
*/
max_length?: number;
}
export type APIApplicationCommandStringOption = APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper<
APIApplicationCommandOptionBase<ApplicationCommandOptionType.String>,
APIApplicationCommandStringOptionBase,
APIApplicationCommandOptionChoice<string>
>;

View File

@@ -54,6 +54,7 @@ import type {
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
export * from './_chatInput/attachment';
export * from './_chatInput/base';
export * from './_chatInput/boolean';
export * from './_chatInput/channel';
export * from './_chatInput/integer';
@@ -108,7 +109,7 @@ export type APIApplicationCommandInteractionDataBasicOption =
| APIApplicationCommandInteractionDataAttachmentOption;
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIChatInputApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {

View File

@@ -10,7 +10,7 @@ import type {
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIUserApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.User> {
@@ -27,7 +27,7 @@ export interface APIUserApplicationCommandInteractionDataResolved {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export interface APIMessageApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.Message> {
@@ -43,7 +43,7 @@ export interface APIMessageApplicationCommandInteractionDataResolved {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export type APIContextMenuInteractionData =
| APIUserApplicationCommandInteractionData

View File

@@ -101,7 +101,7 @@ export enum ApplicationCommandType {
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
*/
export type APIApplicationCommandInteractionData =
| APIChatInputApplicationCommandInteractionData

View File

@@ -31,7 +31,7 @@ export interface APIMessageInteraction {
*/
type: InteractionType;
/**
* The name of the ApplicationCommand
* The name of the application command, including subcommands and subcommand groups
*/
name: string;
/**
@@ -104,6 +104,10 @@ export interface APIBaseInteraction<Type extends InteractionType, Data> {
* For components, the message they were attached to
*/
message?: APIMessage;
/**
* Bitwise set of permissions the app or bot has within the channel the interaction was sent from
*/
app_permissions?: Permissions;
/**
* The selected language of the invoking user
*/

View File

@@ -62,7 +62,7 @@ export interface APIApplication {
/**
* The hexadecimal encoded key for verification in interactions and the GameSDK's GetTicket function
*
* See https://discord.com/developers/docs/game-sdk/applications#get-ticket
* See https://discord.com/developers/docs/game-sdk/applications#getticket
*/
verify_key: string;
/**

View File

@@ -4,7 +4,6 @@
import type { APIApplication } from './application';
import type { APIPartialEmoji } from './emoji';
import type { APIGuildMember } from './guild';
import type { APIMessageInteraction } from './interactions';
import type { APIRole } from './permissions';
import type { APISticker, APIStickerItem } from './sticker';
@@ -40,7 +39,6 @@ export interface APIChannelBase<T extends ChannelType> extends APIPartialChannel
flags?: ChannelFlags;
}
// TODO: update when text in voice is released
export type TextChannelType =
| ChannelType.DM
| ChannelType.GroupDM
@@ -49,7 +47,8 @@ export type TextChannelType =
| ChannelType.GuildPrivateThread
| ChannelType.GuildNewsThread
| ChannelType.GuildText
| ChannelType.GuildForum;
| ChannelType.GuildForum
| ChannelType.GuildVoice;
export type GuildChannelType = Exclude<
TextChannelType | ChannelType.GuildVoice | ChannelType.GuildStageVoice | ChannelType.GuildNews,
@@ -61,6 +60,16 @@ export interface APITextBasedChannel<T extends ChannelType> extends APIChannelBa
* The id of the last message sent in this channel (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
/**
* 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_CHANNELS`, are unaffected
*
* `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.
*
* For thread channels, `rate_limit_per_user` is only returned if the field is set to a non-zero and non-null value.
* The absence of this field in API calls and Gateway events should indicate that slowmode has been reset to the default value.
*/
rate_limit_per_user?: number;
}
export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T> {
@@ -112,23 +121,11 @@ export interface APIGuildTextChannel<T extends GuildTextChannelType>
last_pin_timestamp?: string | null;
}
export interface APITextChannel extends APIGuildTextChannel<ChannelType.GuildText> {
/**
* 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_CHANNELS`, are unaffected
*
* `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.
*
* For thread channels, `rate_limit_per_user` is only returned if the field is set to a non-zero and non-null value.
* The absence of this field in API calls and Gateway events should indicate that slowmode has been reset to the default value.
*/
rate_limit_per_user?: number;
}
export type APITextChannel = APIGuildTextChannel<ChannelType.GuildText>;
export type APINewsChannel = APIGuildTextChannel<ChannelType.GuildNews>;
export type APIGuildCategoryChannel = APIGuildChannel<ChannelType.GuildCategory>;
export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageVoice | ChannelType.GuildVoice> {
export interface APIVoiceChannelBase<T extends ChannelType> extends APIGuildChannel<T> {
/**
* The bitrate (in bits) of the voice channel
*/
@@ -143,6 +140,11 @@ export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageV
* See https://discord.com/developers/docs/resources/voice#voice-region-object
*/
rtc_region?: string | null;
}
export interface APIGuildVoiceChannel
extends APIVoiceChannelBase<ChannelType.GuildVoice>,
APITextBasedChannel<ChannelType.GuildVoice> {
/**
* The camera video quality mode of the voice channel, `1` when not present
*
@@ -151,7 +153,9 @@ export interface APIVoiceChannel extends APIGuildChannel<ChannelType.GuildStageV
video_quality_mode?: VideoQualityMode;
}
interface APIDMChannelBase<T extends ChannelType> extends APITextBasedChannel<T> {
export type APIGuildStageVoiceChannel = APIVoiceChannelBase<ChannelType.GuildStageVoice>;
export interface APIDMChannelBase<T extends ChannelType> extends Omit<APITextBasedChannel<T>, 'rate_limit_per_user'> {
/**
* The recipients of the DM
*
@@ -198,7 +202,9 @@ export interface APIThreadChannel
*/
thread_metadata?: APIThreadMetadata;
/**
* The approximate message count of the thread, does not count above 50 even if there are more messages
* Number of messages (not including the initial message or deleted messages) in a thread
*
* If the thread was created before July 1, 2022, it stops counting at 50 messages
*/
message_count?: number;
/**
@@ -223,6 +229,12 @@ export interface APIThreadChannel
* The id of the last message sent in this thread (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
/**
* Number of messages ever sent in a thread
*
* Similar to `message_count` on message creation, but won't decrement when a message is deleted
*/
total_message_sent?: number;
}
export type APIGuildForumChannel = APIGuildTextChannel<ChannelType.GuildForum>;
@@ -235,7 +247,8 @@ export type APIChannel =
| APIDMChannel
| APITextChannel
| APINewsChannel
| APIVoiceChannel
| APIGuildVoiceChannel
| APIGuildStageVoiceChannel
| APIGuildCategoryChannel
| APIThreadChannel
| APINewsChannel
@@ -326,10 +339,6 @@ export interface APIMessage {
* ID of the channel the message was sent in
*/
channel_id: Snowflake;
/**
* ID of the guild the message was sent in
*/
guild_id?: Snowflake;
/**
* The author of this message (only a valid user in the case where the message is generated by a user or bot user)
*
@@ -339,17 +348,14 @@ export interface APIMessage {
* See https://discord.com/developers/docs/resources/user#user-object
*/
author: APIUser;
/**
* Member properties for this message's author
*
* The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
member?: APIGuildMember;
/**
* Contents of the message
*
* The `MESSAGE_CONTENT` privileged gateway intent will become required after **August 31, 2022** for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
content: string;
/**
@@ -377,7 +383,7 @@ export interface APIMessage {
* See https://discord.com/developers/docs/resources/user#user-object
* See https://discord.com/developers/docs/resources/guild#guild-member-object
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
mentions: APIUser[];
/**
* Roles specifically mentioned in this message
*
@@ -400,12 +406,24 @@ export interface APIMessage {
* Any attached files
*
* See https://discord.com/developers/docs/resources/channel#attachment-object
*
* The `MESSAGE_CONTENT` privileged gateway intent will become required after **August 31, 2022** for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
attachments: APIAttachment[];
/**
* Any embedded content
*
* See https://discord.com/developers/docs/resources/channel#embed-object
*
* The `MESSAGE_CONTENT` privileged gateway intent will become required after **August 31, 2022** for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
embeds: APIEmbed[];
/**
@@ -444,7 +462,7 @@ export interface APIMessage {
/**
* Sent with Rich Presence-related chat embeds
*
* See https://discord.com/developers/docs/resources/channel#message-object-message-application-structure
* See https://discord.com/developers/docs/resources/application#application-object
*/
application?: Partial<APIApplication>;
/**
@@ -489,6 +507,12 @@ export interface APIMessage {
thread?: APIChannel;
/**
* Sent if the message contains components like buttons, action rows, or other interactive components
*
* The `MESSAGE_CONTENT` privileged gateway intent will become required after **August 31, 2022** for verified applications to receive a non-empty value from this field
*
* In the Discord Developers Portal, you need to enable the toggle of this intent of your application in **Bot > Privileged Gateway Intents**
*
* See https://support-dev.discord.com/hc/en-us/articles/4404772028055
*/
components?: APIActionRowComponent<APIMessageActionRowComponent>[];
/**
@@ -504,6 +528,12 @@ export interface APIMessage {
* @deprecated Use `sticker_items` instead
*/
stickers?: APISticker[];
/**
* A generally increasing integer (there may be gaps or duplicates) that represents the approximate position of the message in a thread
*
* It can be used to estimate the relative position of the message in a thread in company with `total_message_sent` on parent thread
*/
position?: number;
}
/**
@@ -517,11 +547,11 @@ export enum MessageType {
ChannelNameChange,
ChannelIconChange,
ChannelPinnedMessage,
GuildMemberJoin,
UserPremiumGuildSubscription,
UserPremiumGuildSubscriptionTier1,
UserPremiumGuildSubscriptionTier2,
UserPremiumGuildSubscriptionTier3,
UserJoin,
GuildBoost,
GuildBoostTier1,
GuildBoostTier2,
GuildBoostTier3,
ChannelFollowAdd,
GuildDiscoveryDisqualified = 14,
GuildDiscoveryRequalified,
@@ -921,6 +951,10 @@ export interface APIEmbedVideo {
* Source url of video
*/
url?: string;
/**
* A proxied url of the video
*/
proxy_url?: string;
/**
* Height of video
*/
@@ -1160,7 +1194,7 @@ export interface APIBaseComponent<T extends ComponentType> {
}
/**
* https://discord.com/developers/docs/interactions/message-components#component-types
* https://discord.com/developers/docs/interactions/message-components#component-object-component-types
*/
export enum ComponentType {
/**

View File

@@ -69,10 +69,6 @@ export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'
* The vanity url code for the guild
*/
vanity_url_code?: string | null;
/**
* `true` if this guild is unavailable due to an outage
*/
unavailable?: boolean;
}
/**
@@ -389,10 +385,6 @@ export enum GuildFeature {
* Guild has access to set a guild banner image
*/
Banner = 'BANNER',
/**
* Guild has access to use commerce features (i.e. create store channels)
*/
Commerce = 'COMMERCE',
/**
* Guild can enable welcome screen, Membership Screening and discovery, and receives community updates
*/
@@ -413,6 +405,8 @@ export enum GuildFeature {
* Guild is a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
Hub = 'HUB',
/**
@@ -423,6 +417,8 @@ export enum GuildFeature {
* Guild is in a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
LinkedToHub = 'LINKED_TO_HUB',
/**
@@ -773,7 +769,7 @@ export interface APIBan {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object
*/
export interface APIGuildWidget {
id: Snowflake;
@@ -785,7 +781,7 @@ export interface APIGuildWidget {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
*/
export interface APIGuildWidgetChannel {
id: Snowflake;
@@ -794,7 +790,7 @@ export interface APIGuildWidgetChannel {
}
/**
* https://discord.com/developers/docs/resources/guild#get-guild-widget-example-get-guild-widget
* https://discord.com/developers/docs/resources/guild#guild-widget-object-example-guild-widget
*/
export interface APIGuildWidgetMember {
id: string;

View File

@@ -53,7 +53,7 @@ export interface APIInvite {
/**
* The type of target for this voice channel invite
*
* See https://discord.com/developers/docs/resources/invite#invite-object-target-user-types
* See https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types
*/
target_type?: InviteTargetType;
/**
@@ -65,7 +65,7 @@ export interface APIInvite {
/**
* The embedded application to open for this voice channel embedded application invite
*
* See https://discord.com/developers/docs/topics/oauth2#application
* See https://discord.com/developers/docs/resources/application#application-object
*/
target_application?: Partial<APIApplication>;
/**

View File

@@ -32,7 +32,7 @@ export interface APITeam {
}
/**
* https://discord.com/developers/docs/topics/teams#data-models-team-members-object
* https://discord.com/developers/docs/topics/teams#data-models-team-member-object
*/
export interface APITeamMember {
/**

View File

@@ -1,5 +1,5 @@
/**
* Types extracted from https://discord.com/developers/docs/resources/template
* Types extracted from https://discord.com/developers/docs/resources/guild-template
*/
import type { APIUser } from './user';
@@ -7,7 +7,7 @@ import type { Snowflake } from '../../globals';
import type { RESTPostAPIGuildsJSONBody } from '../../rest/v9/index';
/**
* https://discord.com/developers/docs/resources/template#template-object
* https://discord.com/developers/docs/resources/guild-template#template-object
*/
export interface APITemplate {
/**

View File

@@ -143,8 +143,16 @@ export enum UserFlags {
BotHTTPInteractions = 1 << 19,
/**
* User has been identified as spammer
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
*
* @unstable This user flag is currently not documented by Discord but has a known value which we will try to keep up to date.
*/
Quarantined = Math.pow(2, 44),
}
/**
@@ -170,8 +178,10 @@ export interface APIConnection {
name: string;
/**
* The service of the connection
*
* See https://discord.com/developers/docs/resources/user#connection-object-services
*/
type: string;
type: ConnectionService;
/**
* Whether the connection is revoked
*/
@@ -202,6 +212,24 @@ export interface APIConnection {
visibility: ConnectionVisibility;
}
export enum ConnectionService {
BattleNet = 'battlenet',
EpicGames = 'epicgames',
Facebook = 'facebook',
GitHub = 'github',
LeagueOfLegends = 'leagueoflegends',
PlayStationNetwork = 'playstation',
Reddit = 'reddit',
SamsungGalaxy = 'samsunggalaxy',
Spotify = 'spotify',
Skype = 'skype',
Steam = 'steam',
Twitch = 'twitch',
Twitter = 'twitter',
Xbox = 'xbox',
YouTube = 'youtube',
}
export enum ConnectionVisibility {
/**
* Invisible to everyone except the user themselves

View File

@@ -70,6 +70,8 @@ export enum RESTJSONErrorCodes {
AnnouncementEditLimitExceeded = 20022,
UnderMinimumAge = 20024,
ChannelSendRateLimit = 20028,
ServerSendRateLimit,
@@ -99,10 +101,10 @@ export enum RESTJSONErrorCodes {
MaximumNumberOfServerCategoriesReached = 30030,
GuildAlreadyHasTemplate = 30031,
MaximumThreadParticipants = 30033,
MaximumNumberOfNonGuildMemberBansHasBeenExceeded = 30035,
MaximumNumberOfApplicationCommandsReached,
MaximumThreadParticipantsReached,
MaximumDailyApplicationCommandCreatesReached,
MaximumNumberOfNonGuildMemberBansHasBeenExceeded,
MaximumNumberOfBanFetchesHasBeenReached = 30037,
MaximumNumberOfUncompletedGuildScheduledEventsReached,
@@ -116,6 +118,8 @@ export enum RESTJSONErrorCodes {
MaximumNumberOfPinnedThreadsInForumHasBeenReached,
MaximumNumberOfTagsInForumHasBeenReached,
BitrateIsTooHighForChannelOfThisType = 30052,
Unauthorized = 40001,
VerifyYourAccount,
OpeningDirectMessagesTooFast,
@@ -124,11 +128,15 @@ export enum RESTJSONErrorCodes {
FeatureTemporarilyDisabledServerSide,
UserBannedFromThisGuild,
ConnectionHasBeenRevoked = 40012,
TargetUserIsNotConnectedToVoice = 40032,
ThisMessageWasAlreadyCrossposted,
ApplicationCommandWithThatNameAlreadyExists = 40041,
ApplicationInteractionFailedToSend = 40043,
InteractionHasAlreadyBeenAcknowledged = 40060,
TagNamesMustBeUnique,
@@ -148,6 +156,7 @@ export enum RESTJSONErrorCodes {
InvalidToken,
NoteWasTooLong,
ProvidedTooFewOrTooManyMessagesToDelete,
InvalidMFALevel,
MessageCanOnlyBePinnedInTheChannelItWasSentIn = 50019,
InviteCodeInvalidOrTaken,
@@ -195,6 +204,12 @@ export enum RESTJSONErrorCodes {
RequestBodyContainsInvalidJSON = 50109,
OwnershipCannotBeMovedToABotUser = 50132,
FailedToResizeAssetBelowTheMinimumSize = 50138,
UploadedFileNotFound = 50146,
YouDoNotHavePermissionToSendThisSticker = 50600,
TwoFactorAuthenticationIsRequired = 60003,
@@ -203,6 +218,8 @@ export enum RESTJSONErrorCodes {
ReactionWasBlocked = 90001,
ApplicationNotYetAvailable = 110001,
APIResourceOverloaded = 130000,
TheStageIsAlreadyOpen = 150006,
@@ -225,6 +242,13 @@ export enum RESTJSONErrorCodes {
CannotUpdateAFinishedEvent = 180000,
FailedToCreateStageNeededForStageEvent = 180002,
MessageWasBlockedByAutomaticModeration = 200000,
TitleWasBlockedByAutomaticModeration,
WebhooksCanOnlyCreateThreadsInForumChannels = 220003,
MessageBlockedByHarmfulLinksFilter = 240000,
}
/**

View File

@@ -64,7 +64,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
/**
* Whether the channel is nsfw
*
* Channel types: text, news
* Channel types: text, voice, news
*/
nsfw?: boolean | null;
/**
@@ -96,7 +96,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
/**
* ID of the new parent category for a channel
*
* Channel types: text, news, voice
* Channel types: text, voice, news
*/
parent_id?: Snowflake | null;
/**
@@ -665,4 +665,9 @@ export interface RESTGetAPIChannelThreadsArchivedQuery {
/**
* https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads
*/
export type RESTGetAPIChannelUsersThreadsArchivedResult = APIThreadList;
export interface RESTGetAPIChannelUsersThreadsArchivedResult extends APIThreadList {
/**
* Whether there are potentially additional threads
*/
has_more: boolean;
}

View File

@@ -20,6 +20,7 @@ import type {
GuildDefaultMessageNotifications,
GuildExplicitContentFilter,
GuildFeature,
GuildMFALevel,
GuildSystemChannelFlags,
GuildVerificationLevel,
GuildWidgetStyle,
@@ -158,6 +159,23 @@ export type RESTPostAPIGuildsJSONBody = AddUndefinedToPossiblyUndefinedPropertie
*/
export type RESTPostAPIGuildsResult = APIGuild;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export interface RESTPostAPIGuildsMFAJSONBody {
/**
* MFA level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-mfa-level
*/
level: GuildMFALevel;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export type RESTPostAPIGuildsMFAResult = RESTPostAPIGuildsMFAJSONBody;
/**
* https://discord.com/developers/docs/resources/guild#get-guild
*/
@@ -339,7 +357,7 @@ export type RESTPatchAPIGuildChannelPositionsJSONBody = Array<
export type RESTPatchAPIGuildChannelPositionsResult = never;
/**
* https://discord.com/developers/docs/resources/guild#list-active-threads
* https://discord.com/developers/docs/resources/guild#list-active-guild-threads
*/
export type RESTGetAPIGuildThreadsResult = APIThreadList;

View File

@@ -274,6 +274,14 @@ export const Routes = {
return `/guilds/${guildId}/members/${memberId}/roles/${roleId}` as const;
},
/**
* Route for:
* - POST `/guilds/{guild.id}/mfa`
*/
guildMFA(guildId: Snowflake) {
return `/guilds/${guildId}/mfa` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/bans`
@@ -836,6 +844,262 @@ export const Routes = {
},
};
export const StickerPackApplicationId = '710982414301790216';
export const CDNRoutes = {
/**
* Route for:
* - GET `/emojis/{emoji.id}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
emoji(emojiId: Snowflake, format: EmojiFormat) {
return `/emojis/${emojiId}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/icons/{guild.id}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildIcon(guildId: Snowflake, guildIcon: string, format: GuildIconFormat) {
return `icons/${guildId}/${guildIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/splashes/{guild.id}/{guild.splash}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildSplash(guildId: Snowflake, guildSplash: string, format: GuildSplashFormat) {
return `/splashes/${guildId}/${guildSplash}.${format}` as const;
},
/**
* Route for:
* - GET `/discovery-splashes/{guild.id}/{guild.discovery_splash}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildDiscoverySplash(guildId: Snowflake, guildDiscoverySplash: string, format: GuildDiscoverySplashFormat) {
return `/discovery-splashes/${guildId}/${guildDiscoverySplash}.${format}` as const;
},
/**
* Route for:
* - GET `/banners/{guild.id}/{guild.banner}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildBanner(guildId: Snowflake, guildBanner: string, format: GuildBannerFormat) {
return `/banners/${guildId}/${guildBanner}.${format}` as const;
},
/**
* Route for:
* - GET `/banners/{user.id}/{user.banner}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
userBanner(userId: Snowflake, userBanner: string, format: UserBannerFormat) {
return `/banners/${userId}/${userBanner}.${format}` as const;
},
/**
* Route for:
* - GET `/embed/avatars/{user.discriminator % 5}.png`
*
* The `userDiscriminator` parameter should be the user discriminator modulo 5 (e.g. 1337 % 5 = 2)
*
* This route supports the extension: PNG
*/
defaultUserAvatar(userDiscriminator: DefaultUserAvatarAssets) {
return `/embed/avatars/${userDiscriminator}.png` as const;
},
/**
* Route for:
* - GET `/avatars/{user.id}/{user.avatar}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
userAvatar(userId: Snowflake, userAvatar: string, format: UserAvatarFormat) {
return `/avatars/${userId}/${userAvatar}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/users/{user.id}/{guild_member.avatar}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildMemberAvatar(guildId: Snowflake, userId: Snowflake, memberAvatar: string, format: GuildMemberAvatarFormat) {
return `/guilds/${guildId}/users/${userId}/avatars/${memberAvatar}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationIcon(applicationId: Snowflake, applicationIcon: string, format: ApplicationIconFormat) {
return `/app-icons/${applicationId}/${applicationIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.cover_image}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationCover(applicationId: Snowflake, applicationCoverImage: string, format: ApplicationCoverFormat) {
return `/app-icons/${applicationId}/${applicationCoverImage}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.asset_id}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationAsset(applicationId: Snowflake, applicationAssetId: string, format: ApplicationAssetFormat) {
return `/app-icons/${applicationId}/${applicationAssetId}.${format}` as const;
},
/**
* Route for:
* - GET `/app-assets/{application.id}/achievements/{achievement.id}/icons/{achievement.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
achievementIcon(
applicationId: Snowflake,
achievementId: Snowflake,
achievementIconHash: string,
format: AchievementIconFormat,
) {
return `/app-assets/${applicationId}/achievements/${achievementId}/icons/${achievementIconHash}.${format}` as const;
},
/**
* Route for:
* - GET `/app-assets/710982414301790216/store/{sticker_pack.banner.asset_id}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
stickerPackBanner(stickerPackBannerAssetId: Snowflake, format: StickerPackBannerFormat) {
return `/app-assets/${StickerPackApplicationId}/store/${stickerPackBannerAssetId}.${format}` as const;
},
/**
* Route for:
* - GET `team-icons/{team.id}/{team.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
teamIcon(teamId: Snowflake, teamIcon: string, format: TeamIconFormat) {
return `/team-icons/${teamId}/${teamIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/stickers/{sticker.id}.{png|json}`
*
* This route supports the extensions: PNG, Lottie
*/
sticker(stickerId: Snowflake, format: StickerFormat) {
return `/stickers/${stickerId}.${format}` as const;
},
/**
* Route for:
* - GET `/role-icons/{role.id}/{role.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
roleIcon(roleId: Snowflake, roleIcon: string, format: RoleIconFormat) {
return `/role-icons/${roleId}/${roleIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/guild-events/{guild_scheduled_event.id}/{guild_scheduled_event.image}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildScheduledEventCover(
guildScheduledEventId: Snowflake,
guildScheduledEventCoverImage: string,
format: GuildScheduledEventCoverFormat,
) {
return `/guild-events/${guildScheduledEventId}/${guildScheduledEventCoverImage}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/${guild.id}/users/${user.id}/banners/${guild_member.banner}.{png|jpeg|webp|gif}`
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildMemberBanner(guildId: Snowflake, userId: Snowflake, guildMemberBanner: string, format: GuildMemberBannerFormat) {
return `/guilds/${guildId}/users/${userId}/banners/${guildMemberBanner}.${format}` as const;
},
};
export type DefaultUserAvatarAssets = 0 | 1 | 2 | 3 | 4 | 5;
export type EmojiFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildIconFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildSplashFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildDiscoverySplashFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type UserBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type DefaultUserAvatar = Extract<ImageFormat, ImageFormat.PNG>;
export type UserAvatarFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildMemberAvatarFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type ApplicationIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type ApplicationCoverFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type ApplicationAssetFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type AchievementIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type StickerPackBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type TeamIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type StickerFormat = Extract<ImageFormat, ImageFormat.PNG | ImageFormat.Lottie>;
export type RoleIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildScheduledEventCoverFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildMemberBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export enum ImageFormat {
JPEG = 'jpeg',
PNG = 'png',
WebP = 'webp',
GIF = 'gif',
Lottie = 'json',
}
export interface CDNQuery {
/**
* The returned image can have the size changed by using this query parameter
*
* Image size can be any power of two between 16 and 4096
*/
size?: number;
}
export const RouteBases = {
api: `https://discord.com/api/v${APIVersion}`,
cdn: 'https://cdn.discordapp.com',

View File

@@ -129,8 +129,10 @@ export type RESTPatchAPIApplicationGuildCommandResult = Omit<APIApplicationComma
* https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands
*/
export type RESTPutAPIApplicationGuildCommandsJSONBody = (
| Omit<RESTPostAPIChatInputApplicationCommandsJSONBody, 'dm_permission'>
| Omit<RESTPostAPIContextMenuApplicationCommandsJSONBody, 'dm_permission'>
| (Omit<RESTPostAPIChatInputApplicationCommandsJSONBody, 'dm_permission'> &
Pick<Partial<APIApplicationCommand>, 'id'>)
| (Omit<RESTPostAPIContextMenuApplicationCommandsJSONBody, 'dm_permission'> &
Pick<Partial<APIApplicationCommand>, 'id'>)
)[];
/**

View File

@@ -144,6 +144,12 @@ export type RESTPostAPIWebhookWithTokenJSONBody = AddUndefinedToPossiblyUndefine
* Message flags combined as a bitfield
*/
flags?: MessageFlags;
/**
* Name of thread to create
*
* Available only if the webhook is in a forum channel and a thread is not specified in {@link RESTPostAPIWebhookWithTokenQuery.thread_id} query parameter
*/
thread_name?: string;
}>;
/**
@@ -171,6 +177,8 @@ export interface RESTPostAPIWebhookWithTokenQuery {
wait?: boolean;
/**
* Send a message to the specified thread within a webhook's channel. The thread will automatically be unarchived.
*
* Available only if the {@link RESTPostAPIWebhookWithTokenJSONBody.thread_name} JSON body property is not specified
*/
thread_id?: Snowflake;
}

View File

@@ -64,7 +64,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
/**
* Whether the channel is nsfw
*
* Channel types: text, news
* Channel types: text, voice, news
*/
nsfw?: boolean | null;
/**
@@ -96,7 +96,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
/**
* ID of the new parent category for a channel
*
* Channel types: text, news, voice
* Channel types: text, voice, news
*/
parent_id?: Snowflake | null;
/**

View File

@@ -18,6 +18,7 @@ import type {
GuildDefaultMessageNotifications,
GuildExplicitContentFilter,
GuildFeature,
GuildMFALevel,
GuildSystemChannelFlags,
GuildVerificationLevel,
GuildWidgetStyle,
@@ -158,6 +159,23 @@ export type RESTPostAPIGuildsJSONBody = AddUndefinedToPossiblyUndefinedPropertie
*/
export type RESTPostAPIGuildsResult = APIGuild;
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export interface RESTPostAPIGuildsMFAJSONBody {
/**
* MFA level
*
* See https://discord.com/developers/docs/resources/guild#guild-object-mfa-level
*/
level: GuildMFALevel;
}
/**
* https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level
*/
export type RESTPostAPIGuildsMFAResult = RESTPostAPIGuildsMFAJSONBody;
/**
* https://discord.com/developers/docs/resources/guild#get-guild
*/
@@ -339,7 +357,7 @@ export type RESTPatchAPIGuildChannelPositionsJSONBody = Array<
export type RESTPatchAPIGuildChannelPositionsResult = never;
/**
* https://discord.com/developers/docs/resources/guild#list-active-threads
* https://discord.com/developers/docs/resources/guild#list-active-guild-threads
*/
export type RESTGetAPIGuildThreadsResult = Omit<APIThreadList, 'has_more'>;

View File

@@ -274,6 +274,14 @@ export const Routes = {
return `/guilds/${guildId}/members/${memberId}/roles/${roleId}` as const;
},
/**
* Route for:
* - POST `/guilds/{guild.id}/mfa`
*/
guildMFA(guildId: Snowflake) {
return `/guilds/${guildId}/mfa` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/bans`
@@ -845,6 +853,262 @@ export const Routes = {
},
};
export const StickerPackApplicationId = '710982414301790216';
export const CDNRoutes = {
/**
* Route for:
* - GET `/emojis/{emoji.id}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
emoji(emojiId: Snowflake, format: EmojiFormat) {
return `/emojis/${emojiId}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/icons/{guild.id}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildIcon(guildId: Snowflake, guildIcon: string, format: GuildIconFormat) {
return `icons/${guildId}/${guildIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/splashes/{guild.id}/{guild.splash}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildSplash(guildId: Snowflake, guildSplash: string, format: GuildSplashFormat) {
return `/splashes/${guildId}/${guildSplash}.${format}` as const;
},
/**
* Route for:
* - GET `/discovery-splashes/{guild.id}/{guild.discovery_splash}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildDiscoverySplash(guildId: Snowflake, guildDiscoverySplash: string, format: GuildDiscoverySplashFormat) {
return `/discovery-splashes/${guildId}/${guildDiscoverySplash}.${format}` as const;
},
/**
* Route for:
* - GET `/banners/{guild.id}/{guild.banner}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildBanner(guildId: Snowflake, guildBanner: string, format: GuildBannerFormat) {
return `/banners/${guildId}/${guildBanner}.${format}` as const;
},
/**
* Route for:
* - GET `/banners/{user.id}/{user.banner}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
userBanner(userId: Snowflake, userBanner: string, format: UserBannerFormat) {
return `/banners/${userId}/${userBanner}.${format}` as const;
},
/**
* Route for:
* - GET `/embed/avatars/{user.discriminator % 5}.png`
*
* The `userDiscriminator` parameter should be the user discriminator modulo 5 (e.g. 1337 % 5 = 2)
*
* This route supports the extension: PNG
*/
defaultUserAvatar(userDiscriminator: DefaultUserAvatarAssets) {
return `/embed/avatars/${userDiscriminator}.png` as const;
},
/**
* Route for:
* - GET `/avatars/{user.id}/{user.avatar}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
userAvatar(userId: Snowflake, userAvatar: string, format: UserAvatarFormat) {
return `/avatars/${userId}/${userAvatar}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/users/{user.id}/{guild_member.avatar}.{png|jpeg|webp|gif}`
*
* As this route supports GIFs, the hash will begin with `a_` if it is available in GIF format
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildMemberAvatar(guildId: Snowflake, userId: Snowflake, memberAvatar: string, format: GuildMemberAvatarFormat) {
return `/guilds/${guildId}/users/${userId}/avatars/${memberAvatar}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationIcon(applicationId: Snowflake, applicationIcon: string, format: ApplicationIconFormat) {
return `/app-icons/${applicationId}/${applicationIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.cover_image}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationCover(applicationId: Snowflake, applicationCoverImage: string, format: ApplicationCoverFormat) {
return `/app-icons/${applicationId}/${applicationCoverImage}.${format}` as const;
},
/**
* Route for:
* - GET `/app-icons/{application.id}/{application.asset_id}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
applicationAsset(applicationId: Snowflake, applicationAssetId: string, format: ApplicationAssetFormat) {
return `/app-icons/${applicationId}/${applicationAssetId}.${format}` as const;
},
/**
* Route for:
* - GET `/app-assets/{application.id}/achievements/{achievement.id}/icons/{achievement.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
achievementIcon(
applicationId: Snowflake,
achievementId: Snowflake,
achievementIconHash: string,
format: AchievementIconFormat,
) {
return `/app-assets/${applicationId}/achievements/${achievementId}/icons/${achievementIconHash}.${format}` as const;
},
/**
* Route for:
* - GET `/app-assets/710982414301790216/store/{sticker_pack.banner.asset_id}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
stickerPackBanner(stickerPackBannerAssetId: Snowflake, format: StickerPackBannerFormat) {
return `/app-assets/${StickerPackApplicationId}/store/${stickerPackBannerAssetId}.${format}` as const;
},
/**
* Route for:
* - GET `team-icons/{team.id}/{team.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
teamIcon(teamId: Snowflake, teamIcon: string, format: TeamIconFormat) {
return `/team-icons/${teamId}/${teamIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/stickers/{sticker.id}.{png|json}`
*
* This route supports the extensions: PNG, Lottie
*/
sticker(stickerId: Snowflake, format: StickerFormat) {
return `/stickers/${stickerId}.${format}` as const;
},
/**
* Route for:
* - GET `/role-icons/{role.id}/{role.icon}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
roleIcon(roleId: Snowflake, roleIcon: string, format: RoleIconFormat) {
return `/role-icons/${roleId}/${roleIcon}.${format}` as const;
},
/**
* Route for:
* - GET `/guild-events/{guild_scheduled_event.id}/{guild_scheduled_event.image}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildScheduledEventCover(
guildScheduledEventId: Snowflake,
guildScheduledEventCoverImage: string,
format: GuildScheduledEventCoverFormat,
) {
return `/guild-events/${guildScheduledEventId}/${guildScheduledEventCoverImage}.${format}` as const;
},
/**
* Route for:
* - GET `/guilds/${guild.id}/users/${user.id}/banners/${guild_member.banner}.{png|jpeg|webp|gif}`
*
* This route supports the extensions: PNG, JPEG, WebP, GIF
*/
guildMemberBanner(guildId: Snowflake, userId: Snowflake, guildMemberBanner: string, format: GuildMemberBannerFormat) {
return `/guilds/${guildId}/users/${userId}/banners/${guildMemberBanner}.${format}` as const;
},
};
export type DefaultUserAvatarAssets = 0 | 1 | 2 | 3 | 4 | 5;
export type EmojiFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildIconFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildSplashFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildDiscoverySplashFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type UserBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type DefaultUserAvatar = Extract<ImageFormat, ImageFormat.PNG>;
export type UserAvatarFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildMemberAvatarFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type ApplicationIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type ApplicationCoverFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type ApplicationAssetFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type AchievementIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type StickerPackBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type TeamIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type StickerFormat = Extract<ImageFormat, ImageFormat.PNG | ImageFormat.Lottie>;
export type RoleIconFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildScheduledEventCoverFormat = Exclude<ImageFormat, ImageFormat.Lottie | ImageFormat.GIF>;
export type GuildMemberBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export enum ImageFormat {
JPEG = 'jpeg',
PNG = 'png',
WebP = 'webp',
GIF = 'gif',
Lottie = 'json',
}
export interface CDNQuery {
/**
* The returned image can have the size changed by using this query parameter
*
* Image size can be any power of two between 16 and 4096
*/
size?: number;
}
export const RouteBases = {
api: `https://discord.com/api/v${APIVersion}`,
cdn: 'https://cdn.discordapp.com',

View File

@@ -129,8 +129,10 @@ export type RESTPatchAPIApplicationGuildCommandResult = Omit<APIApplicationComma
* https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands
*/
export type RESTPutAPIApplicationGuildCommandsJSONBody = (
| Omit<RESTPostAPIChatInputApplicationCommandsJSONBody, 'dm_permission'>
| Omit<RESTPostAPIContextMenuApplicationCommandsJSONBody, 'dm_permission'>
| (Omit<RESTPostAPIChatInputApplicationCommandsJSONBody, 'dm_permission'> &
Pick<Partial<APIApplicationCommand>, 'id'>)
| (Omit<RESTPostAPIContextMenuApplicationCommandsJSONBody, 'dm_permission'> &
Pick<Partial<APIApplicationCommand>, 'id'>)
)[];
/**

View File

@@ -144,6 +144,12 @@ export type RESTPostAPIWebhookWithTokenJSONBody = AddUndefinedToPossiblyUndefine
* Message flags combined as a bitfield
*/
flags?: MessageFlags;
/**
* Name of thread to create
*
* Available only if the webhook is in a forum channel and a thread is not specified in {@link RESTPostAPIWebhookWithTokenQuery.thread_id} query parameter
*/
thread_name?: string;
}>;
/**
@@ -171,6 +177,8 @@ export interface RESTPostAPIWebhookWithTokenQuery {
wait?: boolean;
/**
* Send a message to the specified thread within a webhook's channel. The thread will automatically be unarchived.
*
* Available only if the {@link RESTPostAPIWebhookWithTokenJSONBody.thread_name} JSON body property is not specified
*/
thread_id?: Snowflake;
}

Some files were not shown because too many files have changed in this diff Show More