Compare commits

...

74 Commits

Author SHA1 Message Date
github-actions[bot]
ba4ee01f79 chore(release): 0.37.26 🎉 (#684)
Build ran for e389a2189a

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-01-05 14:21:20 +02:00
dependabot[bot]
e389a2189a chore(deps): bump json5 from 1.0.1 to 1.0.2 (#683)
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  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>
2023-01-05 13:41:09 +02:00
dependabot[bot]
77585d1ffa chore(deps): bump json5 from 2.2.1 to 2.2.2 in /website (#680)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-05 13:40:13 +02:00
advaith
4a25caf506 feat: add RESTJSONErrorCode 40062 and RESTRateLimit.code (#620) 2023-01-05 13:38:37 +02:00
MateoDeveloper
6e4a6115ae feat(RESTJSONErrorCodes): add error 50067 (#640) 2023-01-05 13:38:00 +02:00
Almeida
921bffd1b2 feat(RESTJSONErrorCodes): add error 30058 (#676) 2023-01-05 13:37:39 +02:00
Jiralite
bb2ef84313 feat(RESTGetAPIAuditLogQuery): support after (#682) 2023-01-04 23:22:12 +02:00
github-actions[bot]
5e9bff9d0e chore(release): 0.37.25 🎉 (#679)
Build ran for 4c334f6eb8

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-12-29 14:19:24 +02:00
Almeida
4c334f6eb8 docs(ApplicationFlags): add descriptions to each flag (#639) 2022-12-22 20:10:03 +02:00
github-actions[bot]
93667b9a9e chore(release): 0.37.24 🎉 (#674)
Build ran for 8df9f14a24

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-12-19 15:37:05 +02:00
Almeida
8df9f14a24 fix(APIApplicationRoleConnection): metadata values can be numbers (#673) 2022-12-16 16:15:06 +02:00
github-actions[bot]
c2bec62a8e chore(release): 0.37.23 🎉 (#672)
Build ran for 190242a59d

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-12-15 16:59:48 +02:00
advaith
190242a59d feat(APIGuildForumChannel): add default_forum_layout (#658)
* feat(APIGuildForumChannel): add `default_forum_layout`

* chore: use official names and text
2022-12-15 07:19:15 +02:00
MateoDeveloper
2b75d13b39 feat(Locale): add Indonesian locale (#643) 2022-12-14 23:45:04 +02:00
advaith
89bc0f40b6 fix(Interactions): make app_permissions required (#652) 2022-12-14 23:21:41 +02:00
Cynthia
2a5413def4 fix(APIChannel): correctly type present properties based on channel type (#669) 2022-12-14 23:20:04 +02:00
Almeida
d7b666c739 feat: add role connections (#651) 2022-12-14 23:18:41 +02:00
MateoDeveloper
c3fda99637 feat(APIApplicationCommand): add nsfw field (#637) 2022-12-14 23:16:14 +02:00
github-actions[bot]
57a69a1301 chore(release): 0.37.22 🎉 (#668)
Build ran for e818213043

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-12-12 14:38:24 +02:00
advaith
e818213043 chore(UserFlags): update certified moderator description (#659) 2022-12-11 22:50:47 +02:00
dependabot[bot]
40ec4363bb chore(deps): bump minimatch, recursive-readdir and serve-handler (#662)
Bumps [minimatch](https://github.com/isaacs/minimatch), [recursive-readdir](https://github.com/jergason/recursive-readdir) and [serve-handler](https://github.com/zeit/serve-handler). These dependencies needed to be updated together.

Updates `minimatch` from 3.0.4 to 3.1.2
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

Updates `recursive-readdir` from 2.2.2 to 2.2.3
- [Release notes](https://github.com/jergason/recursive-readdir/releases)
- [Changelog](https://github.com/jergason/recursive-readdir/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jergason/recursive-readdir/commits/v2.2.3)

Updates `serve-handler` from 6.1.3 to 6.1.5
- [Release notes](https://github.com/zeit/serve-handler/releases)
- [Commits](https://github.com/zeit/serve-handler/compare/6.1.3...6.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
- dependency-name: recursive-readdir
  dependency-type: indirect
- dependency-name: serve-handler
  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-12-11 22:50:25 +02:00
dependabot[bot]
190223f1f9 chore(deps): bump minimatch, recursive-readdir and serve-handler (#662)
Bumps [minimatch](https://github.com/isaacs/minimatch), [recursive-readdir](https://github.com/jergason/recursive-readdir) and [serve-handler](https://github.com/zeit/serve-handler). These dependencies needed to be updated together.

Updates `minimatch` from 3.0.4 to 3.1.2
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

Updates `recursive-readdir` from 2.2.2 to 2.2.3
- [Release notes](https://github.com/jergason/recursive-readdir/releases)
- [Changelog](https://github.com/jergason/recursive-readdir/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jergason/recursive-readdir/commits/v2.2.3)

Updates `serve-handler` from 6.1.3 to 6.1.5
- [Release notes](https://github.com/zeit/serve-handler/releases)
- [Commits](https://github.com/zeit/serve-handler/compare/6.1.3...6.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
- dependency-name: recursive-readdir
  dependency-type: indirect
- dependency-name: serve-handler
  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-12-11 22:50:12 +02:00
Cynthia
995126e2cc fix(APIChannel): correctly type name based on channel type (#666)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2022-12-11 22:48:02 +02:00
github-actions[bot]
549d1daaa0 chore(release): 0.37.21 🎉 (#663)
Build ran for 38aad33ed8

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-12-05 14:34:31 +02:00
Jiralite
38aad33ed8 ci: Assign reviewers on drafts (#661) 2022-12-03 11:27:26 +00:00
Eejit
390c628ee3 docs: update description for StickerType.Guild (#657) 2022-12-02 14:35:56 +02:00
github-actions[bot]
c730f1a8d1 chore(release): 0.37.20 🎉 (#655)
Build ran for 33e0f3f411

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-11-24 18:30:56 +02:00
Eejit
33e0f3f411 docs: Link Quarantined to article (#653)
* Link `Quarantined` to article

* revert changes to v8

* remove locale in url
2022-11-24 13:14:07 +02:00
Eejit
3713a553e9 docs: Remove locales and titles in help center article links (#654)
* Remove locales in help center article links

* remove article names from help center urls
2022-11-24 13:12:51 +02:00
github-actions[bot]
b03b1fb0cd chore(release): 0.37.19 🎉 (#650)
Build ran for 0aa384ca9a

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-11-21 14:24:19 +02:00
Jiralite
0aa384ca9a docs(RESTGetAPIChannelThreadsResult): update deprecation url (#649) 2022-11-21 08:06:43 +02:00
Jiralite
2695dade8b fix(channel): add missing type aliases (#648) 2022-11-21 00:15:19 +02:00
Tuur Martens
9d72e82e07 fix(APIGuildChannel): make position of guild channel non optional (#647) 2022-11-20 18:57:06 +00:00
dependabot[bot]
f91e10f830 chore(deps): bump loader-utils from 2.0.2 to 2.0.4 in /website (#644)
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.2 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.2...v2.0.4)

---
updated-dependencies:
- dependency-name: loader-utils
  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-11-18 11:57:42 +02:00
Suneet Tipirneni
a1869a6a6d feat(GuildFeatures): Add APPLICATION_COMMAND_PERMISSIONS_V2 (#646)
* feat(GuildFeature): add APPLICATION_COMMAND_PERMISSIONS_V2

* chore: fix links
2022-11-18 11:55:57 +02:00
github-actions[bot]
5aa4c28635 chore(release): 0.37.18 🎉 (#642)
Build ran for 65da837673

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-11-14 18:29:36 +02:00
Almeida
65da837673 feat(UserFlags): add ActiveDeveloper (#638) 2022-11-10 22:30:28 +02:00
github-actions[bot]
5e854245e1 chore(release): 0.37.17 🎉 (#635)
Build ran for 67ecd76d3e

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-11-07 14:28:29 +02:00
MateoDeveloper
67ecd76d3e docs: add limits for tags in forums (#614) 2022-11-05 11:18:16 +02:00
Vitor
88a60f78ef feat(APIAutoMod): add support for regex matching (#603) 2022-11-05 11:17:19 +02:00
Almeida
0858b7c70a docs: remove ~ (#633) 2022-11-02 09:06:54 +02:00
github-actions[bot]
cf80b2fa6b chore(release): 0.37.16 🎉 (#629)
Build ran for 7040d9b333

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-10-31 14:38:42 +02:00
Almeida
7040d9b333 fix(docs): update gateway documentation links (#628) 2022-10-30 15:37:27 +02:00
Almeida
5091f6e707 fix(UserFlags): hardcode the value of Quarantined (#624) 2022-10-29 16:20:27 +03:00
Vlad Frangu
69aa717902 fix: export RESTGetAPIVoiceRegionsResult with the correct name (#627) 2022-10-29 16:19:46 +03:00
Jiralite
c15106b424 refactor(RESTGetAPICurrentUserGuildsQuery): Update guild limit (#626) 2022-10-28 20:01:53 +03:00
github-actions[bot]
a1ab25db1f chore(release): 0.37.15 🎉 (#623)
Build ran for 9448e9befd

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-10-27 21:19:01 +03:00
MateoDeveloper
9448e9befd feat(UserPremiumType): add NitroBasic (#616) 2022-10-27 21:16:12 +03:00
john-batch
348dd416d1 fix: add missing gateway dispatch payloads to gateway event union (#619) 2022-10-27 18:16:05 +00:00
MateoDeveloper
aaa57b4fe9 fix(APIGuild): change type of afk_timeout to allowed values (#590) 2022-10-22 23:12:08 +03:00
advaith
88ce2910fb fix: default_thread_rate_limit_per_user is only for forum channels (#596) 2022-10-22 21:50:58 +03:00
Vitor
131637fbd2 feat(RESTJSONErrorCodes): add 50039 error (#607) 2022-10-22 21:44:52 +03:00
Vitor
8c1484ebbe feat(GuildFeature): add DeveloperSupportServer (#618) 2022-10-21 20:05:15 +03:00
Almeida
8d25f233a5 feat: add some missing REST types (#612) 2022-10-21 00:54:10 +03:00
advaith
df1452dc28 feat(Components): new select menus (#602)
Co-authored-by: Almeida <almeidx@pm.me>
2022-10-21 00:53:14 +03:00
advaith
5053ac30d9 docs(ChannelType): publicthreads can be in forum channels (#610) 2022-10-18 07:01:06 +03:00
Vlad Frangu
91a7762b5d chore: fix placeholder being too large 2022-10-15 12:14:26 +03:00
Vlad Frangu
f311574d1f chore(GitHub): flashy new issue templates (#601) 2022-10-15 12:11:54 +03:00
github-actions[bot]
e082afb93f chore(release): 0.37.14 🎉 (#609)
Build ran for bce07950fd

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-10-15 11:31:31 +03:00
Suneet Tipirneni
bce07950fd fix(APIAutoModeration): export v10 json payloads and correct route types (#608) 2022-10-15 11:27:34 +03:00
Almeida
70826ed76e feat(RESTJSONErrorCodes): add error 50073 (#594) 2022-10-15 11:25:57 +03:00
github-actions[bot]
9978b77ef2 chore(release): 0.37.13 🎉 (#606)
Build ran for 3696ce7805

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-10-14 22:01:14 +03:00
Jiralite
3696ce7805 refactor(APIAuditLogOptions): Use AuditLogRuleTriggerType for auto_moderation_rule_trigger_type (#605) 2022-10-14 17:32:49 +00:00
Vitor
b216f7a8be feat(APIAutoModeration): add support for auto moderation (#418) 2022-10-14 19:56:21 +03:00
dependabot[bot]
05cfe1bf96 chore(deps): bump vm2 from 3.9.9 to 3.9.11 (#593)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-13 22:29:18 +03:00
github-actions[bot]
5ffb2d3586 chore(release): 0.37.12 🎉 (#598)
Build ran for f62f2506b0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-10-06 15:30:56 +03:00
Almeida
f62f2506b0 refactor(FormattingPatterns): update SlashCommand pattern (#597) 2022-10-06 12:18:06 +00:00
github-actions[bot]
2876125975 chore(release): 0.37.11 🎉 (#591)
Build ran for 143b003fbe

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-09-26 22:46:32 +03:00
Almeida
143b003fbe feat(APIGuildForumChannel): add default_sort_order (#589) 2022-09-25 20:42:38 +03:00
MateoDeveloper
0f118d382f feat(APIGuildForumChannel): update and add missing features (#575) 2022-09-25 20:21:49 +03:00
github-actions[bot]
2dc3fd0a15 chore(release): 0.37.10 🎉 (#587)
Build ran for d452f6346b

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-09-15 16:42:15 +04:00
Vitor
d452f6346b feat(APIConnection): add two_way_link (#546) 2022-09-15 01:29:48 +03:00
MateoDeveloper
32f5a7b981 feat(APIGuild): document afk timeout values (#570) 2022-09-15 00:14:27 +03:00
Almeida
f4d3f4d5b1 feat: add RESTRateLimit (#585) 2022-09-14 21:13:32 +03:00
144 changed files with 6294 additions and 1461 deletions

View File

@@ -1,25 +0,0 @@
---
name: Bug report
about: Report incorrect or unexpected behavior of discord-api-types
title: ''
labels: 'bug'
assignees: ''
---
<!-- Use Discord for questions: https://discord.gg/djs -->
**Please describe the problem you are having in as much detail as possible:**
**Include a reproducible code sample here, if possible:**
```ts
// Place your code here
```
**Further details:**
- Runtime:
<!-- Complete whichever is applicable -->
- Node.js version:
- deno version:
- Priority this issue should have please be realistic and elaborate if possible:

83
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,83 @@
name: Bug report
description: Report incorrect or unexpected behavior of discord-api-types, or a mistyped type
labels: [bug]
body:
- type: markdown
attributes:
value: |
Use Discord for questions: https://discord.gg/djs
- type: textarea
id: description
attributes:
label: Issue description
description: |
Please describe the problem you are having in as much detail as possible.
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files into it.
placeholder: |
Steps to reproduce with below code sample:
1. do thing
2. it broke :c
validations:
required: true
- type: textarea
id: codesample
attributes:
label: Code sample
description: Include a reproducible, minimal code sample. This will be automatically formatted into code, so no need for backticks.
render: typescript
placeholder: |
Your code sample should be...
... Minimal - Use as little code as possible that still produces the same problem (and is understandable)
... Complete - Provide all parts someone else needs to reproduce your problem
... Reproducible - Test the code you're about to provide to make sure it reproduces the problem
- type: input
id: types-version
attributes:
label: Package version
description: Which version of the package are you using? Run `npm list discord-api-types` in your project directory and paste the output.
validations:
required: true
- type: dropdown
id: runtime
attributes:
label: Runtime
description: What runtime are you using?
options:
- Node.js
- Deno
- Bun
- Other / Browser
validations:
required: true
- type: input
id: runtime-version
attributes:
label: Runtime version
description: |
Which version of your runtime of choice are you using?
If you are using TypeScript, please include its version (`npm list typescript`) as well.
For Node.js: Run `node --version` in your project directory and paste the output.
For Deno: Run `deno --version` in your project directory and paste the output.
For Bun: Run `bun --version` in your project directory and paste the output.
For Other / Browser: Find the version in your runtime of choice and paste it here.
placeholder: v4.2.0
validations:
required: true
- type: dropdown
id: priority
attributes:
label: Priority this issue should have
description: Please be realistic. If you need to elaborate on your reasoning, please use the Issue description field above.
options:
- Low (slightly annoying)
- Medium (should be fixed soon)
- High (immediate attention needed)
validations:
required: true

View File

@@ -1,21 +0,0 @@
---
name: Feature request
about: Request a feature for the discord-api-types library
title: ''
labels: 'discussion'
assignees: ''
---
<!-- Use Discord for questions: https://discord.gg/djs -->
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Eg. I'm always frustrated when [...]
**Describe the ideal solution**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,39 @@
name: Feature request
description: Request a feature for the discord-api-types library (we accept documented features of the official Discord developer API only!)
labels: [discussion]
body:
- type: markdown
attributes:
value: |
We will only only document types that Discord publishes, documents, and merges into the Discord API documentation.
We do not implement unreleased types, or types considered client only.
Use Discord for questions: https://discord.gg/djs
- type: textarea
id: description
attributes:
label: Feature
description: A clear and concise description of what the problem is, or what feature you want to be implemented.
placeholder: I'm always frustrated when..., Discord has recently released..., A good addition would be...
validations:
required: true
- type: textarea
id: solution
attributes:
label: Ideal solution or implementation
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternative solutions or implementations
description: A clear and concise description of any alternative solutions or features you have considered.
- type: textarea
id: additional-context
attributes:
label: Other context
description: Any other context, screenshots, or file uploads that help us understand your feature request.

View File

@@ -5,3 +5,4 @@ reviewers:
- kyranet
- vladfrangu
numberOfReviewers: 0
runOnDraft: true

View File

@@ -14,5 +14,5 @@ jobs:
sync-labels: true
- name: Automatically assign reviewers
if: ${{ github.event.action == 'opened' }}
uses: kentaro-m/auto-assign-action@v1.1.2
if: github.event.action == 'opened'
uses: kentaro-m/auto-assign-action@v1.2.4

View File

@@ -1,3 +1,124 @@
## [0.37.26](https://github.com/discordjs/discord-api-types/compare/0.37.25...0.37.26) (2023-01-05)
### Features
- add RESTJSONErrorCode `40062` and RESTRateLimit.code ([#620](https://github.com/discordjs/discord-api-types/issues/620)) ([4a25caf](https://github.com/discordjs/discord-api-types/commit/4a25caf506c685a8e0af630eef3bd3d2735d64ed))
- **RESTGetAPIAuditLogQuery:** support `after` ([#682](https://github.com/discordjs/discord-api-types/issues/682)) ([bb2ef84](https://github.com/discordjs/discord-api-types/commit/bb2ef843133b29e3042bdfde20b5adb1c3639e01))
- **RESTJSONErrorCodes:** add error `30058` ([#676](https://github.com/discordjs/discord-api-types/issues/676)) ([921bffd](https://github.com/discordjs/discord-api-types/commit/921bffd1b210b6cf2dc6971e451fa0a9e6f6c185))
- **RESTJSONErrorCodes:** add error `50067` ([#640](https://github.com/discordjs/discord-api-types/issues/640)) ([6e4a611](https://github.com/discordjs/discord-api-types/commit/6e4a6115ae44aca5c0b61f621ad75829632850f4))
## [0.37.25](https://github.com/discordjs/discord-api-types/compare/0.37.24...0.37.25) (2022-12-29)
## [0.37.24](https://github.com/discordjs/discord-api-types/compare/0.37.23...0.37.24) (2022-12-19)
### Bug Fixes
- **APIApplicationRoleConnection:** `metadata` values can be numbers ([#673](https://github.com/discordjs/discord-api-types/issues/673)) ([8df9f14](https://github.com/discordjs/discord-api-types/commit/8df9f14a24b714d3b009711eec894cad1e199881))
## [0.37.23](https://github.com/discordjs/discord-api-types/compare/0.37.22...0.37.23) (2022-12-15)
### Bug Fixes
- **APIChannel:** correctly type present properties based on channel type ([#669](https://github.com/discordjs/discord-api-types/issues/669)) ([2a5413d](https://github.com/discordjs/discord-api-types/commit/2a5413def49dbb413227d9b02be500b9184b731d))
- **Interactions:** make app_permissions required ([#652](https://github.com/discordjs/discord-api-types/issues/652)) ([89bc0f4](https://github.com/discordjs/discord-api-types/commit/89bc0f40b60434a768abac95188a2e4e47c2acd9))
### Features
- add role connections ([#651](https://github.com/discordjs/discord-api-types/issues/651)) ([d7b666c](https://github.com/discordjs/discord-api-types/commit/d7b666c739bb848ead5a3af09e37e64ed962014b))
- **APIApplicationCommand:** add `nsfw` field ([#637](https://github.com/discordjs/discord-api-types/issues/637)) ([c3fda99](https://github.com/discordjs/discord-api-types/commit/c3fda99637b4d7688111180f90d6aa41c008ed17))
- **APIGuildForumChannel:** add `default_forum_layout` ([#658](https://github.com/discordjs/discord-api-types/issues/658)) ([190242a](https://github.com/discordjs/discord-api-types/commit/190242a59d5512fdc766217ec9f7c9c54a7b2dcb))
- **Locale:** add Indonesian locale ([#643](https://github.com/discordjs/discord-api-types/issues/643)) ([2b75d13](https://github.com/discordjs/discord-api-types/commit/2b75d13b393f8f9011ec68617cb4e9f9d3fa09e7))
## [0.37.22](https://github.com/discordjs/discord-api-types/compare/0.37.21...0.37.22) (2022-12-12)
### Bug Fixes
- **APIChannel:** correctly type `name` based on channel type ([#666](https://github.com/discordjs/discord-api-types/issues/666)) ([995126e](https://github.com/discordjs/discord-api-types/commit/995126e2cc1494f9fad2ad7c44ecc87898994e44))
## [0.37.21](https://github.com/discordjs/discord-api-types/compare/0.37.20...0.37.21) (2022-12-05)
## [0.37.20](https://github.com/discordjs/discord-api-types/compare/0.37.19...0.37.20) (2022-11-24)
## [0.37.19](https://github.com/discordjs/discord-api-types/compare/0.37.18...0.37.19) (2022-11-21)
### Bug Fixes
- **APIGuildChannel:** make position of guild channel non optional ([#647](https://github.com/discordjs/discord-api-types/issues/647)) ([9d72e82](https://github.com/discordjs/discord-api-types/commit/9d72e82e07e3a3bb9a894081d955bdc5c6b64089))
- **channel:** add missing type aliases ([#648](https://github.com/discordjs/discord-api-types/issues/648)) ([2695dad](https://github.com/discordjs/discord-api-types/commit/2695dade8be818cf5bacbe69ec9aca0b50b9f9b0))
### Features
- **GuildFeatures:** Add `APPLICATION_COMMAND_PERMISSIONS_V2` ([#646](https://github.com/discordjs/discord-api-types/issues/646)) ([a1869a6](https://github.com/discordjs/discord-api-types/commit/a1869a6a6d4e15adf7a3cf64cade1ed051b330fc))
## [0.37.18](https://github.com/discordjs/discord-api-types/compare/0.37.17...0.37.18) (2022-11-14)
### Features
- **UserFlags:** add `ActiveDeveloper` ([#638](https://github.com/discordjs/discord-api-types/issues/638)) ([65da837](https://github.com/discordjs/discord-api-types/commit/65da837673142267a92aea28ecd65d3c05aa0706))
## [0.37.17](https://github.com/discordjs/discord-api-types/compare/0.37.16...0.37.17) (2022-11-07)
### Features
- **APIAutoMod:** add support for regex matching ([#603](https://github.com/discordjs/discord-api-types/issues/603)) ([88a60f7](https://github.com/discordjs/discord-api-types/commit/88a60f78efb6498d861b33d54c809d9d1b39b3d7))
## [0.37.16](https://github.com/discordjs/discord-api-types/compare/0.37.15...0.37.16) (2022-10-31)
### Bug Fixes
- **docs:** update gateway documentation links ([#628](https://github.com/discordjs/discord-api-types/issues/628)) ([7040d9b](https://github.com/discordjs/discord-api-types/commit/7040d9b33370a5d1d7d3c3cb10a25c0e5fb7d0b8))
- export `RESTGetAPIVoiceRegionsResult` with the correct name ([#627](https://github.com/discordjs/discord-api-types/issues/627)) ([69aa717](https://github.com/discordjs/discord-api-types/commit/69aa7179028e0a011e6ba246cc1faa55f463c619))
- **UserFlags:** hardcode the value of `Quarantined` ([#624](https://github.com/discordjs/discord-api-types/issues/624)) ([5091f6e](https://github.com/discordjs/discord-api-types/commit/5091f6e70774fd97ec7dd3ae3f500c3850f81d94))
## [0.37.15](https://github.com/discordjs/discord-api-types/compare/0.37.14...0.37.15) (2022-10-27)
### Bug Fixes
- `default_thread_rate_limit_per_user` is only for forum channels ([#596](https://github.com/discordjs/discord-api-types/issues/596)) ([88ce291](https://github.com/discordjs/discord-api-types/commit/88ce2910fb3640d9be165ac9f6488cc7e4c32663))
- add missing gateway dispatch payloads to gateway event union ([#619](https://github.com/discordjs/discord-api-types/issues/619)) ([348dd41](https://github.com/discordjs/discord-api-types/commit/348dd416d1c94231fdfda88fa0ef03b34a384bb4))
- **APIGuild:** change type of `afk_timeout` to allowed values ([#590](https://github.com/discordjs/discord-api-types/issues/590)) ([aaa57b4](https://github.com/discordjs/discord-api-types/commit/aaa57b4fe96b4f045b312c1a6a2ed17f9fcb3552))
### Features
- add some missing REST types ([#612](https://github.com/discordjs/discord-api-types/issues/612)) ([8d25f23](https://github.com/discordjs/discord-api-types/commit/8d25f233a5366f1d43de942f465e696c73f26c86))
- **Components:** new select menus ([#602](https://github.com/discordjs/discord-api-types/issues/602)) ([df1452d](https://github.com/discordjs/discord-api-types/commit/df1452dc28f2fddb32a20912ca3ca3634556a3da))
- **GuildFeature:** add `DeveloperSupportServer` ([#618](https://github.com/discordjs/discord-api-types/issues/618)) ([8c1484e](https://github.com/discordjs/discord-api-types/commit/8c1484ebbe95afbd850b22262d6223b2f3d40017))
- **RESTJSONErrorCodes:** add 50039 error ([#607](https://github.com/discordjs/discord-api-types/issues/607)) ([131637f](https://github.com/discordjs/discord-api-types/commit/131637fbd20573750a60df2281f94b339443c82c))
- **UserPremiumType:** add `NitroBasic` ([#616](https://github.com/discordjs/discord-api-types/issues/616)) ([9448e9b](https://github.com/discordjs/discord-api-types/commit/9448e9befdfff38ecbf186e5dc9c1fcd88596422))
## [0.37.14](https://github.com/discordjs/discord-api-types/compare/0.37.13...0.37.14) (2022-10-15)
### Bug Fixes
- **APIAutoModeration:** export v10 json payloads and correct route types ([#608](https://github.com/discordjs/discord-api-types/issues/608)) ([bce0795](https://github.com/discordjs/discord-api-types/commit/bce07950fdfec7ae5e96ce3158f73cfb5db0a890))
### Features
- **RESTJSONErrorCodes:** add error `50073` ([#594](https://github.com/discordjs/discord-api-types/issues/594)) ([70826ed](https://github.com/discordjs/discord-api-types/commit/70826ed76e4b4880fb7425a07d04921823954c95))
## [0.37.13](https://github.com/discordjs/discord-api-types/compare/0.37.12...0.37.13) (2022-10-14)
### Features
- **APIAutoModeration:** add support for auto moderation ([#418](https://github.com/discordjs/discord-api-types/issues/418)) ([b216f7a](https://github.com/discordjs/discord-api-types/commit/b216f7a8bee2c02fe0e75189fe31f95973bfbe2e))
## [0.37.12](https://github.com/discordjs/discord-api-types/compare/0.37.11...0.37.12) (2022-10-06)
## [0.37.11](https://github.com/discordjs/discord-api-types/compare/0.37.10...0.37.11) (2022-09-26)
### Features
- **APIGuildForumChannel:** add `default_sort_order` ([#589](https://github.com/discordjs/discord-api-types/issues/589)) ([143b003](https://github.com/discordjs/discord-api-types/commit/143b003fbe5a86eda225e9da1d0914d6e48cddfd))
- **APIGuildForumChannel:** update and add missing features ([#575](https://github.com/discordjs/discord-api-types/issues/575)) ([0f118d3](https://github.com/discordjs/discord-api-types/commit/0f118d382f94151b1c9be42620520c91b20a05f6))
## [0.37.10](https://github.com/discordjs/discord-api-types/compare/0.37.9...0.37.10) (2022-09-15)
### Features
- add `RESTRateLimit` ([#585](https://github.com/discordjs/discord-api-types/issues/585)) ([f4d3f4d](https://github.com/discordjs/discord-api-types/commit/f4d3f4d5b1c1b6e42c2a8f8184f43d67b586c8c1))
- **APIConnection:** add `two_way_link` ([#546](https://github.com/discordjs/discord-api-types/issues/546)) ([d452f63](https://github.com/discordjs/discord-api-types/commit/d452f6346bd4953a8d777f3818797c4285b1b842))
- **APIGuild:** document afk timeout values ([#570](https://github.com/discordjs/discord-api-types/issues/570)) ([32f5a7b](https://github.com/discordjs/discord-api-types/commit/32f5a7b9814b69da7fc3772ec1f0307d39cda087))
## [0.37.9](https://github.com/discordjs/discord-api-types/compare/0.37.8...0.37.9) (2022-09-12)
### Features

View File

@@ -1,3 +1,124 @@
## [0.37.26](https://github.com/discordjs/discord-api-types/compare/0.37.25...0.37.26) (2023-01-05)
### Features
- add RESTJSONErrorCode `40062` and RESTRateLimit.code ([#620](https://github.com/discordjs/discord-api-types/issues/620)) ([4a25caf](https://github.com/discordjs/discord-api-types/commit/4a25caf506c685a8e0af630eef3bd3d2735d64ed))
- **RESTGetAPIAuditLogQuery:** support `after` ([#682](https://github.com/discordjs/discord-api-types/issues/682)) ([bb2ef84](https://github.com/discordjs/discord-api-types/commit/bb2ef843133b29e3042bdfde20b5adb1c3639e01))
- **RESTJSONErrorCodes:** add error `30058` ([#676](https://github.com/discordjs/discord-api-types/issues/676)) ([921bffd](https://github.com/discordjs/discord-api-types/commit/921bffd1b210b6cf2dc6971e451fa0a9e6f6c185))
- **RESTJSONErrorCodes:** add error `50067` ([#640](https://github.com/discordjs/discord-api-types/issues/640)) ([6e4a611](https://github.com/discordjs/discord-api-types/commit/6e4a6115ae44aca5c0b61f621ad75829632850f4))
## [0.37.25](https://github.com/discordjs/discord-api-types/compare/0.37.24...0.37.25) (2022-12-29)
## [0.37.24](https://github.com/discordjs/discord-api-types/compare/0.37.23...0.37.24) (2022-12-19)
### Bug Fixes
- **APIApplicationRoleConnection:** `metadata` values can be numbers ([#673](https://github.com/discordjs/discord-api-types/issues/673)) ([8df9f14](https://github.com/discordjs/discord-api-types/commit/8df9f14a24b714d3b009711eec894cad1e199881))
## [0.37.23](https://github.com/discordjs/discord-api-types/compare/0.37.22...0.37.23) (2022-12-15)
### Bug Fixes
- **APIChannel:** correctly type present properties based on channel type ([#669](https://github.com/discordjs/discord-api-types/issues/669)) ([2a5413d](https://github.com/discordjs/discord-api-types/commit/2a5413def49dbb413227d9b02be500b9184b731d))
- **Interactions:** make app_permissions required ([#652](https://github.com/discordjs/discord-api-types/issues/652)) ([89bc0f4](https://github.com/discordjs/discord-api-types/commit/89bc0f40b60434a768abac95188a2e4e47c2acd9))
### Features
- add role connections ([#651](https://github.com/discordjs/discord-api-types/issues/651)) ([d7b666c](https://github.com/discordjs/discord-api-types/commit/d7b666c739bb848ead5a3af09e37e64ed962014b))
- **APIApplicationCommand:** add `nsfw` field ([#637](https://github.com/discordjs/discord-api-types/issues/637)) ([c3fda99](https://github.com/discordjs/discord-api-types/commit/c3fda99637b4d7688111180f90d6aa41c008ed17))
- **APIGuildForumChannel:** add `default_forum_layout` ([#658](https://github.com/discordjs/discord-api-types/issues/658)) ([190242a](https://github.com/discordjs/discord-api-types/commit/190242a59d5512fdc766217ec9f7c9c54a7b2dcb))
- **Locale:** add Indonesian locale ([#643](https://github.com/discordjs/discord-api-types/issues/643)) ([2b75d13](https://github.com/discordjs/discord-api-types/commit/2b75d13b393f8f9011ec68617cb4e9f9d3fa09e7))
## [0.37.22](https://github.com/discordjs/discord-api-types/compare/0.37.21...0.37.22) (2022-12-12)
### Bug Fixes
- **APIChannel:** correctly type `name` based on channel type ([#666](https://github.com/discordjs/discord-api-types/issues/666)) ([995126e](https://github.com/discordjs/discord-api-types/commit/995126e2cc1494f9fad2ad7c44ecc87898994e44))
## [0.37.21](https://github.com/discordjs/discord-api-types/compare/0.37.20...0.37.21) (2022-12-05)
## [0.37.20](https://github.com/discordjs/discord-api-types/compare/0.37.19...0.37.20) (2022-11-24)
## [0.37.19](https://github.com/discordjs/discord-api-types/compare/0.37.18...0.37.19) (2022-11-21)
### Bug Fixes
- **APIGuildChannel:** make position of guild channel non optional ([#647](https://github.com/discordjs/discord-api-types/issues/647)) ([9d72e82](https://github.com/discordjs/discord-api-types/commit/9d72e82e07e3a3bb9a894081d955bdc5c6b64089))
- **channel:** add missing type aliases ([#648](https://github.com/discordjs/discord-api-types/issues/648)) ([2695dad](https://github.com/discordjs/discord-api-types/commit/2695dade8be818cf5bacbe69ec9aca0b50b9f9b0))
### Features
- **GuildFeatures:** Add `APPLICATION_COMMAND_PERMISSIONS_V2` ([#646](https://github.com/discordjs/discord-api-types/issues/646)) ([a1869a6](https://github.com/discordjs/discord-api-types/commit/a1869a6a6d4e15adf7a3cf64cade1ed051b330fc))
## [0.37.18](https://github.com/discordjs/discord-api-types/compare/0.37.17...0.37.18) (2022-11-14)
### Features
- **UserFlags:** add `ActiveDeveloper` ([#638](https://github.com/discordjs/discord-api-types/issues/638)) ([65da837](https://github.com/discordjs/discord-api-types/commit/65da837673142267a92aea28ecd65d3c05aa0706))
## [0.37.17](https://github.com/discordjs/discord-api-types/compare/0.37.16...0.37.17) (2022-11-07)
### Features
- **APIAutoMod:** add support for regex matching ([#603](https://github.com/discordjs/discord-api-types/issues/603)) ([88a60f7](https://github.com/discordjs/discord-api-types/commit/88a60f78efb6498d861b33d54c809d9d1b39b3d7))
## [0.37.16](https://github.com/discordjs/discord-api-types/compare/0.37.15...0.37.16) (2022-10-31)
### Bug Fixes
- **docs:** update gateway documentation links ([#628](https://github.com/discordjs/discord-api-types/issues/628)) ([7040d9b](https://github.com/discordjs/discord-api-types/commit/7040d9b33370a5d1d7d3c3cb10a25c0e5fb7d0b8))
- export `RESTGetAPIVoiceRegionsResult` with the correct name ([#627](https://github.com/discordjs/discord-api-types/issues/627)) ([69aa717](https://github.com/discordjs/discord-api-types/commit/69aa7179028e0a011e6ba246cc1faa55f463c619))
- **UserFlags:** hardcode the value of `Quarantined` ([#624](https://github.com/discordjs/discord-api-types/issues/624)) ([5091f6e](https://github.com/discordjs/discord-api-types/commit/5091f6e70774fd97ec7dd3ae3f500c3850f81d94))
## [0.37.15](https://github.com/discordjs/discord-api-types/compare/0.37.14...0.37.15) (2022-10-27)
### Bug Fixes
- `default_thread_rate_limit_per_user` is only for forum channels ([#596](https://github.com/discordjs/discord-api-types/issues/596)) ([88ce291](https://github.com/discordjs/discord-api-types/commit/88ce2910fb3640d9be165ac9f6488cc7e4c32663))
- add missing gateway dispatch payloads to gateway event union ([#619](https://github.com/discordjs/discord-api-types/issues/619)) ([348dd41](https://github.com/discordjs/discord-api-types/commit/348dd416d1c94231fdfda88fa0ef03b34a384bb4))
- **APIGuild:** change type of `afk_timeout` to allowed values ([#590](https://github.com/discordjs/discord-api-types/issues/590)) ([aaa57b4](https://github.com/discordjs/discord-api-types/commit/aaa57b4fe96b4f045b312c1a6a2ed17f9fcb3552))
### Features
- add some missing REST types ([#612](https://github.com/discordjs/discord-api-types/issues/612)) ([8d25f23](https://github.com/discordjs/discord-api-types/commit/8d25f233a5366f1d43de942f465e696c73f26c86))
- **Components:** new select menus ([#602](https://github.com/discordjs/discord-api-types/issues/602)) ([df1452d](https://github.com/discordjs/discord-api-types/commit/df1452dc28f2fddb32a20912ca3ca3634556a3da))
- **GuildFeature:** add `DeveloperSupportServer` ([#618](https://github.com/discordjs/discord-api-types/issues/618)) ([8c1484e](https://github.com/discordjs/discord-api-types/commit/8c1484ebbe95afbd850b22262d6223b2f3d40017))
- **RESTJSONErrorCodes:** add 50039 error ([#607](https://github.com/discordjs/discord-api-types/issues/607)) ([131637f](https://github.com/discordjs/discord-api-types/commit/131637fbd20573750a60df2281f94b339443c82c))
- **UserPremiumType:** add `NitroBasic` ([#616](https://github.com/discordjs/discord-api-types/issues/616)) ([9448e9b](https://github.com/discordjs/discord-api-types/commit/9448e9befdfff38ecbf186e5dc9c1fcd88596422))
## [0.37.14](https://github.com/discordjs/discord-api-types/compare/0.37.13...0.37.14) (2022-10-15)
### Bug Fixes
- **APIAutoModeration:** export v10 json payloads and correct route types ([#608](https://github.com/discordjs/discord-api-types/issues/608)) ([bce0795](https://github.com/discordjs/discord-api-types/commit/bce07950fdfec7ae5e96ce3158f73cfb5db0a890))
### Features
- **RESTJSONErrorCodes:** add error `50073` ([#594](https://github.com/discordjs/discord-api-types/issues/594)) ([70826ed](https://github.com/discordjs/discord-api-types/commit/70826ed76e4b4880fb7425a07d04921823954c95))
## [0.37.13](https://github.com/discordjs/discord-api-types/compare/0.37.12...0.37.13) (2022-10-14)
### Features
- **APIAutoModeration:** add support for auto moderation ([#418](https://github.com/discordjs/discord-api-types/issues/418)) ([b216f7a](https://github.com/discordjs/discord-api-types/commit/b216f7a8bee2c02fe0e75189fe31f95973bfbe2e))
## [0.37.12](https://github.com/discordjs/discord-api-types/compare/0.37.11...0.37.12) (2022-10-06)
## [0.37.11](https://github.com/discordjs/discord-api-types/compare/0.37.10...0.37.11) (2022-09-26)
### Features
- **APIGuildForumChannel:** add `default_sort_order` ([#589](https://github.com/discordjs/discord-api-types/issues/589)) ([143b003](https://github.com/discordjs/discord-api-types/commit/143b003fbe5a86eda225e9da1d0914d6e48cddfd))
- **APIGuildForumChannel:** update and add missing features ([#575](https://github.com/discordjs/discord-api-types/issues/575)) ([0f118d3](https://github.com/discordjs/discord-api-types/commit/0f118d382f94151b1c9be42620520c91b20a05f6))
## [0.37.10](https://github.com/discordjs/discord-api-types/compare/0.37.9...0.37.10) (2022-09-15)
### Features
- add `RESTRateLimit` ([#585](https://github.com/discordjs/discord-api-types/issues/585)) ([f4d3f4d](https://github.com/discordjs/discord-api-types/commit/f4d3f4d5b1c1b6e42c2a8f8184f43d67b586c8c1))
- **APIConnection:** add `two_way_link` ([#546](https://github.com/discordjs/discord-api-types/issues/546)) ([d452f63](https://github.com/discordjs/discord-api-types/commit/d452f6346bd4953a8d777f3818797c4285b1b842))
- **APIGuild:** document afk timeout values ([#570](https://github.com/discordjs/discord-api-types/issues/570)) ([32f5a7b](https://github.com/discordjs/discord-api-types/commit/32f5a7b9814b69da7fc3772ec1f0307d39cda087))
## [0.37.9](https://github.com/discordjs/discord-api-types/compare/0.37.8...0.37.9) (2022-09-12)
### Features

View File

@@ -1,5 +1,5 @@
/**
* https://discord.com/developers/docs/topics/gateway#connecting-gateway-url-params
* https://discord.com/developers/docs/topics/gateway#connecting-gateway-url-query-string-params
*/
export interface GatewayURLQuery {
v: string;

File diff suppressed because it is too large Load Diff

View File

@@ -1686,7 +1686,7 @@ export interface GatewayPresenceUpdateData {
/**
* The user's activities
*
* See https://discord.com/developers/docs/topics/gateway#activity-object
* See https://discord.com/developers/docs/topics/gateway-events#activity-object
*/
activities: GatewayActivityUpdateData[];
/**
@@ -1702,7 +1702,7 @@ export interface GatewayPresenceUpdateData {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-structure
* @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10.
*/
export type GatewayActivityUpdateData = Pick<GatewayActivity, 'name' | 'type' | 'url'>;

File diff suppressed because it is too large Load Diff

View File

@@ -51,7 +51,7 @@ export const FormattingPatterns = {
* 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})>/,
/<\/(?<fullName>(?<name>[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32})(?: (?<subcommandOrGroup>[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32}))?(?: (?<subcommand>[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32}))?):(?<id>\d{17,20})>/u,
/**
* Regular expression for matching a custom emoji, either static or animated
*

View File

@@ -78,3 +78,27 @@ export interface RESTErrorGroupWrapper {
}
export type RESTErrorData = RESTErrorGroupWrapper | RESTErrorFieldInformation | { [k: string]: RESTErrorData } | string;
/**
* https://discord.com/developers/docs/topics/rate-limits#exceeding-a-rate-limit-rate-limit-response-structure
*/
export interface RESTRateLimit {
/**
* An error code for some limits
*
* {@link RESTJSONErrorCodes}
*/
code?: number;
/**
* A value indicating if you are being globally rate limited or not
*/
global: boolean;
/**
* A message saying you are being rate limited.
*/
message: string;
/**
* The number of seconds to wait before submitting another request.
*/
retry_after: number;
}

View File

@@ -43,14 +43,8 @@ import type {
APIApplicationCommandUserOption,
} from './_chatInput/user.ts';
import type { APIBaseApplicationCommandInteractionData } from './internals.ts';
import type { Snowflake } from '../../../../globals.ts';
import type { APIAttachment, APIRole, APIUser } from '../../mod.ts';
import type {
APIApplicationCommandInteractionWrapper,
APIInteractionDataResolvedChannel,
APIInteractionDataResolvedGuildMember,
ApplicationCommandType,
} from '../applicationCommands.ts';
import type { APIInteractionDataResolved } from '../../mod.ts';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands.ts';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
export * from './_chatInput/attachment.ts';
@@ -114,18 +108,7 @@ export type APIApplicationCommandInteractionDataBasicOption =
export interface APIChatInputApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
options?: APIApplicationCommandInteractionDataOption[];
resolved?: APIChatInputApplicationCommandInteractionDataResolved;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIChatInputApplicationCommandInteractionDataResolved {
users?: Record<Snowflake, APIUser>;
roles?: Record<Snowflake, APIRole>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
channels?: Record<Snowflake, APIInteractionDataResolvedChannel>;
attachments?: Record<Snowflake, APIAttachment>;
resolved?: APIInteractionDataResolved;
}
/**

View File

@@ -1,13 +1,8 @@
import type { APIBaseApplicationCommandInteractionData } from './internals.ts';
import type { Snowflake } from '../../../../globals.ts';
import type { APIMessage } from '../../channel.ts';
import type { APIUser } from '../../user.ts';
import type {
APIApplicationCommandInteractionWrapper,
APIInteractionDataResolvedGuildMember,
ApplicationCommandType,
} from '../applicationCommands.ts';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands.ts';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIUserInteractionDataResolved } from '../base.ts';
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
@@ -15,15 +10,7 @@ import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../bas
export interface APIUserApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.User> {
target_id: Snowflake;
resolved: APIUserApplicationCommandInteractionDataResolved;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIUserApplicationCommandInteractionDataResolved {
users: Record<Snowflake, APIUser>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
resolved: APIUserInteractionDataResolved;
}
/**

View File

@@ -15,8 +15,6 @@ import type { APIBaseInteraction } from './base.ts';
import type { InteractionType } from './responses.ts';
import type { Permissions, Snowflake } from '../../../globals.ts';
import type { LocalizationMap } from '../../../v10.ts';
import type { APIPartialChannel, APIThreadMetadata } from '../channel.ts';
import type { APIGuildMember } from '../guild.ts';
export * from './_applicationCommands/chatInput.ts';
export * from './_applicationCommands/contextMenu.ts';
@@ -85,6 +83,10 @@ export interface APIApplicationCommand {
* @deprecated Use `dm_permission` and/or `default_member_permissions` instead
*/
default_permission?: boolean;
/**
* Indicates whether the command is age-restricted, defaults to `false`
*/
nsfw?: boolean;
/**
* Autoincrementing version identifier updated during substantial record changes
*/
@@ -107,28 +109,14 @@ export type APIApplicationCommandInteractionData =
| APIChatInputApplicationCommandInteractionData
| APIContextMenuInteractionData;
/**
* https://discord.com/developers/docs/resources/channel#channel-object
*/
export interface APIInteractionDataResolvedChannel extends Required<APIPartialChannel> {
thread_metadata?: APIThreadMetadata | null;
permissions: Permissions;
parent_id?: string | null;
}
/**
* https://discord.com/developers/docs/resources/guild#guild-member-object
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'user' | 'deaf' | 'mute'> {
permissions: Permissions;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object
*/
export type APIApplicationCommandInteractionWrapper<Data extends APIApplicationCommandInteractionData> =
APIBaseInteraction<InteractionType.ApplicationCommand, Data> &
Required<Pick<APIBaseInteraction<InteractionType.ApplicationCommand, Data>, 'channel_id' | 'data'>>;
Required<
Pick<APIBaseInteraction<InteractionType.ApplicationCommand, Data>, 'channel_id' | 'data' | 'app_permissions'>
>;
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object

View File

@@ -1,7 +1,7 @@
import type { InteractionType } from './responses.ts';
import type { Permissions, Snowflake } from '../../../globals.ts';
import type { LocaleString } from '../../../v10.ts';
import type { APIMessage } from '../channel.ts';
import type { APIRole, LocaleString } from '../../../v10.ts';
import type { APIAttachment, APIMessage, APIPartialChannel, APIThreadMetadata } from '../channel.ts';
import type { APIGuildMember } from '../guild.ts';
import type { APIUser } from '../user.ts';
@@ -129,3 +129,46 @@ export type APIGuildInteractionWrapper<Original extends APIBaseInteraction<Inter
'user'
> &
Required<Pick<Original, 'member' | 'guild_id'>>;
/**
* https://discord.com/developers/docs/resources/channel#channel-object
*/
export interface APIInteractionDataResolvedChannel extends Required<APIPartialChannel> {
thread_metadata?: APIThreadMetadata | null;
permissions: Permissions;
parent_id?: string | null;
}
/**
* https://discord.com/developers/docs/resources/guild#guild-member-object
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'user' | 'deaf' | 'mute'> {
permissions: Permissions;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIInteractionDataResolved {
users?: Record<Snowflake, APIUser>;
roles?: Record<Snowflake, APIRole>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
channels?: Record<Snowflake, APIInteractionDataResolvedChannel>;
attachments?: Record<Snowflake, APIAttachment>;
}
/**
* @deprecated Renamed to `APIInteractionDataResolved`
*/
export type APIChatInputApplicationCommandInteractionDataResolved = APIInteractionDataResolved;
/**
* `users` and optional `members` from APIInteractionDataResolved, for user commands and user selects
*/
export type APIUserInteractionDataResolved = Required<Pick<APIInteractionDataResolved, 'users'>> &
Pick<APIInteractionDataResolved, 'members'>;
/**
* @deprecated Renamed to `APIUserInteractionDataResolved`
*/
export type APIUserApplicationCommandInteractionDataResolved = APIUserInteractionDataResolved;

View File

@@ -1,4 +1,10 @@
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from './base.ts';
import type {
APIDMInteractionWrapper,
APIGuildInteractionWrapper,
APIInteractionDataResolved,
APIUserInteractionDataResolved,
} from './base.ts';
import type { Snowflake } from '../../../globals.ts';
import type { ComponentType } from '../channel.ts';
import type { APIBaseInteraction, InteractionType } from '../interactions.ts';
@@ -9,7 +15,7 @@ export type APIMessageComponentInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageComponentInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -20,7 +26,7 @@ export type APIMessageComponentButtonInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageButtonInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -31,7 +37,7 @@ export type APIMessageComponentSelectMenuInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageSelectMenuInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -50,11 +56,42 @@ export interface APIMessageComponentBaseInteractionData<CType extends ComponentT
export type APIMessageButtonInteractionData = APIMessageComponentBaseInteractionData<ComponentType.Button>;
export interface APIMessageSelectMenuInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.SelectMenu> {
export interface APIMessageStringSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.StringSelect> {
values: string[];
}
export interface APIMessageUserSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.UserSelect> {
values: Snowflake[];
resolved: APIUserInteractionDataResolved;
}
export interface APIMessageRoleSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.RoleSelect> {
values: Snowflake[];
resolved: Required<Pick<APIInteractionDataResolved, 'roles'>>;
}
export interface APIMessageMentionableSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.MentionableSelect> {
values: Snowflake[];
resolved: Pick<APIInteractionDataResolved, 'users' | 'members' | 'roles'>;
}
export interface APIMessageChannelSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.ChannelSelect> {
values: Snowflake[];
resolved: Required<Pick<APIInteractionDataResolved, 'channels'>>;
}
export type APIMessageSelectMenuInteractionData =
| APIMessageStringSelectInteractionData
| APIMessageUserSelectInteractionData
| APIMessageRoleSelectInteractionData
| APIMessageMentionableSelectInteractionData
| APIMessageChannelSelectInteractionData;
export type APIMessageComponentDMInteraction = APIDMInteractionWrapper<APIMessageComponentInteraction>;
export type APIMessageComponentGuildInteraction = APIGuildInteractionWrapper<APIMessageComponentInteraction>;

View File

@@ -6,6 +6,7 @@ import type { OAuth2Scopes } from './oauth2.ts';
import type { APITeam } from './teams.ts';
import type { APIUser } from './user.ts';
import type { Permissions, Snowflake } from '../../globals.ts';
import type { LocalizationMap } from '../common.ts';
/**
* https://discord.com/developers/docs/resources/application#application-object
@@ -105,6 +106,11 @@ export interface APIApplication {
* The application's default custom authorization link, if enabled
*/
custom_install_url?: string;
/**
* The application's role connection verification entry point,
* which when configured will render the app as a verification method in the guild role verification configuration
*/
role_connections_verification_url?: string;
}
export interface APIApplicationInstallParams {
@@ -116,18 +122,131 @@ export interface APIApplicationInstallParams {
* https://discord.com/developers/docs/resources/application#application-object-application-flags
*/
export enum ApplicationFlags {
/**
* @unstable
*/
EmbeddedReleased = 1 << 1,
/**
* @unstable
*/
ManagedEmoji = 1 << 2,
/**
* @unstable
*/
GroupDMCreate = 1 << 4,
/**
* @unstable
*/
RPCHasConnected = 1 << 11,
/**
* Intent required for bots in 100 or more servers to receive `presence_update` events
*/
GatewayPresence = 1 << 12,
/**
* Intent required for bots in under 100 servers to receive `presence_update` events, found in Bot Settings
*/
GatewayPresenceLimited = 1 << 13,
/**
* Intent required for bots in 100 or more servers to receive member-related events like `guild_member_add`.
* See list of member-related events [under `GUILD_MEMBERS`](https://discord.com/developers/docs/topics/gateway#list-of-intents)
*/
GatewayGuildMembers = 1 << 14,
/**
* Intent required for bots in under 100 servers to receive member-related events like `guild_member_add`, found in Bot Settings.
* See list of member-related events [under `GUILD_MEMBERS`](https://discord.com/developers/docs/topics/gateway#list-of-intents)
*/
GatewayGuildMembersLimited = 1 << 15,
/**
* Indicates unusual growth of an app that prevents verification
*/
VerificationPendingGuildLimit = 1 << 16,
/**
* Indicates if an app is embedded within the Discord client (currently unavailable publicly)
*/
Embedded = 1 << 17,
/**
* Intent required for bots in 100 or more servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055)
*/
GatewayMessageContent = 1 << 18,
/**
* Intent required for bots in under 100 servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055),
* found in Bot Settings
*/
GatewayMessageContentLimited = 1 << 19,
/**
* @unstable
*/
EmbeddedFirstParty = 1 << 20,
/**
* Indicates if an app has registered global [application commands](https://discord.com/developers/docs/interactions/application-commands)
*/
ApplicationCommandBadge = 1 << 23,
}
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-structure
*/
export interface APIApplicationRoleConnectionMetadata {
/**
* Type of metadata value
*/
type: ApplicationRoleConnectionMetadataType;
/**
* Dictionary key for the metadata field (must be `a-z`, `0-9`, or `_` characters; max 50 characters)
*/
key: string;
/**
* Name of the metadata field (max 100 characters)
*/
name: string;
/**
* Translations of the name
*/
name_localizations?: LocalizationMap;
/**
* Description of the metadata field (max 200 characters)
*/
description: string;
/**
* Translations of the description
*/
description_localizations?: LocalizationMap;
}
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-type
*/
export enum ApplicationRoleConnectionMetadataType {
/**
* The metadata value (`integer`) is less than or equal to the guild's configured value (`integer`)
*/
IntegerLessThanOrEqual = 1,
/**
* The metadata value (`integer`) is greater than or equal to the guild's configured value (`integer`)
*/
IntegerGreaterThanOrEqual,
/**
* The metadata value (`integer`) is equal to the guild's configured value (`integer`)
*/
IntegerEqual,
/**
* The metadata value (`integer`) is not equal to the guild's configured value (`integer`)
*/
IntegerNotEqual,
/**
* The metadata value (`ISO8601 string`) is less than or equal to the guild's configured value (`integer`; days before current date)
*/
DatetimeLessThanOrEqual,
/**
* The metadata value (`ISO8601 string`) is greater than or equal to the guild's configured value (`integer`; days before current date)
*/
DatetimeGreaterThanOrEqual,
/**
* The metadata value (`integer`) is equal to the guild's configured value (`integer`; `1`)
*/
BooleanEqual,
/**
* The metadata value (`integer`) is not equal to the guild's configured value (`integer`; `1`)
*/
BooleanNotEqual,
}

View File

@@ -2,6 +2,13 @@
* Types extracted from https://discord.com/developers/docs/resources/audit-log
*/
import type {
APIAutoModerationAction,
APIAutoModerationRule,
APIAutoModerationRuleTriggerMetadata,
AutoModerationRuleEventType,
AutoModerationRuleTriggerType,
} from './autoModeration.ts';
import type { APIChannel, APIOverwrite } from './channel.ts';
import type {
APIGuildIntegration,
@@ -52,6 +59,12 @@ export interface APIAuditLog {
* See https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object
*/
audit_log_entries: APIAuditLogEntry[];
/**
* List of auto moderation rules referenced in the audit log
*
* See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object
*/
auto_moderation_rules: APIAutoModerationRule[];
/**
* Partial integration objects
*
@@ -180,12 +193,37 @@ export enum AuditLogEvent {
ThreadDelete,
ApplicationCommandPermissionUpdate = 121,
AutoModerationRuleCreate = 140,
AutoModerationRuleUpdate,
AutoModerationRuleDelete,
AutoModerationBlockMessage,
AutoModerationFlagToChannel,
AutoModerationUserCommunicationDisabled,
}
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-optional-audit-entry-info
*/
export interface APIAuditLogOptions {
/**
* Name of the Auto Moderation rule that was triggered
*
* Present from:
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
auto_moderation_rule_name?: string;
/**
* Trigger type of the Auto Moderation rule that was triggered
*
* Present from:
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
auto_moderation_rule_trigger_type?: AuditLogRuleTriggerType;
/**
* Number of days after which inactive members were kicked
*
@@ -212,6 +250,9 @@ export interface APIAuditLogOptions {
* - STAGE_INSTANCE_CREATE
* - STAGE_INSTANCE_UPDATE
* - STAGE_INSTANCE_DELETE
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
channel_id?: Snowflake;
@@ -275,6 +316,8 @@ export enum AuditLogOptionsType {
Member = '1',
}
export type AuditLogRuleTriggerType = `${AutoModerationRuleTriggerType}`;
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-change-object-audit-log-change-structure
*/
@@ -347,7 +390,14 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyEntityType
| APIAuditLogChangeKeyStatus
| APIAuditLogChangeKeyLocation
| APIAuditLogChangeKeyCommunicationDisabledUntil;
| APIAuditLogChangeKeyCommunicationDisabledUntil
| APIAuditLogChangeKeyTriggerType
| APIAuditLogChangeKeyEventType
| APIAuditLogChangeKeyTriggerMetadata
| APIAuditLogChangeKeyActions
| APIAuditLogChangeKeyEnabled
| APIAuditLogChangeKeyExemptRoles
| APIAuditLogChangeKeyExemptChannels;
/**
* Returned when an entity's name is changed
@@ -710,6 +760,44 @@ export type APIAuditLogChangeKeyLocation = AuditLogChangeData<'location', string
*/
export type APIAuditLogChangeKeyCommunicationDisabledUntil = AuditLogChangeData<'communication_disabled_until', string>;
/**
* Returned when an auto moderation rule's trigger type is changed (only in rule creation or deletion)
*/
export type APIAuditLogChangeKeyTriggerType = AuditLogChangeData<'trigger_type', AutoModerationRuleTriggerType>;
/**
* Returned when an auto moderation rule's event type is changed
*/
export type APIAuditLogChangeKeyEventType = AuditLogChangeData<'event_type', AutoModerationRuleEventType>;
/**
* Returned when an auto moderation rule's trigger metadata is changed
*/
export type APIAuditLogChangeKeyTriggerMetadata = AuditLogChangeData<
'trigger_metadata',
APIAutoModerationRuleTriggerMetadata
>;
/**
* Returned when an auto moderation rule's actions is changed
*/
export type APIAuditLogChangeKeyActions = AuditLogChangeData<'actions', APIAutoModerationAction[]>;
/**
* Returned when an auto moderation rule's enabled status is changed
*/
export type APIAuditLogChangeKeyEnabled = AuditLogChangeData<'enabled', boolean>;
/**
* Returned when an auto moderation rule's exempt roles is changed
*/
export type APIAuditLogChangeKeyExemptRoles = AuditLogChangeData<'exempt_roles', Snowflake[]>;
/**
* Returned when an auto moderation rule's exempt channels is changed
*/
export type APIAuditLogChangeKeyExemptChannels = AuditLogChangeData<'exempt_channels', Snowflake[]>;
interface AuditLogChangeData<K extends string, D> {
key: K;
/**

View File

@@ -0,0 +1,203 @@
/**
* Types extracted from https://discord.com/developers/docs/resources/auto-moderation
*/
import type { Snowflake } from '../../globals.ts';
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-auto-moderation-rule-structure
*/
export interface APIAutoModerationRule {
/**
* The id of this rule
*/
id: Snowflake;
/**
* The guild which this rule belongs to
*/
guild_id: Snowflake;
/**
* The rule name
*/
name: string;
/**
* The user id who created this rule
*/
creator_id: Snowflake;
/**
* The rule event type
*/
event_type: AutoModerationRuleEventType;
/**
* The rule trigger type
*/
trigger_type: AutoModerationRuleTriggerType;
/**
* The rule trigger metadata
*/
trigger_metadata: APIAutoModerationRuleTriggerMetadata;
/**
* The actions which will execute when this rule is triggered
*/
actions: APIAutoModerationAction[];
/**
* Whether this rule is enabled
*/
enabled: boolean;
/**
* The role ids that shouldn't be affected by this rule (Maximum of 20)
*/
exempt_roles: Snowflake[];
/**
* The channel ids that shouldn't be affected by this rule (Maximum of 50)
*/
exempt_channels: Snowflake[];
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-types
*/
export enum AutoModerationRuleTriggerType {
/**
* Check if content contains words from a user defined list of keywords (Maximum of 3 per guild)
*/
Keyword = 1,
/**
* Check if content represents generic spam (Maximum of 1 per guild)
*/
Spam = 3,
/**
* Check if content contains words from internal pre-defined wordsets (Maximum of 1 per guild)
*/
KeywordPreset,
/**
* Check if content contains more mentions than allowed (Maximum of 1 per guild)
*/
MentionSpam,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-metadata
*/
export interface APIAutoModerationRuleTriggerMetadata {
/**
* Substrings which will be searched for in content (Maximum of 1000)
*
* A keyword can be a phrase which contains multiple words. Wildcard symbols can be used to customize how each string will be matched. Each keyword must be 30 characters or less
* See [keyword matching strategies](https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-matching-strategies)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.Keyword}
*/
keyword_filter?: string[];
/**
* The internally pre-defined wordsets which will be searched for in content
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.KeywordPreset}
*/
presets?: AutoModerationRuleKeywordPresetType[];
/**
* Substrings which will be exempt from triggering the preset trigger type (Maximum of 1000)
*
* A allowed-word can be a phrase which contains multiple words. Wildcard symbols can be used to customize how each string will be matched. Each keyword must be 30 characters or less
* See [keyword matching strategies](https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-matching-strategies)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.KeywordPreset}
*/
allow_list?: string[];
/**
* Regular expression patterns which will be matched against content (Maximum of 10)
*
* Only Rust flavored regex is currently supported (Maximum of 75 characters)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.Keyword}
*/
regex_patterns?: string[];
/**
* Total number of mentions (role & user) allowed per message (Maximum of 50)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.MentionSpam}
*/
mention_total_limit?: number;
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-preset-types
*/
export enum AutoModerationRuleKeywordPresetType {
/**
* Words that may be considered forms of swearing or cursing
*/
Profanity = 1,
/**
* Words that refer to sexually explicit behavior or activity
*/
SexualContent,
/**
* Personal insults or words that may be considered hate speech
*/
Slurs,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-event-types
*/
export enum AutoModerationRuleEventType {
/**
* When a member sends or edits a message in the guild
*/
MessageSend = 1,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-auto-moderation-action-structure
*/
export interface APIAutoModerationAction {
/**
* The action type
*/
type: AutoModerationActionType;
/**
* Additional metadata needed during execution for this specific action type
*
* Will only be omitted if the action type is {@link AutoModerationActionType.BlockMessage}
*/
metadata?: APIAutoModerationActionMetadata;
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-types
*/
export enum AutoModerationActionType {
/**
* Blocks the content of a message according to the rule
*/
BlockMessage = 1,
/**
* Logs user content to a specified channel
*/
SendAlertMessage,
/**
* Timeout user for specified duration, this action type can be set if the bot has `MODERATE_MEMBERS` permission
*/
Timeout,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-metadata
*/
export interface APIAutoModerationActionMetadata {
/**
* Channel to which user content should be logged
*
* Associated action type: {@link AutoModerationActionType.SendAlertMessage}
*/
channel_id?: Snowflake;
/**
* Timeout duration in seconds (Maximum of 4 weeks - 2419200 seconds)
*
* Only available if using {@link AutoModerationRuleTriggerType.Keyword}
*
* Associated action type: {@link AutoModerationActionType.Timeout}
*/
duration_seconds?: number;
}

View File

@@ -25,9 +25,9 @@ export interface APIPartialChannel {
*/
type: ChannelType;
/**
* The name of the channel (2-100 characters)
* The name of the channel (1-100 characters)
*/
name?: string;
name?: string | null;
}
/**
@@ -57,6 +57,11 @@ 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;
/**
* When the last pinned message was pinned.
* This may be `null` in events such as `GUILD_CREATE` when a message is not pinned
*/
last_pin_timestamp?: string | 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
@@ -69,7 +74,11 @@ export interface APITextBasedChannel<T extends ChannelType> extends APIChannelBa
rate_limit_per_user?: number;
}
export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T> {
export interface APIGuildChannel<T extends ChannelType> extends Omit<APIChannelBase<T>, 'name'> {
/**
* The name of the channel (1-100 characters)
*/
name: string;
/**
* The id of the guild (may be missing for some channel objects received over gateway guild dispatches)
*/
@@ -83,7 +92,7 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
/**
* Sorting position of the channel
*/
position?: number;
position: number;
/**
* ID of the parent category for a channel (each parent category can contain up to 50 channels)
*
@@ -101,21 +110,21 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
export type GuildTextChannelType = Exclude<TextChannelType, ChannelType.DM | ChannelType.GroupDM>;
export interface APIGuildTextChannel<T extends GuildTextChannelType>
extends APITextBasedChannel<T>,
extends Omit<APITextBasedChannel<T>, 'name'>,
APIGuildChannel<T> {
/**
* Default duration for newly created threads, in minutes, to automatically archive the thread after recent activity
*/
default_auto_archive_duration?: ThreadAutoArchiveDuration;
/**
* The channel topic (0-1024 characters)
* The initial `rate_limit_per_user` to set on newly created threads.
* This field is copied to the thread at creation time and does not live update
*/
default_thread_rate_limit_per_user?: number;
/**
* The channel topic (0-4096 characters for forum channels, 0-1024 characters for all others)
*/
topic?: string | null;
/**
* When the last pinned message was pinned.
* This may be `null` in events such as `GUILD_CREATE` when a message is not pinned
*/
last_pin_timestamp?: string | null;
}
export type APITextChannel = APIGuildTextChannel<ChannelType.GuildText>;
@@ -141,7 +150,7 @@ export interface APIVoiceChannelBase<T extends ChannelType> extends APIGuildChan
export interface APIGuildVoiceChannel
extends APIVoiceChannelBase<ChannelType.GuildVoice>,
APITextBasedChannel<ChannelType.GuildVoice> {
Omit<APITextBasedChannel<ChannelType.GuildVoice>, 'name' | 'last_pin_timestamp'> {
/**
* The camera video quality mode of the voice channel, `1` when not present
*
@@ -161,9 +170,18 @@ export interface APIDMChannelBase<T extends ChannelType> extends Omit<APITextBas
recipients?: APIUser[];
}
export type APIDMChannel = APIDMChannelBase<ChannelType.DM>;
export interface APIDMChannel extends Omit<APIDMChannelBase<ChannelType.DM>, 'name'> {
/**
* The name of the channel (always null for DM channels)
*/
name: null;
}
export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.GroupDM>, 'name'> {
/**
* The name of the channel (1-100 characters)
*/
name: string | null;
/**
* Application id of the group DM creator if it is bot-created
*/
@@ -172,10 +190,6 @@ export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.Gro
* Icon hash
*/
icon?: string | null;
/**
* The name of the channel (2-100 characters)
*/
name?: string | null;
/**
* ID of the DM creator
*/
@@ -187,7 +201,11 @@ export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.Gro
}
export interface APIThreadChannel
extends APIGuildChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread> {
extends Omit<
APITextBasedChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread>,
'name'
>,
APIGuildChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread> {
/**
* The client users member for the thread, only included in select endpoints
*/
@@ -206,33 +224,112 @@ export interface APIThreadChannel
* The approximate member count of the thread, does not count above 50 even if there are more members
*/
member_count?: number;
/**
* 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;
/**
* ID of the thread creator
*/
owner_id?: Snowflake;
/**
* 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;
/**
* The IDs of the set of tags that have been applied to a thread in a forum channel
*/
applied_tags: Snowflake[];
}
export type APIGuildForumChannel = APIGuildTextChannel<ChannelType.GuildForum>;
/**
* https://discord.com/developers/docs/resources/channel#forum-tag-object-forum-tag-structure
*/
export interface APIGuildForumTag {
/**
* The id of the tag
*/
id: Snowflake;
/**
* The name of the tag (0-20 characters)
*/
name: string;
/**
* Whether this tag can only be added to or removed from threads by a member with the `MANAGE_THREADS` permission
*/
moderated: boolean;
/**
* The id of a guild's custom emoji
*/
emoji_id: Snowflake | null;
/**
* The unicode character of the emoji
*/
emoji_name: string | null;
}
/**
* https://discord.com/developers/docs/resources/channel#default-reaction-object-default-reaction-structure
*/
export interface APIGuildForumDefaultReactionEmoji {
/**
* The id of a guild's custom emoji
*/
emoji_id: Snowflake | null;
/**
* The unicode character of the emoji
*/
emoji_name: string | null;
}
/**
* https://discord.com/developers/docs/resources/channel/#channel-object-sort-order-types
*/
export enum SortOrderType {
/**
* Sort forum posts by activity
*/
LatestActivity,
/**
* Sort forum posts by creation time (from most recent to oldest)
*/
CreationDate,
}
/**
* https://discord.com/developers/docs/resources/channel/#channel-object-forum-layout-types
*/
export enum ForumLayoutType {
/**
* No default has been set for forum channel
*/
NotSet,
/**
* Display posts as a list
*/
ListView,
/**
* Display posts as a collection of tiles
*/
GalleryView,
}
export interface APIGuildForumChannel extends APIGuildTextChannel<ChannelType.GuildForum> {
/**
* The set of tags that can be used in a forum channel
*/
available_tags: APIGuildForumTag[];
/**
* The emoji to show in the add reaction button on a thread in a forum channel
*/
default_reaction_emoji: APIGuildForumDefaultReactionEmoji | null;
/**
* The default sort order type used to order posts in a forum channel
*/
default_sort_order: SortOrderType | null;
/**
* The default layout type used to display posts in a forum channel. Defaults to `0`, which indicates a layout view has not been set by a channel admin
*/
default_forum_layout: ForumLayoutType;
}
/**
* https://discord.com/developers/docs/resources/channel#channel-object-channel-structure
@@ -246,7 +343,6 @@ export type APIChannel =
| APIGuildStageVoiceChannel
| APIGuildCategoryChannel
| APIThreadChannel
| APINewsChannel
| APIGuildForumChannel;
/**
@@ -272,13 +368,13 @@ export enum ChannelType {
/**
* An organizational category that contains up to 50 channels
*
* See https://support.discord.com/hc/en-us/articles/115001580171-Channel-Categories-101
* See https://support.discord.com/hc/articles/115001580171
*/
GuildCategory,
/**
* A channel that users can follow and crosspost into their own guild
*
* See https://support.discord.com/hc/en-us/articles/360032008192
* See https://support.discord.com/hc/articles/360032008192
*/
GuildAnnouncement,
/**
@@ -286,7 +382,7 @@ export enum ChannelType {
*/
AnnouncementThread = 10,
/**
* A temporary sub-channel within a Guild Text channel
* A temporary sub-channel within a Guild Text or Guild Forum channel
*/
PublicThread,
/**
@@ -296,13 +392,13 @@ export enum ChannelType {
/**
* A voice channel for hosting events with an audience
*
* See https://support.discord.com/hc/en-us/articles/1500005513722
* See https://support.discord.com/hc/articles/1500005513722
*/
GuildStageVoice,
/**
* The channel in a Student Hub containing the listed servers
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*/
GuildDirectory,
/**
@@ -317,7 +413,7 @@ export enum ChannelType {
*
* @deprecated This is the old name for {@apilink ChannelType#GuildAnnouncement}
*
* See https://support.discord.com/hc/en-us/articles/360032008192
* See https://support.discord.com/hc/articles/360032008192
*/
GuildNews = 5,
/**
@@ -380,7 +476,7 @@ export interface APIMessage {
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
content: string;
/**
@@ -437,7 +533,7 @@ export interface APIMessage {
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
attachments: APIAttachment[];
/**
@@ -450,7 +546,7 @@ export interface APIMessage {
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
embeds: APIEmbed[];
/**
@@ -540,7 +636,7 @@ export interface APIMessage {
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
components?: APIActionRowComponent<APIMessageActionRowComponent>[];
/**
@@ -591,6 +687,7 @@ export enum MessageType {
ThreadStarterMessage,
GuildInviteReminder,
ContextMenuCommand,
AutoModerationAction,
}
/**
@@ -943,6 +1040,12 @@ export enum EmbedType {
* Link embed
*/
Link = 'link',
/**
* Auto moderation alert embed
*
* @unstable This embed type is currently not documented by Discord, but it is returned in the auto moderation system messages.
*/
AutoModerationMessage = 'auto_moderation_message',
}
/**
@@ -1230,13 +1333,38 @@ export enum ComponentType {
*/
Button,
/**
* Select Menu component
* Select menu for picking from defined text options
*/
SelectMenu,
StringSelect,
/**
* Text Input component
*/
TextInput,
/**
* Select menu for users
*/
UserSelect,
/**
* Select menu for roles
*/
RoleSelect,
/**
* Select menu for users and roles
*/
MentionableSelect,
/**
* Select menu for channels
*/
ChannelSelect,
// EVERYTHING BELOW THIS LINE SHOULD BE OLD NAMES FOR RENAMED ENUM MEMBERS //
/**
* Select menu for picking from defined text options
*
* @deprecated This is the old name for {@apilink ComponentType#StringSelect}
*/
SelectMenu = 3,
}
/**
@@ -1328,15 +1456,18 @@ export enum TextInputStyle {
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APISelectMenuComponent extends APIBaseComponent<ComponentType.SelectMenu> {
export interface APIBaseSelectMenuComponent<
T extends
| ComponentType.StringSelect
| ComponentType.UserSelect
| ComponentType.RoleSelect
| ComponentType.MentionableSelect
| ComponentType.ChannelSelect,
> extends APIBaseComponent<T> {
/**
* A developer-defined identifier for the select menu, max 100 characters
*/
custom_id: string;
/**
* The choices in the select, max 25
*/
options: APISelectMenuOption[];
/**
* Custom placeholder text if nothing is selected, max 150 characters
*/
@@ -1361,6 +1492,51 @@ export interface APISelectMenuComponent extends APIBaseComponent<ComponentType.S
disabled?: boolean;
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APIStringSelectComponent extends APIBaseSelectMenuComponent<ComponentType.StringSelect> {
/**
* Specified choices in a select menu; max 25
*/
options: APISelectMenuOption[];
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIUserSelectComponent = APIBaseSelectMenuComponent<ComponentType.UserSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIRoleSelectComponent = APIBaseSelectMenuComponent<ComponentType.RoleSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIMentionableSelectComponent = APIBaseSelectMenuComponent<ComponentType.MentionableSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APIChannelSelectComponent extends APIBaseSelectMenuComponent<ComponentType.ChannelSelect> {
/**
* List of channel types to include in the ChannelSelect component
*/
channel_types?: ChannelType[];
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APISelectMenuComponent =
| APIStringSelectComponent
| APIUserSelectComponent
| APIRoleSelectComponent
| APIMentionableSelectComponent
| APIChannelSelectComponent;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-option-structure
*/
@@ -1429,7 +1605,15 @@ export interface APITextInputComponent extends APIBaseComponent<ComponentType.Te
* https://discord.com/developers/docs/resources/channel#channel-object-channel-flags
*/
export enum ChannelFlags {
/**
* This thread is pinned to the top of its parent forum channel
*/
Pinned = 1 << 1,
/**
* Whether a tag is required to be specified when creating a thread in a forum channel.
* Tags are specified in the `applied_tags` field
*/
RequireTag = 1 << 4,
}
/**

View File

@@ -1,5 +1,7 @@
/**
* Types extracted from https://discord.com/developers/docs/topics/gateway
* Types extracted from
* - https://discord.com/developers/docs/topics/gateway
* - https://discord.com/developers/docs/topics/gateway-events
*/
import type { APIChannel, APIThreadMember } from './channel.ts';
@@ -58,7 +60,7 @@ export interface APIGatewaySessionStartLimit {
}
/**
* https://discord.com/developers/docs/topics/gateway#presence-update-presence-update-event-fields
* https://discord.com/developers/docs/topics/gateway-events#presence-update-presence-update-event-fields
*/
export interface GatewayPresenceUpdate {
/**
@@ -81,13 +83,13 @@ export interface GatewayPresenceUpdate {
/**
* User's current activities
*
* See https://discord.com/developers/docs/topics/gateway#activity-object
* See https://discord.com/developers/docs/topics/gateway-events#activity-object
*/
activities?: GatewayActivity[];
/**
* User's platform-dependent status
*
* See https://discord.com/developers/docs/topics/gateway#client-status-object
* See https://discord.com/developers/docs/topics/gateway-events#client-status-object
*/
client_status?: GatewayPresenceClientStatus;
}
@@ -104,7 +106,7 @@ export enum PresenceUpdateStatus {
}
/**
* https://discord.com/developers/docs/topics/gateway#client-status-object
* https://discord.com/developers/docs/topics/gateway-events#client-status-object
*/
export interface GatewayPresenceClientStatus {
/**
@@ -122,7 +124,7 @@ export interface GatewayPresenceClientStatus {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-structure
*/
export interface GatewayActivity {
/**
@@ -137,7 +139,7 @@ export interface GatewayActivity {
/**
* Activity type
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-types
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types
*/
type: ActivityType;
/**
@@ -177,7 +179,7 @@ export interface GatewayActivity {
/**
* The emoji used for a custom status
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-emoji
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-emoji
*/
emoji?: GatewayActivityEmoji;
/**
@@ -187,19 +189,19 @@ export interface GatewayActivity {
/**
* Information for the current party of the player
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-party
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-party
*/
party?: GatewayActivityParty;
/**
* Images for the presence and their hover texts
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-assets
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-assets
*/
assets?: GatewayActivityAssets;
/**
* Secrets for Rich Presence joining and spectating
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-secrets
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-secrets
*/
secrets?: GatewayActivitySecrets;
/**
@@ -209,7 +211,7 @@ export interface GatewayActivity {
/**
* Activity flags `OR`d together, describes what the payload includes
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags
*
* See https://en.wikipedia.org/wiki/Bit_field
*/
@@ -236,7 +238,7 @@ export enum ActivityPlatform {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-types
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types
*/
export enum ActivityType {
/**
@@ -266,7 +268,7 @@ export enum ActivityType {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-timestamps
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-timestamps
*/
export interface GatewayActivityTimestamps {
/**
@@ -280,12 +282,12 @@ export interface GatewayActivityTimestamps {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-emoji
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-emoji
*/
export type GatewayActivityEmoji = Partial<Pick<APIEmoji, 'id' | 'animated'>> & Pick<APIEmoji, 'name'>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-party
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-party
*/
export interface GatewayActivityParty {
/**
@@ -299,19 +301,19 @@ export interface GatewayActivityParty {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-assets
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-assets
*/
export type GatewayActivityAssets = Partial<
Record<'large_image' | 'large_text' | 'small_image' | 'small_text', string>
>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-secrets
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-secrets
*/
export type GatewayActivitySecrets = Partial<Record<'join' | 'spectate' | 'match', string>>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags
*/
export enum ActivityFlags {
Instance = 1 << 0,
@@ -337,7 +339,7 @@ export interface GatewayActivityButton {
}
/**
* https://discord.com/developers/docs/topics/gateway#thread-list-sync-thread-list-sync-event-fields
* https://discord.com/developers/docs/topics/gateway-events#thread-list-sync-thread-list-sync-event-fields
*/
export interface GatewayThreadListSync {
/**
@@ -359,7 +361,7 @@ export interface GatewayThreadListSync {
}
/**
* https://discord.com/developers/docs/topics/gateway#thread-members-update-thread-members-update-event-fields
* https://discord.com/developers/docs/topics/gateway-events#thread-members-update-thread-members-update-event-fields
*/
export interface GatewayThreadMembersUpdate {
/**

View File

@@ -118,9 +118,9 @@ export interface APIGuild extends APIPartialGuild {
*/
afk_channel_id: Snowflake | null;
/**
* afk timeout in seconds
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout: number;
afk_timeout: 60 | 300 | 900 | 1800 | 3600;
/**
* `true` if the guild widget is enabled
*/
@@ -382,6 +382,16 @@ export enum GuildFeature {
* Guild has access to set an animated guild icon
*/
AnimatedIcon = 'ANIMATED_ICON',
/**
* Guild is using the old permissions configuration behavior
*
* See https://discord.com/developers/docs/change-log#upcoming-application-command-permission-changes
*/
ApplicationCommandPermissionsV2 = 'APPLICATION_COMMAND_PERMISSIONS_V2',
/**
* Guild has set up auto moderation rules
*/
AutoModeration = 'AUTO_MODERATION',
/**
* Guild has access to set a guild banner image
*/
@@ -390,6 +400,10 @@ export enum GuildFeature {
* Guild can enable welcome screen, Membership Screening and discovery, and receives community updates
*/
Community = 'COMMUNITY',
/*
* Guild has been set as a support server on the App Directory
*/
DeveloperSupportServer = 'DEVELOPER_SUPPORT_SERVER',
/**
* Guild is able to be discovered in the directory
*/
@@ -405,7 +419,7 @@ export enum GuildFeature {
/**
* Guild is a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
@@ -421,7 +435,7 @@ export enum GuildFeature {
/**
* Guild is in a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
@@ -588,7 +602,7 @@ export interface APIGuildMember {
/**
* When the user started boosting the guild
*
* See https://support.discord.com/hc/en-us/articles/360028038352-Server-Boosting-
* See https://support.discord.com/hc/articles/360028038352
*/
premium_since?: string | null;
/**

View File

@@ -1,6 +1,7 @@
export * from '../common.ts';
export * from './application.ts';
export * from './auditLog.ts';
export * from './autoModeration.ts';
export * from './channel.ts';
export * from './emoji.ts';
export * from './gateway.ts';

View File

@@ -61,6 +61,10 @@ export enum OAuth2Scopes {
* (otherwise restricted to channels/guilds your app creates)
*/
MessagesRead = 'messages.read',
/**
* Allows your app to update a user's connection and metadata for the app
*/
RoleConnectionsWrite = 'role_connections.write',
/**
* For local rpc server access, this allows you to control a user's local Discord client - requires Discord approval
*/

View File

@@ -73,7 +73,7 @@ export enum StickerType {
*/
Standard = 1,
/**
* A sticker uploaded to a Boosted guild for the guild's members
* A sticker uploaded to a guild for the guild's members
*/
Guild,
}

View File

@@ -134,7 +134,7 @@ export enum UserFlags {
*/
VerifiedDeveloper = 1 << 17,
/**
* Discord Certified Moderator
* Moderator Programs Alumni
*/
CertifiedModerator = 1 << 18,
/**
@@ -148,11 +148,19 @@ export enum UserFlags {
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
* User is an [Active Developer](https://support-dev.discord.com/hc/articles/10113997751447)
*/
ActiveDeveloper = 1 << 22,
/**
* User's account has been [quarantined](https://support.discord.com/hc/articles/6461420677527) 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.
*
* @privateRemarks
*
* This value would be 1 << 44, but bit shifting above 1 << 30 requires bigints
*/
Quarantined = Math.pow(2, 44),
Quarantined = 17592186044416,
}
/**
@@ -162,6 +170,7 @@ export enum UserPremiumType {
None,
NitroClassic,
Nitro,
NitroBasic,
}
/**
@@ -204,6 +213,10 @@ export interface APIConnection {
* Whether activities related to this connection will be shown in presence updates
*/
show_activity: boolean;
/**
* Whether this connection supports console voice transfer
*/
two_way_link: boolean;
/**
* Visibility of this connection
*
@@ -242,3 +255,21 @@ export enum ConnectionVisibility {
*/
Everyone,
}
/**
* https://discord.com/developers/docs/resources/user#application-role-connection-object-application-role-connection-structure
*/
export interface APIApplicationRoleConnection {
/**
* The vanity name of the platform a bot has connected (max 50 characters)
*/
platform_name: string | null;
/**
* The username on the platform a bot has connected (max 100 characters)
*/
platform_username: string | null;
/**
* Object mapping application role connection metadata keys to their `string`-ified value (max 100 characters) for the user on the platform a bot has connected
*/
metadata: Record<string, string | number>;
}

View File

@@ -86,7 +86,7 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
/**
* Sorting position of the channel
*/
position?: number;
position: number;
/**
* ID of the parent category for a channel (each parent category can contain up to 50 channels)
*/

View File

@@ -43,14 +43,8 @@ import type {
APIApplicationCommandUserOption,
} from './_chatInput/user.ts';
import type { APIBaseApplicationCommandInteractionData } from './internals.ts';
import type { Snowflake } from '../../../../globals.ts';
import type { APIAttachment, APIRole, APIUser } from '../../mod.ts';
import type {
APIApplicationCommandInteractionWrapper,
APIInteractionDataResolvedChannel,
APIInteractionDataResolvedGuildMember,
ApplicationCommandType,
} from '../applicationCommands.ts';
import type { APIInteractionDataResolved } from '../../mod.ts';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands.ts';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
export * from './_chatInput/attachment.ts';
@@ -114,18 +108,7 @@ export type APIApplicationCommandInteractionDataBasicOption =
export interface APIChatInputApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
options?: APIApplicationCommandInteractionDataOption[];
resolved?: APIChatInputApplicationCommandInteractionDataResolved;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIChatInputApplicationCommandInteractionDataResolved {
users?: Record<Snowflake, APIUser>;
roles?: Record<Snowflake, APIRole>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
channels?: Record<Snowflake, APIInteractionDataResolvedChannel>;
attachments?: Record<Snowflake, APIAttachment>;
resolved?: APIInteractionDataResolved;
}
/**

View File

@@ -1,13 +1,8 @@
import type { APIBaseApplicationCommandInteractionData } from './internals.ts';
import type { Snowflake } from '../../../../globals.ts';
import type { APIMessage } from '../../channel.ts';
import type { APIUser } from '../../user.ts';
import type {
APIApplicationCommandInteractionWrapper,
APIInteractionDataResolvedGuildMember,
ApplicationCommandType,
} from '../applicationCommands.ts';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands.ts';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIUserInteractionDataResolved } from '../base.ts';
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
@@ -15,15 +10,7 @@ import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../bas
export interface APIUserApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.User> {
target_id: Snowflake;
resolved: APIUserApplicationCommandInteractionDataResolved;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIUserApplicationCommandInteractionDataResolved {
users: Record<Snowflake, APIUser>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
resolved: APIUserInteractionDataResolved;
}
/**

View File

@@ -15,8 +15,6 @@ import type { APIBaseInteraction } from './base.ts';
import type { InteractionType } from './responses.ts';
import type { Permissions, Snowflake } from '../../../globals.ts';
import type { LocalizationMap } from '../../../v9.ts';
import type { APIPartialChannel, APIThreadMetadata } from '../channel.ts';
import type { APIGuildMember } from '../guild.ts';
export * from './_applicationCommands/chatInput.ts';
export * from './_applicationCommands/contextMenu.ts';
@@ -85,6 +83,10 @@ export interface APIApplicationCommand {
* @deprecated Use `dm_permission` and/or `default_member_permissions` instead
*/
default_permission?: boolean;
/**
* Indicates whether the command is age-restricted, defaults to `false`
*/
nsfw?: boolean;
/**
* Autoincrementing version identifier updated during substantial record changes
*/
@@ -107,28 +109,14 @@ export type APIApplicationCommandInteractionData =
| APIChatInputApplicationCommandInteractionData
| APIContextMenuInteractionData;
/**
* https://discord.com/developers/docs/resources/channel#channel-object
*/
export interface APIInteractionDataResolvedChannel extends Required<APIPartialChannel> {
thread_metadata?: APIThreadMetadata | null;
permissions: Permissions;
parent_id?: string | null;
}
/**
* https://discord.com/developers/docs/resources/guild#guild-member-object
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'user' | 'deaf' | 'mute'> {
permissions: Permissions;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object
*/
export type APIApplicationCommandInteractionWrapper<Data extends APIApplicationCommandInteractionData> =
APIBaseInteraction<InteractionType.ApplicationCommand, Data> &
Required<Pick<APIBaseInteraction<InteractionType.ApplicationCommand, Data>, 'channel_id' | 'data'>>;
Required<
Pick<APIBaseInteraction<InteractionType.ApplicationCommand, Data>, 'channel_id' | 'data' | 'app_permissions'>
>;
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object

View File

@@ -1,7 +1,7 @@
import type { InteractionType } from './responses.ts';
import type { Permissions, Snowflake } from '../../../globals.ts';
import type { LocaleString } from '../../../v9.ts';
import type { APIMessage } from '../channel.ts';
import type { APIRole, LocaleString } from '../../../v9.ts';
import type { APIAttachment, APIMessage, APIPartialChannel, APIThreadMetadata } from '../channel.ts';
import type { APIGuildMember } from '../guild.ts';
import type { APIUser } from '../user.ts';
@@ -129,3 +129,46 @@ export type APIGuildInteractionWrapper<Original extends APIBaseInteraction<Inter
'user'
> &
Required<Pick<Original, 'member' | 'guild_id'>>;
/**
* https://discord.com/developers/docs/resources/channel#channel-object
*/
export interface APIInteractionDataResolvedChannel extends Required<APIPartialChannel> {
thread_metadata?: APIThreadMetadata | null;
permissions: Permissions;
parent_id?: string | null;
}
/**
* https://discord.com/developers/docs/resources/guild#guild-member-object
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'user' | 'deaf' | 'mute'> {
permissions: Permissions;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIInteractionDataResolved {
users?: Record<Snowflake, APIUser>;
roles?: Record<Snowflake, APIRole>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
channels?: Record<Snowflake, APIInteractionDataResolvedChannel>;
attachments?: Record<Snowflake, APIAttachment>;
}
/**
* @deprecated Renamed to `APIInteractionDataResolved`
*/
export type APIChatInputApplicationCommandInteractionDataResolved = APIInteractionDataResolved;
/**
* `users` and optional `members` from APIInteractionDataResolved, for user commands and user selects
*/
export type APIUserInteractionDataResolved = Required<Pick<APIInteractionDataResolved, 'users'>> &
Pick<APIInteractionDataResolved, 'members'>;
/**
* @deprecated Renamed to `APIUserInteractionDataResolved`
*/
export type APIUserApplicationCommandInteractionDataResolved = APIUserInteractionDataResolved;

View File

@@ -1,4 +1,10 @@
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from './base.ts';
import type {
APIDMInteractionWrapper,
APIGuildInteractionWrapper,
APIInteractionDataResolved,
APIUserInteractionDataResolved,
} from './base.ts';
import type { Snowflake } from '../../../globals.ts';
import type { ComponentType } from '../channel.ts';
import type { APIBaseInteraction, InteractionType } from '../interactions.ts';
@@ -9,7 +15,7 @@ export type APIMessageComponentInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageComponentInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -20,7 +26,7 @@ export type APIMessageComponentButtonInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageButtonInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -31,7 +37,7 @@ export type APIMessageComponentSelectMenuInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageSelectMenuInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -50,11 +56,42 @@ export interface APIMessageComponentBaseInteractionData<CType extends ComponentT
export type APIMessageButtonInteractionData = APIMessageComponentBaseInteractionData<ComponentType.Button>;
export interface APIMessageSelectMenuInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.SelectMenu> {
export interface APIMessageStringSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.StringSelect> {
values: string[];
}
export interface APIMessageUserSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.UserSelect> {
values: Snowflake[];
resolved: APIUserInteractionDataResolved;
}
export interface APIMessageRoleSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.RoleSelect> {
values: Snowflake[];
resolved: Required<Pick<APIInteractionDataResolved, 'roles'>>;
}
export interface APIMessageMentionableSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.MentionableSelect> {
values: Snowflake[];
resolved: Pick<APIInteractionDataResolved, 'users' | 'members' | 'roles'>;
}
export interface APIMessageChannelSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.ChannelSelect> {
values: Snowflake[];
resolved: Required<Pick<APIInteractionDataResolved, 'channels'>>;
}
export type APIMessageSelectMenuInteractionData =
| APIMessageStringSelectInteractionData
| APIMessageUserSelectInteractionData
| APIMessageRoleSelectInteractionData
| APIMessageMentionableSelectInteractionData
| APIMessageChannelSelectInteractionData;
export type APIMessageComponentDMInteraction = APIDMInteractionWrapper<APIMessageComponentInteraction>;
export type APIMessageComponentGuildInteraction = APIGuildInteractionWrapper<APIMessageComponentInteraction>;

View File

@@ -6,6 +6,7 @@ import type { OAuth2Scopes } from './oauth2.ts';
import type { APITeam } from './teams.ts';
import type { APIUser } from './user.ts';
import type { Permissions, Snowflake } from '../../globals.ts';
import type { LocalizationMap } from '../common.ts';
/**
* https://discord.com/developers/docs/resources/application#application-object
@@ -105,6 +106,11 @@ export interface APIApplication {
* The application's default custom authorization link, if enabled
*/
custom_install_url?: string;
/**
* The application's role connection verification entry point,
* which when configured will render the app as a verification method in the guild role verification configuration
*/
role_connections_verification_url?: string;
}
export interface APIApplicationInstallParams {
@@ -116,18 +122,131 @@ export interface APIApplicationInstallParams {
* https://discord.com/developers/docs/resources/application#application-object-application-flags
*/
export enum ApplicationFlags {
/**
* @unstable
*/
EmbeddedReleased = 1 << 1,
/**
* @unstable
*/
ManagedEmoji = 1 << 2,
/**
* @unstable
*/
GroupDMCreate = 1 << 4,
/**
* @unstable
*/
RPCHasConnected = 1 << 11,
/**
* Intent required for bots in 100 or more servers to receive `presence_update` events
*/
GatewayPresence = 1 << 12,
/**
* Intent required for bots in under 100 servers to receive `presence_update` events, found in Bot Settings
*/
GatewayPresenceLimited = 1 << 13,
/**
* Intent required for bots in 100 or more servers to receive member-related events like `guild_member_add`.
* See list of member-related events [under `GUILD_MEMBERS`](https://discord.com/developers/docs/topics/gateway#list-of-intents)
*/
GatewayGuildMembers = 1 << 14,
/**
* Intent required for bots in under 100 servers to receive member-related events like `guild_member_add`, found in Bot Settings.
* See list of member-related events [under `GUILD_MEMBERS`](https://discord.com/developers/docs/topics/gateway#list-of-intents)
*/
GatewayGuildMembersLimited = 1 << 15,
/**
* Indicates unusual growth of an app that prevents verification
*/
VerificationPendingGuildLimit = 1 << 16,
/**
* Indicates if an app is embedded within the Discord client (currently unavailable publicly)
*/
Embedded = 1 << 17,
/**
* Intent required for bots in 100 or more servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055)
*/
GatewayMessageContent = 1 << 18,
/**
* Intent required for bots in under 100 servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055),
* found in Bot Settings
*/
GatewayMessageContentLimited = 1 << 19,
/**
* @unstable
*/
EmbeddedFirstParty = 1 << 20,
/**
* Indicates if an app has registered global [application commands](https://discord.com/developers/docs/interactions/application-commands)
*/
ApplicationCommandBadge = 1 << 23,
}
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-structure
*/
export interface APIApplicationRoleConnectionMetadata {
/**
* Type of metadata value
*/
type: ApplicationRoleConnectionMetadataType;
/**
* Dictionary key for the metadata field (must be `a-z`, `0-9`, or `_` characters; max 50 characters)
*/
key: string;
/**
* Name of the metadata field (max 100 characters)
*/
name: string;
/**
* Translations of the name
*/
name_localizations?: LocalizationMap;
/**
* Description of the metadata field (max 200 characters)
*/
description: string;
/**
* Translations of the description
*/
description_localizations?: LocalizationMap;
}
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-type
*/
export enum ApplicationRoleConnectionMetadataType {
/**
* The metadata value (`integer`) is less than or equal to the guild's configured value (`integer`)
*/
IntegerLessThanOrEqual = 1,
/**
* The metadata value (`integer`) is greater than or equal to the guild's configured value (`integer`)
*/
IntegerGreaterThanOrEqual,
/**
* The metadata value (`integer`) is equal to the guild's configured value (`integer`)
*/
IntegerEqual,
/**
* The metadata value (`integer`) is not equal to the guild's configured value (`integer`)
*/
IntegerNotEqual,
/**
* The metadata value (`ISO8601 string`) is less than or equal to the guild's configured value (`integer`; days before current date)
*/
DatetimeLessThanOrEqual,
/**
* The metadata value (`ISO8601 string`) is greater than or equal to the guild's configured value (`integer`; days before current date)
*/
DatetimeGreaterThanOrEqual,
/**
* The metadata value (`integer`) is equal to the guild's configured value (`integer`; `1`)
*/
BooleanEqual,
/**
* The metadata value (`integer`) is not equal to the guild's configured value (`integer`; `1`)
*/
BooleanNotEqual,
}

View File

@@ -2,6 +2,13 @@
* Types extracted from https://discord.com/developers/docs/resources/audit-log
*/
import type {
APIAutoModerationAction,
APIAutoModerationRule,
APIAutoModerationRuleTriggerMetadata,
AutoModerationRuleEventType,
AutoModerationRuleTriggerType,
} from './autoModeration.ts';
import type { APIChannel, APIOverwrite } from './channel.ts';
import type {
APIGuildIntegration,
@@ -52,6 +59,12 @@ export interface APIAuditLog {
* See https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object
*/
audit_log_entries: APIAuditLogEntry[];
/**
* List of auto moderation rules referenced in the audit log
*
* See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object
*/
auto_moderation_rules: APIAutoModerationRule[];
/**
* Partial integration objects
*
@@ -180,12 +193,37 @@ export enum AuditLogEvent {
ThreadDelete,
ApplicationCommandPermissionUpdate = 121,
AutoModerationRuleCreate = 140,
AutoModerationRuleUpdate,
AutoModerationRuleDelete,
AutoModerationBlockMessage,
AutoModerationFlagToChannel,
AutoModerationUserCommunicationDisabled,
}
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-optional-audit-entry-info
*/
export interface APIAuditLogOptions {
/**
* Name of the Auto Moderation rule that was triggered
*
* Present from:
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
auto_moderation_rule_name?: string;
/**
* Trigger type of the Auto Moderation rule that was triggered
*
* Present from:
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
auto_moderation_rule_trigger_type?: AuditLogRuleTriggerType;
/**
* Number of days after which inactive members were kicked
*
@@ -212,6 +250,9 @@ export interface APIAuditLogOptions {
* - STAGE_INSTANCE_CREATE
* - STAGE_INSTANCE_UPDATE
* - STAGE_INSTANCE_DELETE
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
channel_id?: Snowflake;
@@ -275,6 +316,8 @@ export enum AuditLogOptionsType {
Member = '1',
}
export type AuditLogRuleTriggerType = `${AutoModerationRuleTriggerType}`;
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-change-object-audit-log-change-structure
*/
@@ -347,7 +390,14 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyEntityType
| APIAuditLogChangeKeyStatus
| APIAuditLogChangeKeyLocation
| APIAuditLogChangeKeyCommunicationDisabledUntil;
| APIAuditLogChangeKeyCommunicationDisabledUntil
| APIAuditLogChangeKeyTriggerType
| APIAuditLogChangeKeyEventType
| APIAuditLogChangeKeyTriggerMetadata
| APIAuditLogChangeKeyActions
| APIAuditLogChangeKeyEnabled
| APIAuditLogChangeKeyExemptRoles
| APIAuditLogChangeKeyExemptChannels;
/**
* Returned when an entity's name is changed
@@ -710,6 +760,44 @@ export type APIAuditLogChangeKeyLocation = AuditLogChangeData<'location', string
*/
export type APIAuditLogChangeKeyCommunicationDisabledUntil = AuditLogChangeData<'communication_disabled_until', string>;
/**
* Returned when an auto moderation rule's trigger type is changed (only in rule creation or deletion)
*/
export type APIAuditLogChangeKeyTriggerType = AuditLogChangeData<'trigger_type', AutoModerationRuleTriggerType>;
/**
* Returned when an auto moderation rule's event type is changed
*/
export type APIAuditLogChangeKeyEventType = AuditLogChangeData<'event_type', AutoModerationRuleEventType>;
/**
* Returned when an auto moderation rule's trigger metadata is changed
*/
export type APIAuditLogChangeKeyTriggerMetadata = AuditLogChangeData<
'trigger_metadata',
APIAutoModerationRuleTriggerMetadata
>;
/**
* Returned when an auto moderation rule's actions is changed
*/
export type APIAuditLogChangeKeyActions = AuditLogChangeData<'actions', APIAutoModerationAction[]>;
/**
* Returned when an auto moderation rule's enabled status is changed
*/
export type APIAuditLogChangeKeyEnabled = AuditLogChangeData<'enabled', boolean>;
/**
* Returned when an auto moderation rule's exempt roles is changed
*/
export type APIAuditLogChangeKeyExemptRoles = AuditLogChangeData<'exempt_roles', Snowflake[]>;
/**
* Returned when an auto moderation rule's exempt channels is changed
*/
export type APIAuditLogChangeKeyExemptChannels = AuditLogChangeData<'exempt_channels', Snowflake[]>;
interface AuditLogChangeData<K extends string, D> {
key: K;
/**

View File

@@ -0,0 +1,203 @@
/**
* Types extracted from https://discord.com/developers/docs/resources/auto-moderation
*/
import type { Snowflake } from '../../globals.ts';
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-auto-moderation-rule-structure
*/
export interface APIAutoModerationRule {
/**
* The id of this rule
*/
id: Snowflake;
/**
* The guild which this rule belongs to
*/
guild_id: Snowflake;
/**
* The rule name
*/
name: string;
/**
* The user id who created this rule
*/
creator_id: Snowflake;
/**
* The rule event type
*/
event_type: AutoModerationRuleEventType;
/**
* The rule trigger type
*/
trigger_type: AutoModerationRuleTriggerType;
/**
* The rule trigger metadata
*/
trigger_metadata: APIAutoModerationRuleTriggerMetadata;
/**
* The actions which will execute when this rule is triggered
*/
actions: APIAutoModerationAction[];
/**
* Whether this rule is enabled
*/
enabled: boolean;
/**
* The role ids that shouldn't be affected by this rule (Maximum of 20)
*/
exempt_roles: Snowflake[];
/**
* The channel ids that shouldn't be affected by this rule (Maximum of 50)
*/
exempt_channels: Snowflake[];
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-types
*/
export enum AutoModerationRuleTriggerType {
/**
* Check if content contains words from a user defined list of keywords (Maximum of 3 per guild)
*/
Keyword = 1,
/**
* Check if content represents generic spam (Maximum of 1 per guild)
*/
Spam = 3,
/**
* Check if content contains words from internal pre-defined wordsets (Maximum of 1 per guild)
*/
KeywordPreset,
/**
* Check if content contains more mentions than allowed (Maximum of 1 per guild)
*/
MentionSpam,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-metadata
*/
export interface APIAutoModerationRuleTriggerMetadata {
/**
* Substrings which will be searched for in content (Maximum of 1000)
*
* A keyword can be a phrase which contains multiple words. Wildcard symbols can be used to customize how each string will be matched. Each keyword must be 30 characters or less
* See [keyword matching strategies](https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-matching-strategies)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.Keyword}
*/
keyword_filter?: string[];
/**
* The internally pre-defined wordsets which will be searched for in content
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.KeywordPreset}
*/
presets?: AutoModerationRuleKeywordPresetType[];
/**
* Substrings which will be exempt from triggering the preset trigger type (Maximum of 1000)
*
* A allowed-word can be a phrase which contains multiple words. Wildcard symbols can be used to customize how each string will be matched. Each keyword must be 30 characters or less
* See [keyword matching strategies](https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-matching-strategies)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.KeywordPreset}
*/
allow_list?: string[];
/**
* Regular expression patterns which will be matched against content (Maximum of 10)
*
* Only Rust flavored regex is currently supported (Maximum of 75 characters)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.Keyword}
*/
regex_patterns?: string[];
/**
* Total number of mentions (role & user) allowed per message (Maximum of 50)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.MentionSpam}
*/
mention_total_limit?: number;
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-preset-types
*/
export enum AutoModerationRuleKeywordPresetType {
/**
* Words that may be considered forms of swearing or cursing
*/
Profanity = 1,
/**
* Words that refer to sexually explicit behavior or activity
*/
SexualContent,
/**
* Personal insults or words that may be considered hate speech
*/
Slurs,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-event-types
*/
export enum AutoModerationRuleEventType {
/**
* When a member sends or edits a message in the guild
*/
MessageSend = 1,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-auto-moderation-action-structure
*/
export interface APIAutoModerationAction {
/**
* The action type
*/
type: AutoModerationActionType;
/**
* Additional metadata needed during execution for this specific action type
*
* Will only be omitted if the action type is {@link AutoModerationActionType.BlockMessage}
*/
metadata?: APIAutoModerationActionMetadata;
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-types
*/
export enum AutoModerationActionType {
/**
* Blocks the content of a message according to the rule
*/
BlockMessage = 1,
/**
* Logs user content to a specified channel
*/
SendAlertMessage,
/**
* Timeout user for specified duration, this action type can be set if the bot has `MODERATE_MEMBERS` permission
*/
Timeout,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-metadata
*/
export interface APIAutoModerationActionMetadata {
/**
* Channel to which user content should be logged
*
* Associated action type: {@link AutoModerationActionType.SendAlertMessage}
*/
channel_id?: Snowflake;
/**
* Timeout duration in seconds (Maximum of 4 weeks - 2419200 seconds)
*
* Only available if using {@link AutoModerationRuleTriggerType.Keyword}
*
* Associated action type: {@link AutoModerationActionType.Timeout}
*/
duration_seconds?: number;
}

View File

@@ -25,9 +25,9 @@ export interface APIPartialChannel {
*/
type: ChannelType;
/**
* The name of the channel (2-100 characters)
* The name of the channel (1-100 characters)
*/
name?: string;
name?: string | null;
}
/**
@@ -57,6 +57,11 @@ 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;
/**
* When the last pinned message was pinned.
* This may be `null` in events such as `GUILD_CREATE` when a message is not pinned
*/
last_pin_timestamp?: string | 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
@@ -69,7 +74,11 @@ export interface APITextBasedChannel<T extends ChannelType> extends APIChannelBa
rate_limit_per_user?: number;
}
export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T> {
export interface APIGuildChannel<T extends ChannelType> extends Omit<APIChannelBase<T>, 'name'> {
/**
* The name of the channel (1-100 characters)
*/
name: string;
/**
* The id of the guild (may be missing for some channel objects received over gateway guild dispatches)
*/
@@ -83,7 +92,7 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
/**
* Sorting position of the channel
*/
position?: number;
position: number;
/**
* ID of the parent category for a channel (each parent category can contain up to 50 channels)
*
@@ -101,21 +110,21 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
export type GuildTextChannelType = Exclude<TextChannelType, ChannelType.DM | ChannelType.GroupDM>;
export interface APIGuildTextChannel<T extends GuildTextChannelType>
extends APITextBasedChannel<T>,
extends Omit<APITextBasedChannel<T>, 'name'>,
APIGuildChannel<T> {
/**
* Default duration for newly created threads, in minutes, to automatically archive the thread after recent activity
*/
default_auto_archive_duration?: ThreadAutoArchiveDuration;
/**
* The initial `rate_limit_per_user` to set on newly created threads.
* This field is copied to the thread at creation time and does not live update
*/
default_thread_rate_limit_per_user?: number;
/**
* The channel topic (0-1024 characters)
*/
topic?: string | null;
/**
* When the last pinned message was pinned.
* This may be `null` in events such as `GUILD_CREATE` when a message is not pinned
*/
last_pin_timestamp?: string | null;
}
export type APITextChannel = APIGuildTextChannel<ChannelType.GuildText>;
@@ -141,7 +150,7 @@ export interface APIVoiceChannelBase<T extends ChannelType> extends APIGuildChan
export interface APIGuildVoiceChannel
extends APIVoiceChannelBase<ChannelType.GuildVoice>,
APITextBasedChannel<ChannelType.GuildVoice> {
Omit<APITextBasedChannel<ChannelType.GuildVoice>, 'name' | 'last_pin_timestamp'> {
/**
* The camera video quality mode of the voice channel, `1` when not present
*
@@ -161,9 +170,18 @@ export interface APIDMChannelBase<T extends ChannelType> extends Omit<APITextBas
recipients?: APIUser[];
}
export type APIDMChannel = APIDMChannelBase<ChannelType.DM>;
export interface APIDMChannel extends Omit<APIDMChannelBase<ChannelType.DM>, 'name'> {
/**
* The name of the channel (always null for DM channels)
*/
name: null;
}
export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.GroupDM>, 'name'> {
/**
* The name of the channel (1-100 characters)
*/
name: string | null;
/**
* Application id of the group DM creator if it is bot-created
*/
@@ -172,22 +190,18 @@ export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.Gro
* Icon hash
*/
icon?: string | null;
/**
* The name of the channel (2-100 characters)
*/
name?: string | null;
/**
* ID of the DM creator
*/
owner_id?: Snowflake;
/**
* The id of the last message sent in this channel (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
}
export interface APIThreadChannel
extends APIGuildChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread> {
extends Omit<
APITextBasedChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread>,
'name'
>,
APIGuildChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread> {
/**
* The client users member for the thread, only included in select endpoints
*/
@@ -206,33 +220,112 @@ export interface APIThreadChannel
* The approximate member count of the thread, does not count above 50 even if there are more members
*/
member_count?: number;
/**
* 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;
/**
* ID of the thread creator
*/
owner_id?: Snowflake;
/**
* 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;
/**
* The IDs of the set of tags that have been applied to a thread in a forum channel
*/
applied_tags: Snowflake[];
}
export type APIGuildForumChannel = APIGuildTextChannel<ChannelType.GuildForum>;
/**
* https://discord.com/developers/docs/resources/channel#forum-tag-object-forum-tag-structure
*/
export interface APIGuildForumTag {
/**
* The id of the tag
*/
id: Snowflake;
/**
* The name of the tag (0-20 characters)
*/
name: string;
/**
* Whether this tag can only be added to or removed from threads by a member with the `MANAGE_THREADS` permission
*/
moderated: boolean;
/**
* The id of a guild's custom emoji
*/
emoji_id: Snowflake | null;
/**
* The unicode character of the emoji
*/
emoji_name: string | null;
}
/**
* https://discord.com/developers/docs/resources/channel#default-reaction-object-default-reaction-structure
*/
export interface APIGuildForumDefaultReactionEmoji {
/**
* The id of a guild's custom emoji
*/
emoji_id: Snowflake | null;
/**
* The unicode character of the emoji
*/
emoji_name: string | null;
}
/**
* https://discord.com/developers/docs/resources/channel/#channel-object-sort-order-types
*/
export enum SortOrderType {
/**
* Sort forum posts by activity
*/
LatestActivity,
/**
* Sort forum posts by creation time (from most recent to oldest)
*/
CreationDate,
}
/**
* https://discord.com/developers/docs/resources/channel/#channel-object-forum-layout-types
*/
export enum ForumLayoutType {
/**
* No default has been set for forum channel
*/
NotSet,
/**
* Display posts as a list
*/
ListView,
/**
* Display posts as a collection of tiles
*/
GalleryView,
}
export interface APIGuildForumChannel extends APIGuildTextChannel<ChannelType.GuildForum> {
/**
* The set of tags that can be used in a forum channel
*/
available_tags: APIGuildForumTag[];
/**
* The emoji to show in the add reaction button on a thread in a forum channel
*/
default_reaction_emoji: APIGuildForumDefaultReactionEmoji | null;
/**
* The default sort order type used to order posts in a forum channel
*/
default_sort_order: SortOrderType | null;
/**
* The default layout type used to display posts in a forum channel. Defaults to `0`, which indicates a layout view has not been set by a channel admin
*/
default_forum_layout: ForumLayoutType;
}
/**
* https://discord.com/developers/docs/resources/channel#channel-object-channel-structure
@@ -246,7 +339,6 @@ export type APIChannel =
| APIGuildStageVoiceChannel
| APIGuildCategoryChannel
| APIThreadChannel
| APINewsChannel
| APIGuildForumChannel;
/**
@@ -272,13 +364,13 @@ export enum ChannelType {
/**
* An organizational category that contains up to 50 channels
*
* See https://support.discord.com/hc/en-us/articles/115001580171-Channel-Categories-101
* See https://support.discord.com/hc/articles/115001580171
*/
GuildCategory,
/**
* A channel that users can follow and crosspost into their own guild
*
* See https://support.discord.com/hc/en-us/articles/360032008192
* See https://support.discord.com/hc/articles/360032008192
*/
GuildAnnouncement,
/**
@@ -286,7 +378,7 @@ export enum ChannelType {
*/
AnnouncementThread = 10,
/**
* A temporary sub-channel within a Guild Text channel
* A temporary sub-channel within a Guild Text or Guild Forum channel
*/
PublicThread,
/**
@@ -296,13 +388,13 @@ export enum ChannelType {
/**
* A voice channel for hosting events with an audience
*
* See https://support.discord.com/hc/en-us/articles/1500005513722
* See https://support.discord.com/hc/articles/1500005513722
*/
GuildStageVoice,
/**
* The channel in a Student Hub containing the listed servers
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*/
GuildDirectory,
/**
@@ -316,7 +408,7 @@ export enum ChannelType {
*
* @deprecated This is the old name for {@apilink ChannelType#GuildAnnouncement}
*
* See https://support.discord.com/hc/en-us/articles/360032008192
* See https://support.discord.com/hc/articles/360032008192
*/
GuildNews = 5,
/**
@@ -378,7 +470,7 @@ export interface APIMessage {
*
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
content: string;
/**
@@ -434,7 +526,7 @@ export interface APIMessage {
*
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
attachments: APIAttachment[];
/**
@@ -446,7 +538,7 @@ export interface APIMessage {
*
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
embeds: APIEmbed[];
/**
@@ -535,7 +627,7 @@ export interface APIMessage {
*
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
components?: APIActionRowComponent<APIMessageActionRowComponent>[];
/**
@@ -586,6 +678,7 @@ export enum MessageType {
ThreadStarterMessage,
GuildInviteReminder,
ContextMenuCommand,
AutoModerationAction,
}
/**
@@ -942,6 +1035,12 @@ export enum EmbedType {
* Link embed
*/
Link = 'link',
/**
* Auto moderation alert embed
*
* @unstable This embed type is currently not documented by Discord, but it is returned in the auto moderation system messages.
*/
AutoModerationMessage = 'auto_moderation_message',
}
/**
@@ -1229,13 +1328,38 @@ export enum ComponentType {
*/
Button,
/**
* Select Menu component
* Select menu for picking from defined text options
*/
SelectMenu,
StringSelect,
/**
* Text Input component
*/
TextInput,
/**
* Select menu for users
*/
UserSelect,
/**
* Select menu for roles
*/
RoleSelect,
/**
* Select menu for users and roles
*/
MentionableSelect,
/**
* Select menu for channels
*/
ChannelSelect,
// EVERYTHING BELOW THIS LINE SHOULD BE OLD NAMES FOR RENAMED ENUM MEMBERS //
/**
* Select menu for picking from defined text options
*
* @deprecated This is the old name for {@apilink ComponentType#StringSelect}
*/
SelectMenu = 3,
}
/**
@@ -1327,15 +1451,18 @@ export enum TextInputStyle {
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APISelectMenuComponent extends APIBaseComponent<ComponentType.SelectMenu> {
export interface APIBaseSelectMenuComponent<
T extends
| ComponentType.StringSelect
| ComponentType.UserSelect
| ComponentType.RoleSelect
| ComponentType.MentionableSelect
| ComponentType.ChannelSelect,
> extends APIBaseComponent<T> {
/**
* A developer-defined identifier for the select menu, max 100 characters
*/
custom_id: string;
/**
* The choices in the select, max 25
*/
options: APISelectMenuOption[];
/**
* Custom placeholder text if nothing is selected, max 150 characters
*/
@@ -1360,6 +1487,51 @@ export interface APISelectMenuComponent extends APIBaseComponent<ComponentType.S
disabled?: boolean;
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APIStringSelectComponent extends APIBaseSelectMenuComponent<ComponentType.StringSelect> {
/**
* Specified choices in a select menu; max 25
*/
options: APISelectMenuOption[];
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIUserSelectComponent = APIBaseSelectMenuComponent<ComponentType.UserSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIRoleSelectComponent = APIBaseSelectMenuComponent<ComponentType.RoleSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIMentionableSelectComponent = APIBaseSelectMenuComponent<ComponentType.MentionableSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APIChannelSelectComponent extends APIBaseSelectMenuComponent<ComponentType.ChannelSelect> {
/**
* List of channel types to include in the ChannelSelect component
*/
channel_types?: ChannelType[];
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APISelectMenuComponent =
| APIStringSelectComponent
| APIUserSelectComponent
| APIRoleSelectComponent
| APIMentionableSelectComponent
| APIChannelSelectComponent;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-option-structure
*/
@@ -1428,7 +1600,15 @@ export interface APITextInputComponent extends APIBaseComponent<ComponentType.Te
* https://discord.com/developers/docs/resources/channel#channel-object-channel-flags
*/
export enum ChannelFlags {
/**
* This thread is pinned to the top of its parent forum channel
*/
Pinned = 1 << 1,
/**
* Whether a tag is required to be specified when creating a thread in a forum channel.
* Tags are specified in the `applied_tags` field
*/
RequireTag = 1 << 4,
}
/**

View File

@@ -1,5 +1,7 @@
/**
* Types extracted from https://discord.com/developers/docs/topics/gateway
* Types extracted from
* - https://discord.com/developers/docs/topics/gateway
* - https://discord.com/developers/docs/topics/gateway-events
*/
import type { APIChannel, APIThreadMember } from './channel.ts';
@@ -58,7 +60,7 @@ export interface APIGatewaySessionStartLimit {
}
/**
* https://discord.com/developers/docs/topics/gateway#presence-update-presence-update-event-fields
* https://discord.com/developers/docs/topics/gateway-events#presence-update-presence-update-event-fields
*/
export interface GatewayPresenceUpdate {
/**
@@ -81,13 +83,13 @@ export interface GatewayPresenceUpdate {
/**
* User's current activities
*
* See https://discord.com/developers/docs/topics/gateway#activity-object
* See https://discord.com/developers/docs/topics/gateway-events#activity-object
*/
activities?: GatewayActivity[];
/**
* User's platform-dependent status
*
* See https://discord.com/developers/docs/topics/gateway#client-status-object
* See https://discord.com/developers/docs/topics/gateway-events#client-status-object
*/
client_status?: GatewayPresenceClientStatus;
}
@@ -104,7 +106,7 @@ export enum PresenceUpdateStatus {
}
/**
* https://discord.com/developers/docs/topics/gateway#client-status-object
* https://discord.com/developers/docs/topics/gateway-events#client-status-object
*/
export interface GatewayPresenceClientStatus {
/**
@@ -122,7 +124,7 @@ export interface GatewayPresenceClientStatus {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-structure
*/
export interface GatewayActivity {
/**
@@ -136,7 +138,7 @@ export interface GatewayActivity {
/**
* Activity type
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-types
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types
*/
type: ActivityType;
/**
@@ -171,26 +173,26 @@ export interface GatewayActivity {
/**
* The emoji used for a custom status
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-emoji
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-emoji
*/
emoji?: GatewayActivityEmoji;
session_id?: string;
/**
* Information for the current party of the player
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-party
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-party
*/
party?: GatewayActivityParty;
/**
* Images for the presence and their hover texts
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-assets
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-assets
*/
assets?: GatewayActivityAssets;
/**
* Secrets for Rich Presence joining and spectating
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-secrets
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-secrets
*/
secrets?: GatewayActivitySecrets;
/**
@@ -200,7 +202,7 @@ export interface GatewayActivity {
/**
* Activity flags `OR`d together, describes what the payload includes
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags
*
* See https://en.wikipedia.org/wiki/Bit_field
*/
@@ -227,7 +229,7 @@ export enum ActivityPlatform {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-types
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types
*/
export enum ActivityType {
/**
@@ -257,7 +259,7 @@ export enum ActivityType {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-timestamps
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-timestamps
*/
export interface GatewayActivityTimestamps {
/**
@@ -271,12 +273,12 @@ export interface GatewayActivityTimestamps {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-emoji
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-emoji
*/
export type GatewayActivityEmoji = Partial<Pick<APIEmoji, 'id' | 'animated'>> & Pick<APIEmoji, 'name'>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-party
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-party
*/
export interface GatewayActivityParty {
/**
@@ -290,19 +292,19 @@ export interface GatewayActivityParty {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-assets
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-assets
*/
export type GatewayActivityAssets = Partial<
Record<'large_image' | 'large_text' | 'small_image' | 'small_text', string>
>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-secrets
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-secrets
*/
export type GatewayActivitySecrets = Partial<Record<'join' | 'spectate' | 'match', string>>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags
*/
export enum ActivityFlags {
Instance = 1 << 0,
@@ -328,7 +330,7 @@ export interface GatewayActivityButton {
}
/**
* https://discord.com/developers/docs/topics/gateway#thread-list-sync-thread-list-sync-event-fields
* https://discord.com/developers/docs/topics/gateway-events#thread-list-sync-thread-list-sync-event-fields
*/
export interface GatewayThreadListSync {
/**
@@ -350,7 +352,7 @@ export interface GatewayThreadListSync {
}
/**
* https://discord.com/developers/docs/topics/gateway#thread-members-update-thread-members-update-event-fields
* https://discord.com/developers/docs/topics/gateway-events#thread-members-update-thread-members-update-event-fields
*/
export interface GatewayThreadMembersUpdate {
/**

View File

@@ -118,9 +118,9 @@ export interface APIGuild extends APIPartialGuild {
*/
afk_channel_id: Snowflake | null;
/**
* afk timeout in seconds
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout: number;
afk_timeout: 60 | 300 | 900 | 1800 | 3600;
/**
* `true` if the guild widget is enabled
*/
@@ -382,6 +382,16 @@ export enum GuildFeature {
* Guild has access to set an animated guild icon
*/
AnimatedIcon = 'ANIMATED_ICON',
/**
* Guild is using the old permissions configuration behavior
*
* See https://discord.com/developers/docs/change-log#upcoming-application-command-permission-changes
*/
ApplicationCommandPermissionsV2 = 'APPLICATION_COMMAND_PERMISSIONS_V2',
/**
* Guild has set up auto moderation rules
*/
AutoModeration = 'AUTO_MODERATION',
/**
* Guild has access to set a guild banner image
*/
@@ -390,6 +400,10 @@ export enum GuildFeature {
* Guild can enable welcome screen, Membership Screening and discovery, and receives community updates
*/
Community = 'COMMUNITY',
/*
* Guild has been set as a support server on the App Directory
*/
DeveloperSupportServer = 'DEVELOPER_SUPPORT_SERVER',
/**
* Guild is able to be discovered in the directory
*/
@@ -405,7 +419,7 @@ export enum GuildFeature {
/**
* Guild is a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
@@ -421,7 +435,7 @@ export enum GuildFeature {
/**
* Guild is in a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
@@ -588,7 +602,7 @@ export interface APIGuildMember {
/**
* When the user started boosting the guild
*
* See https://support.discord.com/hc/en-us/articles/360028038352-Server-Boosting-
* See https://support.discord.com/hc/articles/360028038352
*/
premium_since?: string | null;
/**

View File

@@ -1,6 +1,7 @@
export * from '../common.ts';
export * from './application.ts';
export * from './auditLog.ts';
export * from './autoModeration.ts';
export * from './channel.ts';
export * from './emoji.ts';
export * from './gateway.ts';

View File

@@ -61,6 +61,10 @@ export enum OAuth2Scopes {
* (otherwise restricted to channels/guilds your app creates)
*/
MessagesRead = 'messages.read',
/**
* Allows your app to update a user's connection and metadata for the app
*/
RoleConnectionsWrite = 'role_connections.write',
/**
* For local rpc server access, this allows you to control a user's local Discord client - requires Discord approval
*/

View File

@@ -73,7 +73,7 @@ export enum StickerType {
*/
Standard = 1,
/**
* A sticker uploaded to a Boosted guild for the guild's members
* A sticker uploaded to a guild for the guild's members
*/
Guild,
}

View File

@@ -134,7 +134,7 @@ export enum UserFlags {
*/
VerifiedDeveloper = 1 << 17,
/**
* Discord Certified Moderator
* Moderator Programs Alumni
*/
CertifiedModerator = 1 << 18,
/**
@@ -148,11 +148,19 @@ export enum UserFlags {
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
* User is an [Active Developer](https://support-dev.discord.com/hc/articles/10113997751447)
*/
ActiveDeveloper = 1 << 22,
/**
* User's account has been [quarantined](https://support.discord.com/hc/articles/6461420677527) 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.
*
* @privateRemarks
*
* This value would be 1 << 44, but bit shifting above 1 << 30 requires bigints
*/
Quarantined = Math.pow(2, 44),
Quarantined = 17592186044416,
}
/**
@@ -162,6 +170,7 @@ export enum UserPremiumType {
None,
NitroClassic,
Nitro,
NitroBasic,
}
/**
@@ -204,6 +213,10 @@ export interface APIConnection {
* Whether activities related to this connection will be shown in presence updates
*/
show_activity: boolean;
/**
* Whether this connection supports console voice transfer
*/
two_way_link: boolean;
/**
* Visibility of this connection
*
@@ -242,3 +255,21 @@ export enum ConnectionVisibility {
*/
Everyone,
}
/**
* https://discord.com/developers/docs/resources/user#application-role-connection-object-application-role-connection-structure
*/
export interface APIApplicationRoleConnection {
/**
* The vanity name of the platform a bot has connected (max 50 characters)
*/
platform_name: string | null;
/**
* The username on the platform a bot has connected (max 100 characters)
*/
platform_username: string | null;
/**
* Object mapping application role connection metadata keys to their `string`-ified value (max 100 characters) for the user on the platform a bot has connected
*/
metadata: Record<string, string | number>;
}

View File

@@ -120,6 +120,8 @@ export enum RESTJSONErrorCodes {
BitrateIsTooHighForChannelOfThisType = 30052,
MaximumNumberOfWebhooksPerGuildReached = 30058,
Unauthorized = 40001,
VerifyYourAccount,
OpeningDirectMessagesTooFast,
@@ -137,8 +139,14 @@ export enum RESTJSONErrorCodes {
ApplicationInteractionFailedToSend = 40043,
CannotSendAMessageInAForumChannel = 40058,
InteractionHasAlreadyBeenAcknowledged = 40060,
TagNamesMustBeUnique,
ServiceResourceIsBeingRateLimited,
ThereAreNoTagsAvailableThatCanBeSetByNonModerators = 40066,
TagRequiredToCreateAForumPostInThisChannel,
MissingAccess = 50001,
InvalidAccountType,
@@ -174,6 +182,8 @@ export enum RESTJSONErrorCodes {
InvalidFormBodyOrContentType,
InviteAcceptedToGuildWithoutTheBotBeingIn,
InvalidActivityAction = 50039,
InvalidAPIVersion = 50041,
FileUploadedExceedsMaximumSize = 50045,
@@ -182,11 +192,13 @@ export enum RESTJSONErrorCodes {
CannotSelfRedeemThisGift = 50054,
InvalidGuild,
InvalidMessageType = 50068,
InvalidRequestOrigin = 50067,
InvalidMessageType,
PaymentSourceRequiredToRedeemGift = 50070,
CannotDeleteChannelRequiredForCommunityGuilds = 50074,
CannotModifyASystemWebhook = 50073,
CannotDeleteChannelRequiredForCommunityGuilds,
CannotEditStickersWithinMessage = 50080,
InvalidStickerSent,
@@ -246,7 +258,10 @@ export enum RESTJSONErrorCodes {
MessageWasBlockedByAutomaticModeration = 200000,
TitleWasBlockedByAutomaticModeration,
WebhooksCanOnlyCreateThreadsInForumChannels = 220003,
WebhooksPostedToForumChannelsMustHaveAThreadNameOrThreadId = 220001,
WebhooksPostedToForumChannelsCannotHaveBothAThreadNameAndThreadId,
WebhooksCanOnlyCreateThreadsInForumChannels,
WebhookServicesCannotBeUsedInForumChannels,
MessageBlockedByHarmfulLinksFilter = 240000,
}
@@ -255,6 +270,7 @@ export enum RESTJSONErrorCodes {
* https://discord.com/developers/docs/reference#locales
*/
export enum Locale {
Indonesian = 'id',
EnglishUS = 'en-US',
EnglishGB = 'en-GB',
Bulgarian = 'bg',

View File

@@ -0,0 +1,16 @@
import type { APIApplicationRoleConnectionMetadata } from '../../payloads/v10/application.ts';
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#get-application-role-connection-metadata-records
*/
export type RESTGetAPIApplicationRoleConnectionMetadataResult = APIApplicationRoleConnectionMetadata[];
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records
*/
export type RESTPutAPIApplicationRoleConnectionMetadataJSONBody = APIApplicationRoleConnectionMetadata[];
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records
*/
export type RESTPutAPIApplicationRoleConnectionMetadataResult = APIApplicationRoleConnectionMetadata[];

View File

@@ -17,6 +17,10 @@ export interface RESTGetAPIAuditLogQuery {
* Filter the log before a certain entry ID
*/
before?: Snowflake;
/**
* Filter the log after a certain entry ID
*/
after?: Snowflake;
/**
* How many entries are returned (default 50, minimum 1, maximum 100)
*

View File

@@ -0,0 +1,84 @@
import type { Snowflake } from '../../globals.ts';
import type {
APIAutoModerationAction,
APIAutoModerationRule,
AutoModerationRuleEventType,
APIAutoModerationRuleTriggerMetadata,
AutoModerationRuleTriggerType,
} from '../../payloads/v10/mod.ts';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface } from '../../utils/internals.ts';
/**
* https://discord.com/developers/docs/resources/auto-moderation#list-auto-moderation-rules-for-guild
*/
export type RESTGetAPIAutoModerationRulesResult = APIAutoModerationRule[];
/**
* https://discord.com/developers/docs/resources/auto-moderation#get-auto-moderation-rule
*/
export type RESTGetAPIAutoModerationRuleResult = APIAutoModerationRule;
/**
* https://discord.com/developers/docs/resources/auto-moderation#create-auto-moderation-rule
*/
export type RESTPostAPIAutoModerationRuleJSONBody = AddUndefinedToPossiblyUndefinedPropertiesOfInterface<{
/**
* The rule name
*/
name: string;
/**
* The rule event type
*/
event_type: AutoModerationRuleEventType;
/**
* The rule trigger type
*/
trigger_type: AutoModerationRuleTriggerType;
/**
* The rule trigger metadata
*
* Can be omitted if the trigger type is {@link AutoModerationRuleTriggerType.HarmfulLink} or {@link AutoModerationRuleTriggerType.Spam}
*/
trigger_metadata?: APIAutoModerationRuleTriggerMetadata;
/**
* The actions which will execute when this rule is triggered
*/
actions: APIAutoModerationAction[];
/**
* Whether this rule is enabled
*
* @default false
*/
enabled?: boolean;
/**
* The role ids that shouldn't be affected by this rule (Maximum of 20)
*/
exempt_roles?: Snowflake[];
/**
* The channel ids that shouldn't be affected by this rule (Maximum of 50)
*/
exempt_channels?: Snowflake[];
}>;
/**
* https://discord.com/developers/docs/resources/auto-moderation#create-auto-moderation-rule
*/
export type RESTPostAPIAutoModerationRuleResult = APIAutoModerationRule;
/**
* https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule
*/
export type RESTPatchAPIAutoModerationRuleJSONBody = Omit<
Partial<RESTPostAPIAutoModerationRuleJSONBody>,
'trigger_type'
>;
/**
* https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule
*/
export type RESTPatchAPIAutoModerationRuleResult = APIAutoModerationRule;
/**
* https://discord.com/developers/docs/resources/auto-moderation#delete-auto-moderation-rule
*/
export type RESTDeleteAPIAutoModerationRuleResult = never;

View File

@@ -19,6 +19,10 @@ import type {
OverwriteType,
ThreadAutoArchiveDuration,
VideoQualityMode,
APIGuildForumTag,
APIGuildForumDefaultReactionEmoji,
SortOrderType,
ForumLayoutType,
} from '../../payloads/v10/mod.ts';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface, StrictPartial } from '../../utils/internals.ts';
@@ -56,15 +60,15 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
*/
position?: number | null;
/**
* 0-1024 character channel topic
* 0-1024 character channel topic (0-4096 characters for forum channels)
*
* Channel types: text, news
* Channel types: text, news, forum
*/
topic?: string | null;
/**
* Whether the channel is nsfw
*
* Channel types: text, voice, news
* Channel types: text, voice, news, forum
*/
nsfw?: boolean | null;
/**
@@ -72,7 +76,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
* bots, as well as users with the permission `MANAGE_MESSAGES` or `MANAGE_CHANNELS`,
* are unaffected
*
* Channel types: text, newsThread, publicThread, privateThread
* Channel types: text, newsThread, publicThread, privateThread, forum
*/
rate_limit_per_user?: number | null;
/**
@@ -141,6 +145,37 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
* Channel types: privateThread
*/
invitable?: boolean;
/**
* The set of tags that can be used in a forum channel; limited to 20
*
* Channel types: forum
*/
available_tags?: APIGuildForumTag[];
/**
* The emoji to show in the add reaction button on a thread in a forum channel
*
* Channel types: forum
*/
default_reaction_emoji?: APIGuildForumDefaultReactionEmoji;
/**
* The initial `rate_limit_per_user` to set on newly created threads in a channel.
* This field is copied to the thread at creation time and does not live update
*
* Channel types: forum
*/
default_thread_rate_limit_per_user?: number | null;
/**
* The default sort order type used to order posts in a forum channel
*
* Channel types: forum
*/
default_sort_order?: SortOrderType | null;
/**
* The default layout type used to display posts in a forum channel
*
* Channel types: forum
*/
default_forum_layout?: ForumLayoutType;
}>;
/**
@@ -589,6 +624,10 @@ export type RESTPostAPIGuildForumThreadsJSONBody = RESTPostAPIChannelMessagesThr
* First message in the forum thread
*/
message: RESTPostAPIChannelMessageJSONBody;
/**
* The IDs of the set of tags that have been applied to a thread in a forum channel; limited to 5
*/
applied_tags?: Snowflake[];
};
/**
@@ -662,6 +701,16 @@ export interface RESTGetAPIChannelThreadsArchivedQuery {
limit?: number;
}
/**
* https://discord.com/developers/docs/resources/channel#list-public-archived-threads
*/
export type RESTGetAPIChannelThreadsArchivedPublicResult = RESTGetAPIChannelUsersThreadsArchivedResult;
/**
* https://discord.com/developers/docs/resources/channel#list-private-archived-threads
*/
export type RESTGetAPIChannelThreadsArchivedPrivateResult = RESTGetAPIChannelUsersThreadsArchivedResult;
/**
* https://discord.com/developers/docs/resources/channel#list-joined-private-archived-threads
*/

View File

@@ -53,6 +53,10 @@ export type APIGuildCreatePartialChannel = StrictPartial<
| 'rtc_region'
| 'video_quality_mode'
| 'flags'
| 'default_reaction_emoji'
| 'available_tags'
| 'default_sort_order'
| 'default_forum_layout'
>
> &
AddUndefinedToPossiblyUndefinedPropertiesOfInterface<{
@@ -135,9 +139,9 @@ export type RESTPostAPIGuildsJSONBody = AddUndefinedToPossiblyUndefinedPropertie
*/
afk_channel_id?: number | Snowflake | null;
/**
* AFK timeout in seconds
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout?: number;
afk_timeout?: 60 | 300 | 900 | 1800 | 3600;
/**
* The id of the channel where guild notices such as welcome messages and boost events are posted
*/
@@ -235,9 +239,9 @@ export type RESTPatchAPIGuildJSONBody = AddUndefinedToPossiblyUndefinedPropertie
*/
afk_channel_id?: Snowflake | null;
/**
* AFK timeout in seconds
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout?: number;
afk_timeout?: 60 | 300 | 900 | 1800 | 3600;
/**
* base64 1024x1024 png/jpeg/gif image for the guild icon (can be animated gif when the guild has `ANIMATED_ICON` feature)
*
@@ -891,6 +895,11 @@ export type RESTPatchAPIGuildVoiceStateUserJSONBody = AddUndefinedToPossiblyUnde
suppress?: boolean;
}>;
/**
* https://discord.com/developers/docs/resources/guild#modify-user-voice-state
*/
export type RESTPatchAPIGuildVoiceStateUserResult = never;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-welcome-screen
*/

View File

@@ -16,6 +16,19 @@ import type {
} from '../../payloads/v10/mod.ts';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface, StrictPartial } from '../../utils/internals.ts';
/**
* https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands
*/
export interface RESTGetAPIApplicationCommandsQuery {
/**
* Whether to include full localization dictionaries (name_localizations and description_localizations)
* in the returned objects, instead of the name_localized and description_localized fields.
*
* @default false
*/
with_localizations?: boolean;
}
/**
* https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands
*/
@@ -90,6 +103,11 @@ export type RESTPutAPIApplicationCommandsJSONBody = RESTPostAPIApplicationComman
*/
export type RESTPutAPIApplicationCommandsResult = APIApplicationCommand[];
/**
* https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands
*/
export type RESTGetAPIApplicationGuildCommandsQuery = RESTGetAPIApplicationCommandsQuery;
/**
* https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands
*/

View File

@@ -1,7 +1,9 @@
import type { Snowflake } from '../../globals.ts';
export * from '../common.ts';
export * from './application.ts';
export * from './auditLog.ts';
export * from './autoModeration.ts';
export * from './channel.ts';
export * from './emoji.ts';
export * from './gateway.ts';
@@ -20,6 +22,33 @@ export * from './webhook.ts';
export const APIVersion = '10';
export const Routes = {
/**
* Route for:
* - GET `/applications/{application.id}/role-connections/metadata`
* - PUT `/applications/{application.id}/role-connections/metadata`
*/
applicationRoleConnectionMetadata(applicationId: Snowflake) {
return `/applications/${applicationId}/role-connections/metadata` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/auto-moderation/rules`
* - POST `/guilds/{guild.id}/auto-moderation/rules`
*/
guildAutoModerationRules(guildId: Snowflake) {
return `/guilds/${guildId}/auto-moderation/rules` as const;
},
/**
* Routes for:
* - GET `/guilds/{guild.id}/auto-moderation/rules/{rule.id}`
* - PATCH `/guilds/{guild.id}/auto-moderation/rules/{rule.id}`
* - DELETE `/guilds/{guild.id}/auto-moderation/rules/{rule.id}`
*/
guildAutoModerationRule(guildId: Snowflake, ruleId: Snowflake) {
return `/guilds/${guildId}/auto-moderation/rules/${ruleId}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/audit-logs`
@@ -501,6 +530,15 @@ export const Routes = {
return `/users/${userId}` as const;
},
/**
* Route for:
* - GET `/users/@me/applications/{application.id}/role-connection`
* - PUT `/users/@me/applications/{application.id}/role-connection`
*/
userApplicationRoleConnection(applicationId: Snowflake) {
return `/users/@me/applications/${applicationId}/role-connection` as const;
},
/**
* Route for:
* - GET `/users/@me/guilds`

View File

@@ -1,5 +1,12 @@
import type { Permissions, Snowflake } from '../../globals.ts';
import type { APIChannel, APIConnection, APIGuildMember, APIUser, GuildFeature } from '../../payloads/v10/mod.ts';
import type {
APIChannel,
APIConnection,
APIGuildMember,
APIUser,
APIApplicationRoleConnection,
GuildFeature,
} from '../../payloads/v10/mod.ts';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface } from '../../utils/internals.ts';
/**
@@ -49,9 +56,9 @@ export interface RESTGetAPICurrentUserGuildsQuery {
*/
after?: Snowflake;
/**
* Max number of guilds to return (1-100)
* Max number of guilds to return (1-200)
*
* @default 100
* @default 200
*/
limit?: number;
}
@@ -94,3 +101,31 @@ export type RESTPostAPICurrentUserCreateDMChannelResult = APIChannel;
* https://discord.com/developers/docs/resources/user#get-user-connections
*/
export type RESTGetAPICurrentUserConnectionsResult = APIConnection[];
/**
* https://discord.com/developers/docs/resources/user#get-user-application-role-connection
*/
export type RESTGetAPICurrentUserApplicationRoleConnectionResult = APIApplicationRoleConnection;
/**
* https://discord.com/developers/docs/resources/user#update-user-application-role-connection
*/
export interface RESTPutAPICurrentUserApplicationRoleConnectionJSONBody {
/**
* The vanity name of the platform a bot has connected (max 50 characters)
*/
platform_name?: string;
/**
* The username on the platform a bot has connected (max 100 characters)
*/
platform_username?: string;
/**
* Object mapping application role connection metadata keys to their `string`-ified value (max 100 characters) for the user on the platform a bot has connected
*/
metadata?: Record<string, string | number>;
}
/**
* https://discord.com/developers/docs/resources/user#update-user-application-role-connection
*/
export type RESTPutAPICurrentUserApplicationRoleConnectionResult = APIApplicationRoleConnection;

View File

@@ -3,4 +3,9 @@ import type { APIVoiceRegion } from '../../payloads/v10/mod.ts';
/**
* https://discord.com/developers/docs/resources/voice#list-voice-regions
*/
export type GetAPIVoiceRegionsResult = APIVoiceRegion[];
export type RESTGetAPIVoiceRegionsResult = APIVoiceRegion[];
/**
* @deprecated This was exported with the wrong name, use `RESTGetAPIVoiceRegionsResult` instead
*/
export type GetAPIVoiceRegionsResult = RESTGetAPIVoiceRegionsResult;

View File

@@ -0,0 +1,16 @@
import type { APIApplicationRoleConnectionMetadata } from '../../payloads/v9/application.ts';
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#get-application-role-connection-metadata-records
*/
export type RESTGetAPIApplicationRoleConnectionMetadataResult = APIApplicationRoleConnectionMetadata[];
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records
*/
export type RESTPutAPIApplicationRoleConnectionMetadataJSONBody = APIApplicationRoleConnectionMetadata[];
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records
*/
export type RESTPutAPIApplicationRoleConnectionMetadataResult = APIApplicationRoleConnectionMetadata[];

View File

@@ -17,6 +17,10 @@ export interface RESTGetAPIAuditLogQuery {
* Filter the log before a certain entry ID
*/
before?: Snowflake;
/**
* Filter the log after a certain entry ID
*/
after?: Snowflake;
/**
* How many entries are returned (default 50, minimum 1, maximum 100)
*

View File

@@ -0,0 +1,84 @@
import type { Snowflake } from '../../globals.ts';
import type {
APIAutoModerationAction,
APIAutoModerationRule,
AutoModerationRuleEventType,
APIAutoModerationRuleTriggerMetadata,
AutoModerationRuleTriggerType,
} from '../../payloads/v9/mod.ts';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface } from '../../utils/internals.ts';
/**
* https://discord.com/developers/docs/resources/auto-moderation#list-auto-moderation-rules-for-guild
*/
export type RESTGetAPIAutoModerationRulesResult = APIAutoModerationRule[];
/**
* https://discord.com/developers/docs/resources/auto-moderation#get-auto-moderation-rule
*/
export type RESTGetAPIAutoModerationRuleResult = APIAutoModerationRule;
/**
* https://discord.com/developers/docs/resources/auto-moderation#create-auto-moderation-rule
*/
export type RESTPostAPIAutoModerationRuleJSONBody = AddUndefinedToPossiblyUndefinedPropertiesOfInterface<{
/**
* The rule name
*/
name: string;
/**
* The rule event type
*/
event_type: AutoModerationRuleEventType;
/**
* The rule trigger type
*/
trigger_type: AutoModerationRuleTriggerType;
/**
* The rule trigger metadata
*
* Can be omitted if the trigger type is {@link AutoModerationRuleTriggerType.HarmfulLink} or {@link AutoModerationRuleTriggerType.Spam}
*/
trigger_metadata?: APIAutoModerationRuleTriggerMetadata;
/**
* The actions which will execute when this rule is triggered
*/
actions: APIAutoModerationAction[];
/**
* Whether this rule is enabled
*
* @default false
*/
enabled?: boolean;
/**
* The role ids that shouldn't be affected by this rule (Maximum of 20)
*/
exempt_roles?: Snowflake[];
/**
* The channel ids that shouldn't be affected by this rule (Maximum of 50)
*/
exempt_channels?: Snowflake[];
}>;
/**
* https://discord.com/developers/docs/resources/auto-moderation#create-auto-moderation-rule
*/
export type RESTPostAPIAutoModerationRuleResult = APIAutoModerationRule;
/**
* https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule
*/
export type RESTPatchAPIAutoModerationRuleJSONBody = Omit<
Partial<RESTPostAPIAutoModerationRuleJSONBody>,
'trigger_type'
>;
/**
* https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule
*/
export type RESTPatchAPIAutoModerationRuleResult = APIAutoModerationRule;
/**
* https://discord.com/developers/docs/resources/auto-moderation#delete-auto-moderation-rule
*/
export type RESTDeleteAPIAutoModerationRuleResult = never;

View File

@@ -19,6 +19,10 @@ import type {
OverwriteType,
ThreadAutoArchiveDuration,
VideoQualityMode,
APIGuildForumTag,
APIGuildForumDefaultReactionEmoji,
SortOrderType,
ForumLayoutType,
} from '../../payloads/v9/mod.ts';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface, StrictPartial } from '../../utils/internals.ts';
@@ -56,15 +60,15 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
*/
position?: number | null;
/**
* 0-1024 character channel topic
* 0-1024 character channel topic (0-4096 characters for forum channels)
*
* Channel types: text, news
* Channel types: text, news, forum
*/
topic?: string | null;
/**
* Whether the channel is nsfw
*
* Channel types: text, voice, news
* Channel types: text, voice, news, forum
*/
nsfw?: boolean | null;
/**
@@ -72,7 +76,7 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
* bots, as well as users with the permission `MANAGE_MESSAGES` or `MANAGE_CHANNELS`,
* are unaffected
*
* Channel types: text, newsThread, publicThread, privateThread
* Channel types: text, newsThread, publicThread, privateThread, forum
*/
rate_limit_per_user?: number | null;
/**
@@ -141,6 +145,37 @@ export type RESTPatchAPIChannelJSONBody = AddUndefinedToPossiblyUndefinedPropert
* Channel types: privateThread
*/
invitable?: boolean;
/**
* The set of tags that can be used in a forum channel; limited to 20
*
* Channel types: forum
*/
available_tags?: APIGuildForumTag[];
/**
* The emoji to show in the add reaction button on a thread in a forum channel
*
* Channel types: forum
*/
default_reaction_emoji?: APIGuildForumDefaultReactionEmoji;
/**
* The initial `rate_limit_per_user` to set on newly created threads in a channel.
* This field is copied to the thread at creation time and does not live update
*
* Channel types: forum
*/
default_thread_rate_limit_per_user?: number | null;
/**
* The default sort order type used to order posts in a forum channel
*
* Channel types: forum
*/
default_sort_order?: SortOrderType | null;
/**
* The default layout type used to display posts in a forum channel
*
* Channel types: forum
*/
default_forum_layout?: ForumLayoutType;
}>;
/**
@@ -603,6 +638,10 @@ export type RESTPostAPIGuildForumThreadsJSONBody = RESTPostAPIChannelMessagesThr
* First message in the forum thread
*/
message: RESTPostAPIChannelMessageJSONBody;
/**
* The IDs of the set of tags that have been applied to a thread in a forum channel; limited to 5
*/
applied_tags?: Snowflake[];
};
/**
@@ -676,10 +715,20 @@ export interface RESTGetAPIChannelThreadsArchivedQuery {
limit?: number;
}
/**
* https://discord.com/developers/docs/resources/channel#list-public-archived-threads
*/
export type RESTGetAPIChannelThreadsArchivedPublicResult = RESTGetAPIChannelUsersThreadsArchivedResult;
/**
* https://discord.com/developers/docs/resources/channel#list-private-archived-threads
*/
export type RESTGetAPIChannelThreadsArchivedPrivateResult = RESTGetAPIChannelUsersThreadsArchivedResult;
/**
* https://discord.com/developers/docs/resources/channel#list-active-threads
*
* @deprecated Removed in API v10, use [List Active Guild Threads](https://discord.com/developers/docs/resources/guild#list-active-threads) instead.
* @deprecated Removed in API v10, use [List Active Guild Threads](https://discord.com/developers/docs/resources/guild#list-active-guild-threads) instead.
*/
export type RESTGetAPIChannelThreadsResult = APIThreadList;

View File

@@ -53,6 +53,10 @@ export type APIGuildCreatePartialChannel = StrictPartial<
| 'rtc_region'
| 'video_quality_mode'
| 'flags'
| 'default_reaction_emoji'
| 'available_tags'
| 'default_sort_order'
| 'default_forum_layout'
>
> &
AddUndefinedToPossiblyUndefinedPropertiesOfInterface<{
@@ -135,9 +139,9 @@ export type RESTPostAPIGuildsJSONBody = AddUndefinedToPossiblyUndefinedPropertie
*/
afk_channel_id?: number | Snowflake | null;
/**
* AFK timeout in seconds
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout?: number;
afk_timeout?: 60 | 300 | 900 | 1800 | 3600;
/**
* The id of the channel where guild notices such as welcome messages and boost events are posted
*/
@@ -235,9 +239,9 @@ export type RESTPatchAPIGuildJSONBody = AddUndefinedToPossiblyUndefinedPropertie
*/
afk_channel_id?: Snowflake | null;
/**
* AFK timeout in seconds
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout?: number;
afk_timeout?: 60 | 300 | 900 | 1800 | 3600;
/**
* base64 1024x1024 png/jpeg/gif image for the guild icon (can be animated gif when the guild has `ANIMATED_ICON` feature)
*
@@ -897,6 +901,11 @@ export type RESTPatchAPIGuildVoiceStateUserJSONBody = AddUndefinedToPossiblyUnde
suppress?: boolean;
}>;
/**
* https://discord.com/developers/docs/resources/guild#modify-user-voice-state
*/
export type RESTPatchAPIGuildVoiceStateUserResult = never;
/**
* https://discord.com/developers/docs/resources/guild#get-guild-welcome-screen
*/

View File

@@ -16,6 +16,19 @@ import type {
} from '../../payloads/v9/mod.ts';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface, StrictPartial } from '../../utils/internals.ts';
/**
* https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands
*/
export interface RESTGetAPIApplicationCommandsQuery {
/**
* Whether to include full localization dictionaries (name_localizations and description_localizations)
* in the returned objects, instead of the name_localized and description_localized fields.
*
* @default false
*/
with_localizations?: boolean;
}
/**
* https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands
*/
@@ -90,6 +103,11 @@ export type RESTPutAPIApplicationCommandsJSONBody = RESTPostAPIApplicationComman
*/
export type RESTPutAPIApplicationCommandsResult = APIApplicationCommand[];
/**
* https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands
*/
export type RESTGetAPIApplicationGuildCommandsQuery = RESTGetAPIApplicationCommandsQuery;
/**
* https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands
*/

View File

@@ -1,7 +1,9 @@
import type { Snowflake } from '../../globals.ts';
export * from '../common.ts';
export * from './application.ts';
export * from './auditLog.ts';
export * from './autoModeration.ts';
export * from './channel.ts';
export * from './emoji.ts';
export * from './gateway.ts';
@@ -20,6 +22,33 @@ export * from './webhook.ts';
export const APIVersion = '9';
export const Routes = {
/**
* Route for:
* - GET `/applications/{application.id}/role-connections/metadata`
* - PUT `/applications/{application.id}/role-connections/metadata`
*/
applicationRoleConnectionMetadata(applicationId: Snowflake) {
return `/applications/${applicationId}/role-connections/metadata` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/auto-moderation/rules`
* - POST `/guilds/{guild.id}/auto-moderation/rules`
*/
guildAutoModerationRules(guildId: Snowflake) {
return `/guilds/${guildId}/auto-moderation/rules` as const;
},
/**
* Routes for:
* - GET `/guilds/{guild.id}/auto-moderation/rules/{rule.id}`
* - PATCH `/guilds/{guild.id}/auto-moderation/rules/{rule.id}`
* - DELETE `/guilds/{guild.id}/auto-moderation/rules/{rule.id}`
*/
guildAutoModerationRule(guildId: Snowflake, ruleId: Snowflake) {
return `/guilds/${guildId}/auto-moderation/rules/${ruleId}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/audit-logs`
@@ -510,6 +539,15 @@ export const Routes = {
return `/users/${userId}` as const;
},
/**
* Route for:
* - GET `/users/@me/applications/{application.id}/role-connection`
* - PUT `/users/@me/applications/{application.id}/role-connection`
*/
userApplicationRoleConnection(applicationId: Snowflake) {
return `/users/@me/applications/${applicationId}/role-connection` as const;
},
/**
* Route for:
* - GET `/users/@me/guilds`

View File

@@ -1,5 +1,12 @@
import type { Permissions, Snowflake } from '../../globals.ts';
import type { APIChannel, APIConnection, APIGuildMember, APIUser, GuildFeature } from '../../payloads/v9/mod.ts';
import type {
APIChannel,
APIConnection,
APIGuildMember,
APIUser,
APIApplicationRoleConnection,
GuildFeature,
} from '../../payloads/v9/mod.ts';
import type { AddUndefinedToPossiblyUndefinedPropertiesOfInterface } from '../../utils/internals.ts';
/**
@@ -49,9 +56,9 @@ export interface RESTGetAPICurrentUserGuildsQuery {
*/
after?: Snowflake;
/**
* Max number of guilds to return (1-100)
* Max number of guilds to return (1-200)
*
* @default 100
* @default 200
*/
limit?: number;
}
@@ -94,3 +101,31 @@ export type RESTPostAPICurrentUserCreateDMChannelResult = APIChannel;
* https://discord.com/developers/docs/resources/user#get-user-connections
*/
export type RESTGetAPICurrentUserConnectionsResult = APIConnection[];
/**
* https://discord.com/developers/docs/resources/user#get-user-application-role-connection
*/
export type RESTGetAPICurrentUserApplicationRoleConnectionResult = APIApplicationRoleConnection;
/**
* https://discord.com/developers/docs/resources/user#update-user-application-role-connection
*/
export interface RESTPutAPICurrentUserApplicationRoleConnectionJSONBody {
/**
* The vanity name of the platform a bot has connected (max 50 characters)
*/
platform_name?: string;
/**
* The username on the platform a bot has connected (max 100 characters)
*/
platform_username?: string;
/**
* Object mapping application role connection metadata keys to their `string`-ified value (max 100 characters) for the user on the platform a bot has connected
*/
metadata?: Record<string, string | number>;
}
/**
* https://discord.com/developers/docs/resources/user#update-user-application-role-connection
*/
export type RESTPutAPICurrentUserApplicationRoleConnectionResult = APIApplicationRoleConnection;

View File

@@ -3,4 +3,9 @@ import type { APIVoiceRegion } from '../../payloads/v9/mod.ts';
/**
* https://discord.com/developers/docs/resources/voice#list-voice-regions
*/
export type GetAPIVoiceRegionsResult = APIVoiceRegion[];
export type RESTGetAPIVoiceRegionsResult = APIVoiceRegion[];
/**
* @deprecated This was exported with the wrong name, use `RESTGetAPIVoiceRegionsResult` instead
*/
export type GetAPIVoiceRegionsResult = RESTGetAPIVoiceRegionsResult;

View File

@@ -141,7 +141,13 @@ export function isMessageComponentButtonInteraction(
export function isMessageComponentSelectMenuInteraction(
interaction: APIMessageComponentInteraction,
): interaction is APIMessageComponentSelectMenuInteraction {
return interaction.data.component_type === ComponentType.SelectMenu;
return [
ComponentType.StringSelect,
ComponentType.UserSelect,
ComponentType.RoleSelect,
ComponentType.MentionableSelect,
ComponentType.ChannelSelect,
].includes(interaction.data.component_type);
}
// Application Commands

View File

@@ -141,7 +141,13 @@ export function isMessageComponentButtonInteraction(
export function isMessageComponentSelectMenuInteraction(
interaction: APIMessageComponentInteraction,
): interaction is APIMessageComponentSelectMenuInteraction {
return interaction.data.component_type === ComponentType.SelectMenu;
return [
ComponentType.StringSelect,
ComponentType.UserSelect,
ComponentType.RoleSelect,
ComponentType.MentionableSelect,
ComponentType.ChannelSelect,
].includes(interaction.data.component_type);
}
// Application Commands

View File

@@ -1,5 +1,5 @@
/**
* https://discord.com/developers/docs/topics/gateway#connecting-gateway-url-params
* https://discord.com/developers/docs/topics/gateway#connecting-gateway-url-query-string-params
*/
export interface GatewayURLQuery {
v: string;

File diff suppressed because it is too large Load Diff

View File

@@ -1686,7 +1686,7 @@ export interface GatewayPresenceUpdateData {
/**
* The user's activities
*
* See https://discord.com/developers/docs/topics/gateway#activity-object
* See https://discord.com/developers/docs/topics/gateway-events#activity-object
*/
activities: GatewayActivityUpdateData[];
/**
@@ -1702,7 +1702,7 @@ export interface GatewayPresenceUpdateData {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-structure
* @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10.
*/
export type GatewayActivityUpdateData = Pick<GatewayActivity, 'name' | 'type' | 'url'>;

File diff suppressed because it is too large Load Diff

View File

@@ -51,7 +51,7 @@ export const FormattingPatterns = {
* 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})>/,
/<\/(?<fullName>(?<name>[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32})(?: (?<subcommandOrGroup>[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32}))?(?: (?<subcommand>[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32}))?):(?<id>\d{17,20})>/u,
/**
* Regular expression for matching a custom emoji, either static or animated
*

28
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "discord-api-types",
"version": "0.37.9",
"version": "0.37.26",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "discord-api-types",
"version": "0.37.9",
"version": "0.37.26",
"license": "MIT",
"devDependencies": {
"@babel/runtime-corejs3": "^7.18.0",
@@ -4351,9 +4351,9 @@
"dev": true
},
"node_modules/json5": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"dependencies": {
"minimist": "^1.2.0"
@@ -7611,9 +7611,9 @@
}
},
"node_modules/vm2": {
"version": "3.9.9",
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz",
"integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==",
"version": "3.9.11",
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz",
"integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==",
"dev": true,
"dependencies": {
"acorn": "^8.7.0",
@@ -11186,9 +11186,9 @@
"dev": true
},
"json5": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
@@ -13609,9 +13609,9 @@
}
},
"vm2": {
"version": "3.9.9",
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz",
"integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==",
"version": "3.9.11",
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz",
"integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==",
"dev": true,
"requires": {
"acorn": "^8.7.0",

View File

@@ -1,6 +1,6 @@
{
"name": "discord-api-types",
"version": "0.37.9",
"version": "0.37.26",
"description": "Discord API typings that are kept up to date for use in bot library creation.",
"homepage": "https://discord-api-types.dev",
"exports": {

View File

@@ -78,3 +78,27 @@ export interface RESTErrorGroupWrapper {
}
export type RESTErrorData = RESTErrorGroupWrapper | RESTErrorFieldInformation | { [k: string]: RESTErrorData } | string;
/**
* https://discord.com/developers/docs/topics/rate-limits#exceeding-a-rate-limit-rate-limit-response-structure
*/
export interface RESTRateLimit {
/**
* An error code for some limits
*
* {@link RESTJSONErrorCodes}
*/
code?: number;
/**
* A value indicating if you are being globally rate limited or not
*/
global: boolean;
/**
* A message saying you are being rate limited.
*/
message: string;
/**
* The number of seconds to wait before submitting another request.
*/
retry_after: number;
}

View File

@@ -43,14 +43,8 @@ import type {
APIApplicationCommandUserOption,
} from './_chatInput/user';
import type { APIBaseApplicationCommandInteractionData } from './internals';
import type { Snowflake } from '../../../../globals';
import type { APIAttachment, APIRole, APIUser } from '../../index';
import type {
APIApplicationCommandInteractionWrapper,
APIInteractionDataResolvedChannel,
APIInteractionDataResolvedGuildMember,
ApplicationCommandType,
} from '../applicationCommands';
import type { APIInteractionDataResolved } from '../../index';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
export * from './_chatInput/attachment';
@@ -114,18 +108,7 @@ export type APIApplicationCommandInteractionDataBasicOption =
export interface APIChatInputApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
options?: APIApplicationCommandInteractionDataOption[];
resolved?: APIChatInputApplicationCommandInteractionDataResolved;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIChatInputApplicationCommandInteractionDataResolved {
users?: Record<Snowflake, APIUser>;
roles?: Record<Snowflake, APIRole>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
channels?: Record<Snowflake, APIInteractionDataResolvedChannel>;
attachments?: Record<Snowflake, APIAttachment>;
resolved?: APIInteractionDataResolved;
}
/**

View File

@@ -1,13 +1,8 @@
import type { APIBaseApplicationCommandInteractionData } from './internals';
import type { Snowflake } from '../../../../globals';
import type { APIMessage } from '../../channel';
import type { APIUser } from '../../user';
import type {
APIApplicationCommandInteractionWrapper,
APIInteractionDataResolvedGuildMember,
ApplicationCommandType,
} from '../applicationCommands';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIUserInteractionDataResolved } from '../base';
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
@@ -15,15 +10,7 @@ import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../bas
export interface APIUserApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.User> {
target_id: Snowflake;
resolved: APIUserApplicationCommandInteractionDataResolved;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIUserApplicationCommandInteractionDataResolved {
users: Record<Snowflake, APIUser>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
resolved: APIUserInteractionDataResolved;
}
/**

View File

@@ -15,8 +15,6 @@ import type { APIBaseInteraction } from './base';
import type { InteractionType } from './responses';
import type { Permissions, Snowflake } from '../../../globals';
import type { LocalizationMap } from '../../../v10';
import type { APIPartialChannel, APIThreadMetadata } from '../channel';
import type { APIGuildMember } from '../guild';
export * from './_applicationCommands/chatInput';
export * from './_applicationCommands/contextMenu';
@@ -85,6 +83,10 @@ export interface APIApplicationCommand {
* @deprecated Use `dm_permission` and/or `default_member_permissions` instead
*/
default_permission?: boolean;
/**
* Indicates whether the command is age-restricted, defaults to `false`
*/
nsfw?: boolean;
/**
* Autoincrementing version identifier updated during substantial record changes
*/
@@ -107,28 +109,14 @@ export type APIApplicationCommandInteractionData =
| APIChatInputApplicationCommandInteractionData
| APIContextMenuInteractionData;
/**
* https://discord.com/developers/docs/resources/channel#channel-object
*/
export interface APIInteractionDataResolvedChannel extends Required<APIPartialChannel> {
thread_metadata?: APIThreadMetadata | null;
permissions: Permissions;
parent_id?: string | null;
}
/**
* https://discord.com/developers/docs/resources/guild#guild-member-object
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'user' | 'deaf' | 'mute'> {
permissions: Permissions;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object
*/
export type APIApplicationCommandInteractionWrapper<Data extends APIApplicationCommandInteractionData> =
APIBaseInteraction<InteractionType.ApplicationCommand, Data> &
Required<Pick<APIBaseInteraction<InteractionType.ApplicationCommand, Data>, 'channel_id' | 'data'>>;
Required<
Pick<APIBaseInteraction<InteractionType.ApplicationCommand, Data>, 'channel_id' | 'data' | 'app_permissions'>
>;
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object

View File

@@ -1,7 +1,7 @@
import type { InteractionType } from './responses';
import type { Permissions, Snowflake } from '../../../globals';
import type { LocaleString } from '../../../v10';
import type { APIMessage } from '../channel';
import type { APIRole, LocaleString } from '../../../v10';
import type { APIAttachment, APIMessage, APIPartialChannel, APIThreadMetadata } from '../channel';
import type { APIGuildMember } from '../guild';
import type { APIUser } from '../user';
@@ -129,3 +129,46 @@ export type APIGuildInteractionWrapper<Original extends APIBaseInteraction<Inter
'user'
> &
Required<Pick<Original, 'member' | 'guild_id'>>;
/**
* https://discord.com/developers/docs/resources/channel#channel-object
*/
export interface APIInteractionDataResolvedChannel extends Required<APIPartialChannel> {
thread_metadata?: APIThreadMetadata | null;
permissions: Permissions;
parent_id?: string | null;
}
/**
* https://discord.com/developers/docs/resources/guild#guild-member-object
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'user' | 'deaf' | 'mute'> {
permissions: Permissions;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIInteractionDataResolved {
users?: Record<Snowflake, APIUser>;
roles?: Record<Snowflake, APIRole>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
channels?: Record<Snowflake, APIInteractionDataResolvedChannel>;
attachments?: Record<Snowflake, APIAttachment>;
}
/**
* @deprecated Renamed to `APIInteractionDataResolved`
*/
export type APIChatInputApplicationCommandInteractionDataResolved = APIInteractionDataResolved;
/**
* `users` and optional `members` from APIInteractionDataResolved, for user commands and user selects
*/
export type APIUserInteractionDataResolved = Required<Pick<APIInteractionDataResolved, 'users'>> &
Pick<APIInteractionDataResolved, 'members'>;
/**
* @deprecated Renamed to `APIUserInteractionDataResolved`
*/
export type APIUserApplicationCommandInteractionDataResolved = APIUserInteractionDataResolved;

View File

@@ -1,4 +1,10 @@
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from './base';
import type {
APIDMInteractionWrapper,
APIGuildInteractionWrapper,
APIInteractionDataResolved,
APIUserInteractionDataResolved,
} from './base';
import type { Snowflake } from '../../../globals';
import type { ComponentType } from '../channel';
import type { APIBaseInteraction, InteractionType } from '../interactions';
@@ -9,7 +15,7 @@ export type APIMessageComponentInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageComponentInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -20,7 +26,7 @@ export type APIMessageComponentButtonInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageButtonInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -31,7 +37,7 @@ export type APIMessageComponentSelectMenuInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageSelectMenuInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -50,11 +56,42 @@ export interface APIMessageComponentBaseInteractionData<CType extends ComponentT
export type APIMessageButtonInteractionData = APIMessageComponentBaseInteractionData<ComponentType.Button>;
export interface APIMessageSelectMenuInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.SelectMenu> {
export interface APIMessageStringSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.StringSelect> {
values: string[];
}
export interface APIMessageUserSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.UserSelect> {
values: Snowflake[];
resolved: APIUserInteractionDataResolved;
}
export interface APIMessageRoleSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.RoleSelect> {
values: Snowflake[];
resolved: Required<Pick<APIInteractionDataResolved, 'roles'>>;
}
export interface APIMessageMentionableSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.MentionableSelect> {
values: Snowflake[];
resolved: Pick<APIInteractionDataResolved, 'users' | 'members' | 'roles'>;
}
export interface APIMessageChannelSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.ChannelSelect> {
values: Snowflake[];
resolved: Required<Pick<APIInteractionDataResolved, 'channels'>>;
}
export type APIMessageSelectMenuInteractionData =
| APIMessageStringSelectInteractionData
| APIMessageUserSelectInteractionData
| APIMessageRoleSelectInteractionData
| APIMessageMentionableSelectInteractionData
| APIMessageChannelSelectInteractionData;
export type APIMessageComponentDMInteraction = APIDMInteractionWrapper<APIMessageComponentInteraction>;
export type APIMessageComponentGuildInteraction = APIGuildInteractionWrapper<APIMessageComponentInteraction>;

View File

@@ -6,6 +6,7 @@ import type { OAuth2Scopes } from './oauth2';
import type { APITeam } from './teams';
import type { APIUser } from './user';
import type { Permissions, Snowflake } from '../../globals';
import type { LocalizationMap } from '../common';
/**
* https://discord.com/developers/docs/resources/application#application-object
@@ -105,6 +106,11 @@ export interface APIApplication {
* The application's default custom authorization link, if enabled
*/
custom_install_url?: string;
/**
* The application's role connection verification entry point,
* which when configured will render the app as a verification method in the guild role verification configuration
*/
role_connections_verification_url?: string;
}
export interface APIApplicationInstallParams {
@@ -116,18 +122,131 @@ export interface APIApplicationInstallParams {
* https://discord.com/developers/docs/resources/application#application-object-application-flags
*/
export enum ApplicationFlags {
/**
* @unstable
*/
EmbeddedReleased = 1 << 1,
/**
* @unstable
*/
ManagedEmoji = 1 << 2,
/**
* @unstable
*/
GroupDMCreate = 1 << 4,
/**
* @unstable
*/
RPCHasConnected = 1 << 11,
/**
* Intent required for bots in 100 or more servers to receive `presence_update` events
*/
GatewayPresence = 1 << 12,
/**
* Intent required for bots in under 100 servers to receive `presence_update` events, found in Bot Settings
*/
GatewayPresenceLimited = 1 << 13,
/**
* Intent required for bots in 100 or more servers to receive member-related events like `guild_member_add`.
* See list of member-related events [under `GUILD_MEMBERS`](https://discord.com/developers/docs/topics/gateway#list-of-intents)
*/
GatewayGuildMembers = 1 << 14,
/**
* Intent required for bots in under 100 servers to receive member-related events like `guild_member_add`, found in Bot Settings.
* See list of member-related events [under `GUILD_MEMBERS`](https://discord.com/developers/docs/topics/gateway#list-of-intents)
*/
GatewayGuildMembersLimited = 1 << 15,
/**
* Indicates unusual growth of an app that prevents verification
*/
VerificationPendingGuildLimit = 1 << 16,
/**
* Indicates if an app is embedded within the Discord client (currently unavailable publicly)
*/
Embedded = 1 << 17,
/**
* Intent required for bots in 100 or more servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055)
*/
GatewayMessageContent = 1 << 18,
/**
* Intent required for bots in under 100 servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055),
* found in Bot Settings
*/
GatewayMessageContentLimited = 1 << 19,
/**
* @unstable
*/
EmbeddedFirstParty = 1 << 20,
/**
* Indicates if an app has registered global [application commands](https://discord.com/developers/docs/interactions/application-commands)
*/
ApplicationCommandBadge = 1 << 23,
}
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-structure
*/
export interface APIApplicationRoleConnectionMetadata {
/**
* Type of metadata value
*/
type: ApplicationRoleConnectionMetadataType;
/**
* Dictionary key for the metadata field (must be `a-z`, `0-9`, or `_` characters; max 50 characters)
*/
key: string;
/**
* Name of the metadata field (max 100 characters)
*/
name: string;
/**
* Translations of the name
*/
name_localizations?: LocalizationMap;
/**
* Description of the metadata field (max 200 characters)
*/
description: string;
/**
* Translations of the description
*/
description_localizations?: LocalizationMap;
}
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-type
*/
export enum ApplicationRoleConnectionMetadataType {
/**
* The metadata value (`integer`) is less than or equal to the guild's configured value (`integer`)
*/
IntegerLessThanOrEqual = 1,
/**
* The metadata value (`integer`) is greater than or equal to the guild's configured value (`integer`)
*/
IntegerGreaterThanOrEqual,
/**
* The metadata value (`integer`) is equal to the guild's configured value (`integer`)
*/
IntegerEqual,
/**
* The metadata value (`integer`) is not equal to the guild's configured value (`integer`)
*/
IntegerNotEqual,
/**
* The metadata value (`ISO8601 string`) is less than or equal to the guild's configured value (`integer`; days before current date)
*/
DatetimeLessThanOrEqual,
/**
* The metadata value (`ISO8601 string`) is greater than or equal to the guild's configured value (`integer`; days before current date)
*/
DatetimeGreaterThanOrEqual,
/**
* The metadata value (`integer`) is equal to the guild's configured value (`integer`; `1`)
*/
BooleanEqual,
/**
* The metadata value (`integer`) is not equal to the guild's configured value (`integer`; `1`)
*/
BooleanNotEqual,
}

View File

@@ -2,6 +2,13 @@
* Types extracted from https://discord.com/developers/docs/resources/audit-log
*/
import type {
APIAutoModerationAction,
APIAutoModerationRule,
APIAutoModerationRuleTriggerMetadata,
AutoModerationRuleEventType,
AutoModerationRuleTriggerType,
} from './autoModeration';
import type { APIChannel, APIOverwrite } from './channel';
import type {
APIGuildIntegration,
@@ -52,6 +59,12 @@ export interface APIAuditLog {
* See https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object
*/
audit_log_entries: APIAuditLogEntry[];
/**
* List of auto moderation rules referenced in the audit log
*
* See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object
*/
auto_moderation_rules: APIAutoModerationRule[];
/**
* Partial integration objects
*
@@ -180,12 +193,37 @@ export enum AuditLogEvent {
ThreadDelete,
ApplicationCommandPermissionUpdate = 121,
AutoModerationRuleCreate = 140,
AutoModerationRuleUpdate,
AutoModerationRuleDelete,
AutoModerationBlockMessage,
AutoModerationFlagToChannel,
AutoModerationUserCommunicationDisabled,
}
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-optional-audit-entry-info
*/
export interface APIAuditLogOptions {
/**
* Name of the Auto Moderation rule that was triggered
*
* Present from:
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
auto_moderation_rule_name?: string;
/**
* Trigger type of the Auto Moderation rule that was triggered
*
* Present from:
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
auto_moderation_rule_trigger_type?: AuditLogRuleTriggerType;
/**
* Number of days after which inactive members were kicked
*
@@ -212,6 +250,9 @@ export interface APIAuditLogOptions {
* - STAGE_INSTANCE_CREATE
* - STAGE_INSTANCE_UPDATE
* - STAGE_INSTANCE_DELETE
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
channel_id?: Snowflake;
@@ -275,6 +316,8 @@ export enum AuditLogOptionsType {
Member = '1',
}
export type AuditLogRuleTriggerType = `${AutoModerationRuleTriggerType}`;
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-change-object-audit-log-change-structure
*/
@@ -347,7 +390,14 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyEntityType
| APIAuditLogChangeKeyStatus
| APIAuditLogChangeKeyLocation
| APIAuditLogChangeKeyCommunicationDisabledUntil;
| APIAuditLogChangeKeyCommunicationDisabledUntil
| APIAuditLogChangeKeyTriggerType
| APIAuditLogChangeKeyEventType
| APIAuditLogChangeKeyTriggerMetadata
| APIAuditLogChangeKeyActions
| APIAuditLogChangeKeyEnabled
| APIAuditLogChangeKeyExemptRoles
| APIAuditLogChangeKeyExemptChannels;
/**
* Returned when an entity's name is changed
@@ -710,6 +760,44 @@ export type APIAuditLogChangeKeyLocation = AuditLogChangeData<'location', string
*/
export type APIAuditLogChangeKeyCommunicationDisabledUntil = AuditLogChangeData<'communication_disabled_until', string>;
/**
* Returned when an auto moderation rule's trigger type is changed (only in rule creation or deletion)
*/
export type APIAuditLogChangeKeyTriggerType = AuditLogChangeData<'trigger_type', AutoModerationRuleTriggerType>;
/**
* Returned when an auto moderation rule's event type is changed
*/
export type APIAuditLogChangeKeyEventType = AuditLogChangeData<'event_type', AutoModerationRuleEventType>;
/**
* Returned when an auto moderation rule's trigger metadata is changed
*/
export type APIAuditLogChangeKeyTriggerMetadata = AuditLogChangeData<
'trigger_metadata',
APIAutoModerationRuleTriggerMetadata
>;
/**
* Returned when an auto moderation rule's actions is changed
*/
export type APIAuditLogChangeKeyActions = AuditLogChangeData<'actions', APIAutoModerationAction[]>;
/**
* Returned when an auto moderation rule's enabled status is changed
*/
export type APIAuditLogChangeKeyEnabled = AuditLogChangeData<'enabled', boolean>;
/**
* Returned when an auto moderation rule's exempt roles is changed
*/
export type APIAuditLogChangeKeyExemptRoles = AuditLogChangeData<'exempt_roles', Snowflake[]>;
/**
* Returned when an auto moderation rule's exempt channels is changed
*/
export type APIAuditLogChangeKeyExemptChannels = AuditLogChangeData<'exempt_channels', Snowflake[]>;
interface AuditLogChangeData<K extends string, D> {
key: K;
/**

View File

@@ -0,0 +1,203 @@
/**
* Types extracted from https://discord.com/developers/docs/resources/auto-moderation
*/
import type { Snowflake } from '../../globals';
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-auto-moderation-rule-structure
*/
export interface APIAutoModerationRule {
/**
* The id of this rule
*/
id: Snowflake;
/**
* The guild which this rule belongs to
*/
guild_id: Snowflake;
/**
* The rule name
*/
name: string;
/**
* The user id who created this rule
*/
creator_id: Snowflake;
/**
* The rule event type
*/
event_type: AutoModerationRuleEventType;
/**
* The rule trigger type
*/
trigger_type: AutoModerationRuleTriggerType;
/**
* The rule trigger metadata
*/
trigger_metadata: APIAutoModerationRuleTriggerMetadata;
/**
* The actions which will execute when this rule is triggered
*/
actions: APIAutoModerationAction[];
/**
* Whether this rule is enabled
*/
enabled: boolean;
/**
* The role ids that shouldn't be affected by this rule (Maximum of 20)
*/
exempt_roles: Snowflake[];
/**
* The channel ids that shouldn't be affected by this rule (Maximum of 50)
*/
exempt_channels: Snowflake[];
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-types
*/
export enum AutoModerationRuleTriggerType {
/**
* Check if content contains words from a user defined list of keywords (Maximum of 3 per guild)
*/
Keyword = 1,
/**
* Check if content represents generic spam (Maximum of 1 per guild)
*/
Spam = 3,
/**
* Check if content contains words from internal pre-defined wordsets (Maximum of 1 per guild)
*/
KeywordPreset,
/**
* Check if content contains more mentions than allowed (Maximum of 1 per guild)
*/
MentionSpam,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-metadata
*/
export interface APIAutoModerationRuleTriggerMetadata {
/**
* Substrings which will be searched for in content (Maximum of 1000)
*
* A keyword can be a phrase which contains multiple words. Wildcard symbols can be used to customize how each string will be matched. Each keyword must be 30 characters or less
* See [keyword matching strategies](https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-matching-strategies)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.Keyword}
*/
keyword_filter?: string[];
/**
* The internally pre-defined wordsets which will be searched for in content
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.KeywordPreset}
*/
presets?: AutoModerationRuleKeywordPresetType[];
/**
* Substrings which will be exempt from triggering the preset trigger type (Maximum of 1000)
*
* A allowed-word can be a phrase which contains multiple words. Wildcard symbols can be used to customize how each string will be matched. Each keyword must be 30 characters or less
* See [keyword matching strategies](https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-matching-strategies)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.KeywordPreset}
*/
allow_list?: string[];
/**
* Regular expression patterns which will be matched against content (Maximum of 10)
*
* Only Rust flavored regex is currently supported (Maximum of 75 characters)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.Keyword}
*/
regex_patterns?: string[];
/**
* Total number of mentions (role & user) allowed per message (Maximum of 50)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.MentionSpam}
*/
mention_total_limit?: number;
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-preset-types
*/
export enum AutoModerationRuleKeywordPresetType {
/**
* Words that may be considered forms of swearing or cursing
*/
Profanity = 1,
/**
* Words that refer to sexually explicit behavior or activity
*/
SexualContent,
/**
* Personal insults or words that may be considered hate speech
*/
Slurs,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-event-types
*/
export enum AutoModerationRuleEventType {
/**
* When a member sends or edits a message in the guild
*/
MessageSend = 1,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-auto-moderation-action-structure
*/
export interface APIAutoModerationAction {
/**
* The action type
*/
type: AutoModerationActionType;
/**
* Additional metadata needed during execution for this specific action type
*
* Will only be omitted if the action type is {@link AutoModerationActionType.BlockMessage}
*/
metadata?: APIAutoModerationActionMetadata;
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-types
*/
export enum AutoModerationActionType {
/**
* Blocks the content of a message according to the rule
*/
BlockMessage = 1,
/**
* Logs user content to a specified channel
*/
SendAlertMessage,
/**
* Timeout user for specified duration, this action type can be set if the bot has `MODERATE_MEMBERS` permission
*/
Timeout,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-metadata
*/
export interface APIAutoModerationActionMetadata {
/**
* Channel to which user content should be logged
*
* Associated action type: {@link AutoModerationActionType.SendAlertMessage}
*/
channel_id?: Snowflake;
/**
* Timeout duration in seconds (Maximum of 4 weeks - 2419200 seconds)
*
* Only available if using {@link AutoModerationRuleTriggerType.Keyword}
*
* Associated action type: {@link AutoModerationActionType.Timeout}
*/
duration_seconds?: number;
}

View File

@@ -25,9 +25,9 @@ export interface APIPartialChannel {
*/
type: ChannelType;
/**
* The name of the channel (2-100 characters)
* The name of the channel (1-100 characters)
*/
name?: string;
name?: string | null;
}
/**
@@ -57,6 +57,11 @@ 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;
/**
* When the last pinned message was pinned.
* This may be `null` in events such as `GUILD_CREATE` when a message is not pinned
*/
last_pin_timestamp?: string | 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
@@ -69,7 +74,11 @@ export interface APITextBasedChannel<T extends ChannelType> extends APIChannelBa
rate_limit_per_user?: number;
}
export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T> {
export interface APIGuildChannel<T extends ChannelType> extends Omit<APIChannelBase<T>, 'name'> {
/**
* The name of the channel (1-100 characters)
*/
name: string;
/**
* The id of the guild (may be missing for some channel objects received over gateway guild dispatches)
*/
@@ -83,7 +92,7 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
/**
* Sorting position of the channel
*/
position?: number;
position: number;
/**
* ID of the parent category for a channel (each parent category can contain up to 50 channels)
*
@@ -101,21 +110,21 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
export type GuildTextChannelType = Exclude<TextChannelType, ChannelType.DM | ChannelType.GroupDM>;
export interface APIGuildTextChannel<T extends GuildTextChannelType>
extends APITextBasedChannel<T>,
extends Omit<APITextBasedChannel<T>, 'name'>,
APIGuildChannel<T> {
/**
* Default duration for newly created threads, in minutes, to automatically archive the thread after recent activity
*/
default_auto_archive_duration?: ThreadAutoArchiveDuration;
/**
* The channel topic (0-1024 characters)
* The initial `rate_limit_per_user` to set on newly created threads.
* This field is copied to the thread at creation time and does not live update
*/
default_thread_rate_limit_per_user?: number;
/**
* The channel topic (0-4096 characters for forum channels, 0-1024 characters for all others)
*/
topic?: string | null;
/**
* When the last pinned message was pinned.
* This may be `null` in events such as `GUILD_CREATE` when a message is not pinned
*/
last_pin_timestamp?: string | null;
}
export type APITextChannel = APIGuildTextChannel<ChannelType.GuildText>;
@@ -141,7 +150,7 @@ export interface APIVoiceChannelBase<T extends ChannelType> extends APIGuildChan
export interface APIGuildVoiceChannel
extends APIVoiceChannelBase<ChannelType.GuildVoice>,
APITextBasedChannel<ChannelType.GuildVoice> {
Omit<APITextBasedChannel<ChannelType.GuildVoice>, 'name' | 'last_pin_timestamp'> {
/**
* The camera video quality mode of the voice channel, `1` when not present
*
@@ -161,9 +170,18 @@ export interface APIDMChannelBase<T extends ChannelType> extends Omit<APITextBas
recipients?: APIUser[];
}
export type APIDMChannel = APIDMChannelBase<ChannelType.DM>;
export interface APIDMChannel extends Omit<APIDMChannelBase<ChannelType.DM>, 'name'> {
/**
* The name of the channel (always null for DM channels)
*/
name: null;
}
export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.GroupDM>, 'name'> {
/**
* The name of the channel (1-100 characters)
*/
name: string | null;
/**
* Application id of the group DM creator if it is bot-created
*/
@@ -172,10 +190,6 @@ export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.Gro
* Icon hash
*/
icon?: string | null;
/**
* The name of the channel (2-100 characters)
*/
name?: string | null;
/**
* ID of the DM creator
*/
@@ -187,7 +201,11 @@ export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.Gro
}
export interface APIThreadChannel
extends APIGuildChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread> {
extends Omit<
APITextBasedChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread>,
'name'
>,
APIGuildChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread> {
/**
* The client users member for the thread, only included in select endpoints
*/
@@ -206,33 +224,112 @@ export interface APIThreadChannel
* The approximate member count of the thread, does not count above 50 even if there are more members
*/
member_count?: number;
/**
* 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;
/**
* ID of the thread creator
*/
owner_id?: Snowflake;
/**
* 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;
/**
* The IDs of the set of tags that have been applied to a thread in a forum channel
*/
applied_tags: Snowflake[];
}
export type APIGuildForumChannel = APIGuildTextChannel<ChannelType.GuildForum>;
/**
* https://discord.com/developers/docs/resources/channel#forum-tag-object-forum-tag-structure
*/
export interface APIGuildForumTag {
/**
* The id of the tag
*/
id: Snowflake;
/**
* The name of the tag (0-20 characters)
*/
name: string;
/**
* Whether this tag can only be added to or removed from threads by a member with the `MANAGE_THREADS` permission
*/
moderated: boolean;
/**
* The id of a guild's custom emoji
*/
emoji_id: Snowflake | null;
/**
* The unicode character of the emoji
*/
emoji_name: string | null;
}
/**
* https://discord.com/developers/docs/resources/channel#default-reaction-object-default-reaction-structure
*/
export interface APIGuildForumDefaultReactionEmoji {
/**
* The id of a guild's custom emoji
*/
emoji_id: Snowflake | null;
/**
* The unicode character of the emoji
*/
emoji_name: string | null;
}
/**
* https://discord.com/developers/docs/resources/channel/#channel-object-sort-order-types
*/
export enum SortOrderType {
/**
* Sort forum posts by activity
*/
LatestActivity,
/**
* Sort forum posts by creation time (from most recent to oldest)
*/
CreationDate,
}
/**
* https://discord.com/developers/docs/resources/channel/#channel-object-forum-layout-types
*/
export enum ForumLayoutType {
/**
* No default has been set for forum channel
*/
NotSet,
/**
* Display posts as a list
*/
ListView,
/**
* Display posts as a collection of tiles
*/
GalleryView,
}
export interface APIGuildForumChannel extends APIGuildTextChannel<ChannelType.GuildForum> {
/**
* The set of tags that can be used in a forum channel
*/
available_tags: APIGuildForumTag[];
/**
* The emoji to show in the add reaction button on a thread in a forum channel
*/
default_reaction_emoji: APIGuildForumDefaultReactionEmoji | null;
/**
* The default sort order type used to order posts in a forum channel
*/
default_sort_order: SortOrderType | null;
/**
* The default layout type used to display posts in a forum channel. Defaults to `0`, which indicates a layout view has not been set by a channel admin
*/
default_forum_layout: ForumLayoutType;
}
/**
* https://discord.com/developers/docs/resources/channel#channel-object-channel-structure
@@ -246,7 +343,6 @@ export type APIChannel =
| APIGuildStageVoiceChannel
| APIGuildCategoryChannel
| APIThreadChannel
| APINewsChannel
| APIGuildForumChannel;
/**
@@ -272,13 +368,13 @@ export enum ChannelType {
/**
* An organizational category that contains up to 50 channels
*
* See https://support.discord.com/hc/en-us/articles/115001580171-Channel-Categories-101
* See https://support.discord.com/hc/articles/115001580171
*/
GuildCategory,
/**
* A channel that users can follow and crosspost into their own guild
*
* See https://support.discord.com/hc/en-us/articles/360032008192
* See https://support.discord.com/hc/articles/360032008192
*/
GuildAnnouncement,
/**
@@ -286,7 +382,7 @@ export enum ChannelType {
*/
AnnouncementThread = 10,
/**
* A temporary sub-channel within a Guild Text channel
* A temporary sub-channel within a Guild Text or Guild Forum channel
*/
PublicThread,
/**
@@ -296,13 +392,13 @@ export enum ChannelType {
/**
* A voice channel for hosting events with an audience
*
* See https://support.discord.com/hc/en-us/articles/1500005513722
* See https://support.discord.com/hc/articles/1500005513722
*/
GuildStageVoice,
/**
* The channel in a Student Hub containing the listed servers
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*/
GuildDirectory,
/**
@@ -317,7 +413,7 @@ export enum ChannelType {
*
* @deprecated This is the old name for {@apilink ChannelType#GuildAnnouncement}
*
* See https://support.discord.com/hc/en-us/articles/360032008192
* See https://support.discord.com/hc/articles/360032008192
*/
GuildNews = 5,
/**
@@ -380,7 +476,7 @@ export interface APIMessage {
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
content: string;
/**
@@ -437,7 +533,7 @@ export interface APIMessage {
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
attachments: APIAttachment[];
/**
@@ -450,7 +546,7 @@ export interface APIMessage {
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
embeds: APIEmbed[];
/**
@@ -540,7 +636,7 @@ export interface APIMessage {
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
components?: APIActionRowComponent<APIMessageActionRowComponent>[];
/**
@@ -591,6 +687,7 @@ export enum MessageType {
ThreadStarterMessage,
GuildInviteReminder,
ContextMenuCommand,
AutoModerationAction,
}
/**
@@ -943,6 +1040,12 @@ export enum EmbedType {
* Link embed
*/
Link = 'link',
/**
* Auto moderation alert embed
*
* @unstable This embed type is currently not documented by Discord, but it is returned in the auto moderation system messages.
*/
AutoModerationMessage = 'auto_moderation_message',
}
/**
@@ -1230,13 +1333,38 @@ export enum ComponentType {
*/
Button,
/**
* Select Menu component
* Select menu for picking from defined text options
*/
SelectMenu,
StringSelect,
/**
* Text Input component
*/
TextInput,
/**
* Select menu for users
*/
UserSelect,
/**
* Select menu for roles
*/
RoleSelect,
/**
* Select menu for users and roles
*/
MentionableSelect,
/**
* Select menu for channels
*/
ChannelSelect,
// EVERYTHING BELOW THIS LINE SHOULD BE OLD NAMES FOR RENAMED ENUM MEMBERS //
/**
* Select menu for picking from defined text options
*
* @deprecated This is the old name for {@apilink ComponentType#StringSelect}
*/
SelectMenu = 3,
}
/**
@@ -1328,15 +1456,18 @@ export enum TextInputStyle {
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APISelectMenuComponent extends APIBaseComponent<ComponentType.SelectMenu> {
export interface APIBaseSelectMenuComponent<
T extends
| ComponentType.StringSelect
| ComponentType.UserSelect
| ComponentType.RoleSelect
| ComponentType.MentionableSelect
| ComponentType.ChannelSelect,
> extends APIBaseComponent<T> {
/**
* A developer-defined identifier for the select menu, max 100 characters
*/
custom_id: string;
/**
* The choices in the select, max 25
*/
options: APISelectMenuOption[];
/**
* Custom placeholder text if nothing is selected, max 150 characters
*/
@@ -1361,6 +1492,51 @@ export interface APISelectMenuComponent extends APIBaseComponent<ComponentType.S
disabled?: boolean;
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APIStringSelectComponent extends APIBaseSelectMenuComponent<ComponentType.StringSelect> {
/**
* Specified choices in a select menu; max 25
*/
options: APISelectMenuOption[];
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIUserSelectComponent = APIBaseSelectMenuComponent<ComponentType.UserSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIRoleSelectComponent = APIBaseSelectMenuComponent<ComponentType.RoleSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIMentionableSelectComponent = APIBaseSelectMenuComponent<ComponentType.MentionableSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APIChannelSelectComponent extends APIBaseSelectMenuComponent<ComponentType.ChannelSelect> {
/**
* List of channel types to include in the ChannelSelect component
*/
channel_types?: ChannelType[];
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APISelectMenuComponent =
| APIStringSelectComponent
| APIUserSelectComponent
| APIRoleSelectComponent
| APIMentionableSelectComponent
| APIChannelSelectComponent;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-option-structure
*/
@@ -1429,7 +1605,15 @@ export interface APITextInputComponent extends APIBaseComponent<ComponentType.Te
* https://discord.com/developers/docs/resources/channel#channel-object-channel-flags
*/
export enum ChannelFlags {
/**
* This thread is pinned to the top of its parent forum channel
*/
Pinned = 1 << 1,
/**
* Whether a tag is required to be specified when creating a thread in a forum channel.
* Tags are specified in the `applied_tags` field
*/
RequireTag = 1 << 4,
}
/**

View File

@@ -1,5 +1,7 @@
/**
* Types extracted from https://discord.com/developers/docs/topics/gateway
* Types extracted from
* - https://discord.com/developers/docs/topics/gateway
* - https://discord.com/developers/docs/topics/gateway-events
*/
import type { APIChannel, APIThreadMember } from './channel';
@@ -58,7 +60,7 @@ export interface APIGatewaySessionStartLimit {
}
/**
* https://discord.com/developers/docs/topics/gateway#presence-update-presence-update-event-fields
* https://discord.com/developers/docs/topics/gateway-events#presence-update-presence-update-event-fields
*/
export interface GatewayPresenceUpdate {
/**
@@ -81,13 +83,13 @@ export interface GatewayPresenceUpdate {
/**
* User's current activities
*
* See https://discord.com/developers/docs/topics/gateway#activity-object
* See https://discord.com/developers/docs/topics/gateway-events#activity-object
*/
activities?: GatewayActivity[];
/**
* User's platform-dependent status
*
* See https://discord.com/developers/docs/topics/gateway#client-status-object
* See https://discord.com/developers/docs/topics/gateway-events#client-status-object
*/
client_status?: GatewayPresenceClientStatus;
}
@@ -104,7 +106,7 @@ export enum PresenceUpdateStatus {
}
/**
* https://discord.com/developers/docs/topics/gateway#client-status-object
* https://discord.com/developers/docs/topics/gateway-events#client-status-object
*/
export interface GatewayPresenceClientStatus {
/**
@@ -122,7 +124,7 @@ export interface GatewayPresenceClientStatus {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-structure
*/
export interface GatewayActivity {
/**
@@ -137,7 +139,7 @@ export interface GatewayActivity {
/**
* Activity type
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-types
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types
*/
type: ActivityType;
/**
@@ -177,7 +179,7 @@ export interface GatewayActivity {
/**
* The emoji used for a custom status
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-emoji
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-emoji
*/
emoji?: GatewayActivityEmoji;
/**
@@ -187,19 +189,19 @@ export interface GatewayActivity {
/**
* Information for the current party of the player
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-party
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-party
*/
party?: GatewayActivityParty;
/**
* Images for the presence and their hover texts
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-assets
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-assets
*/
assets?: GatewayActivityAssets;
/**
* Secrets for Rich Presence joining and spectating
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-secrets
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-secrets
*/
secrets?: GatewayActivitySecrets;
/**
@@ -209,7 +211,7 @@ export interface GatewayActivity {
/**
* Activity flags `OR`d together, describes what the payload includes
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags
*
* See https://en.wikipedia.org/wiki/Bit_field
*/
@@ -236,7 +238,7 @@ export enum ActivityPlatform {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-types
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types
*/
export enum ActivityType {
/**
@@ -266,7 +268,7 @@ export enum ActivityType {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-timestamps
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-timestamps
*/
export interface GatewayActivityTimestamps {
/**
@@ -280,12 +282,12 @@ export interface GatewayActivityTimestamps {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-emoji
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-emoji
*/
export type GatewayActivityEmoji = Partial<Pick<APIEmoji, 'id' | 'animated'>> & Pick<APIEmoji, 'name'>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-party
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-party
*/
export interface GatewayActivityParty {
/**
@@ -299,19 +301,19 @@ export interface GatewayActivityParty {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-assets
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-assets
*/
export type GatewayActivityAssets = Partial<
Record<'large_image' | 'large_text' | 'small_image' | 'small_text', string>
>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-secrets
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-secrets
*/
export type GatewayActivitySecrets = Partial<Record<'join' | 'spectate' | 'match', string>>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags
*/
export enum ActivityFlags {
Instance = 1 << 0,
@@ -337,7 +339,7 @@ export interface GatewayActivityButton {
}
/**
* https://discord.com/developers/docs/topics/gateway#thread-list-sync-thread-list-sync-event-fields
* https://discord.com/developers/docs/topics/gateway-events#thread-list-sync-thread-list-sync-event-fields
*/
export interface GatewayThreadListSync {
/**
@@ -359,7 +361,7 @@ export interface GatewayThreadListSync {
}
/**
* https://discord.com/developers/docs/topics/gateway#thread-members-update-thread-members-update-event-fields
* https://discord.com/developers/docs/topics/gateway-events#thread-members-update-thread-members-update-event-fields
*/
export interface GatewayThreadMembersUpdate {
/**

View File

@@ -118,9 +118,9 @@ export interface APIGuild extends APIPartialGuild {
*/
afk_channel_id: Snowflake | null;
/**
* afk timeout in seconds
* afk timeout in seconds, can be set to: `60`, `300`, `900`, `1800`, `3600`
*/
afk_timeout: number;
afk_timeout: 60 | 300 | 900 | 1800 | 3600;
/**
* `true` if the guild widget is enabled
*/
@@ -382,6 +382,16 @@ export enum GuildFeature {
* Guild has access to set an animated guild icon
*/
AnimatedIcon = 'ANIMATED_ICON',
/**
* Guild is using the old permissions configuration behavior
*
* See https://discord.com/developers/docs/change-log#upcoming-application-command-permission-changes
*/
ApplicationCommandPermissionsV2 = 'APPLICATION_COMMAND_PERMISSIONS_V2',
/**
* Guild has set up auto moderation rules
*/
AutoModeration = 'AUTO_MODERATION',
/**
* Guild has access to set a guild banner image
*/
@@ -390,6 +400,10 @@ export enum GuildFeature {
* Guild can enable welcome screen, Membership Screening and discovery, and receives community updates
*/
Community = 'COMMUNITY',
/*
* Guild has been set as a support server on the App Directory
*/
DeveloperSupportServer = 'DEVELOPER_SUPPORT_SERVER',
/**
* Guild is able to be discovered in the directory
*/
@@ -405,7 +419,7 @@ export enum GuildFeature {
/**
* Guild is a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
@@ -421,7 +435,7 @@ export enum GuildFeature {
/**
* Guild is in a Student Hub
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
@@ -588,7 +602,7 @@ export interface APIGuildMember {
/**
* When the user started boosting the guild
*
* See https://support.discord.com/hc/en-us/articles/360028038352-Server-Boosting-
* See https://support.discord.com/hc/articles/360028038352
*/
premium_since?: string | null;
/**

View File

@@ -1,6 +1,7 @@
export * from '../common';
export * from './application';
export * from './auditLog';
export * from './autoModeration';
export * from './channel';
export * from './emoji';
export * from './gateway';

View File

@@ -61,6 +61,10 @@ export enum OAuth2Scopes {
* (otherwise restricted to channels/guilds your app creates)
*/
MessagesRead = 'messages.read',
/**
* Allows your app to update a user's connection and metadata for the app
*/
RoleConnectionsWrite = 'role_connections.write',
/**
* For local rpc server access, this allows you to control a user's local Discord client - requires Discord approval
*/

View File

@@ -73,7 +73,7 @@ export enum StickerType {
*/
Standard = 1,
/**
* A sticker uploaded to a Boosted guild for the guild's members
* A sticker uploaded to a guild for the guild's members
*/
Guild,
}

View File

@@ -134,7 +134,7 @@ export enum UserFlags {
*/
VerifiedDeveloper = 1 << 17,
/**
* Discord Certified Moderator
* Moderator Programs Alumni
*/
CertifiedModerator = 1 << 18,
/**
@@ -148,11 +148,19 @@ export enum UserFlags {
*/
Spammer = 1 << 20,
/**
* User's account has been quarantined based on recent activity
* User is an [Active Developer](https://support-dev.discord.com/hc/articles/10113997751447)
*/
ActiveDeveloper = 1 << 22,
/**
* User's account has been [quarantined](https://support.discord.com/hc/articles/6461420677527) 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.
*
* @privateRemarks
*
* This value would be 1 << 44, but bit shifting above 1 << 30 requires bigints
*/
Quarantined = Math.pow(2, 44),
Quarantined = 17592186044416,
}
/**
@@ -162,6 +170,7 @@ export enum UserPremiumType {
None,
NitroClassic,
Nitro,
NitroBasic,
}
/**
@@ -204,6 +213,10 @@ export interface APIConnection {
* Whether activities related to this connection will be shown in presence updates
*/
show_activity: boolean;
/**
* Whether this connection supports console voice transfer
*/
two_way_link: boolean;
/**
* Visibility of this connection
*
@@ -242,3 +255,21 @@ export enum ConnectionVisibility {
*/
Everyone,
}
/**
* https://discord.com/developers/docs/resources/user#application-role-connection-object-application-role-connection-structure
*/
export interface APIApplicationRoleConnection {
/**
* The vanity name of the platform a bot has connected (max 50 characters)
*/
platform_name: string | null;
/**
* The username on the platform a bot has connected (max 100 characters)
*/
platform_username: string | null;
/**
* Object mapping application role connection metadata keys to their `string`-ified value (max 100 characters) for the user on the platform a bot has connected
*/
metadata: Record<string, string | number>;
}

View File

@@ -86,7 +86,7 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
/**
* Sorting position of the channel
*/
position?: number;
position: number;
/**
* ID of the parent category for a channel (each parent category can contain up to 50 channels)
*/

View File

@@ -43,14 +43,8 @@ import type {
APIApplicationCommandUserOption,
} from './_chatInput/user';
import type { APIBaseApplicationCommandInteractionData } from './internals';
import type { Snowflake } from '../../../../globals';
import type { APIAttachment, APIRole, APIUser } from '../../index';
import type {
APIApplicationCommandInteractionWrapper,
APIInteractionDataResolvedChannel,
APIInteractionDataResolvedGuildMember,
ApplicationCommandType,
} from '../applicationCommands';
import type { APIInteractionDataResolved } from '../../index';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
export * from './_chatInput/attachment';
@@ -114,18 +108,7 @@ export type APIApplicationCommandInteractionDataBasicOption =
export interface APIChatInputApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
options?: APIApplicationCommandInteractionDataOption[];
resolved?: APIChatInputApplicationCommandInteractionDataResolved;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIChatInputApplicationCommandInteractionDataResolved {
users?: Record<Snowflake, APIUser>;
roles?: Record<Snowflake, APIRole>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
channels?: Record<Snowflake, APIInteractionDataResolvedChannel>;
attachments?: Record<Snowflake, APIAttachment>;
resolved?: APIInteractionDataResolved;
}
/**

View File

@@ -1,13 +1,8 @@
import type { APIBaseApplicationCommandInteractionData } from './internals';
import type { Snowflake } from '../../../../globals';
import type { APIMessage } from '../../channel';
import type { APIUser } from '../../user';
import type {
APIApplicationCommandInteractionWrapper,
APIInteractionDataResolvedGuildMember,
ApplicationCommandType,
} from '../applicationCommands';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIUserInteractionDataResolved } from '../base';
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
@@ -15,15 +10,7 @@ import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../bas
export interface APIUserApplicationCommandInteractionData
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.User> {
target_id: Snowflake;
resolved: APIUserApplicationCommandInteractionDataResolved;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIUserApplicationCommandInteractionDataResolved {
users: Record<Snowflake, APIUser>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
resolved: APIUserInteractionDataResolved;
}
/**

View File

@@ -15,8 +15,6 @@ import type { APIBaseInteraction } from './base';
import type { InteractionType } from './responses';
import type { Permissions, Snowflake } from '../../../globals';
import type { LocalizationMap } from '../../../v9';
import type { APIPartialChannel, APIThreadMetadata } from '../channel';
import type { APIGuildMember } from '../guild';
export * from './_applicationCommands/chatInput';
export * from './_applicationCommands/contextMenu';
@@ -85,6 +83,10 @@ export interface APIApplicationCommand {
* @deprecated Use `dm_permission` and/or `default_member_permissions` instead
*/
default_permission?: boolean;
/**
* Indicates whether the command is age-restricted, defaults to `false`
*/
nsfw?: boolean;
/**
* Autoincrementing version identifier updated during substantial record changes
*/
@@ -107,28 +109,14 @@ export type APIApplicationCommandInteractionData =
| APIChatInputApplicationCommandInteractionData
| APIContextMenuInteractionData;
/**
* https://discord.com/developers/docs/resources/channel#channel-object
*/
export interface APIInteractionDataResolvedChannel extends Required<APIPartialChannel> {
thread_metadata?: APIThreadMetadata | null;
permissions: Permissions;
parent_id?: string | null;
}
/**
* https://discord.com/developers/docs/resources/guild#guild-member-object
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'user' | 'deaf' | 'mute'> {
permissions: Permissions;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object
*/
export type APIApplicationCommandInteractionWrapper<Data extends APIApplicationCommandInteractionData> =
APIBaseInteraction<InteractionType.ApplicationCommand, Data> &
Required<Pick<APIBaseInteraction<InteractionType.ApplicationCommand, Data>, 'channel_id' | 'data'>>;
Required<
Pick<APIBaseInteraction<InteractionType.ApplicationCommand, Data>, 'channel_id' | 'data' | 'app_permissions'>
>;
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object

View File

@@ -1,7 +1,7 @@
import type { InteractionType } from './responses';
import type { Permissions, Snowflake } from '../../../globals';
import type { LocaleString } from '../../../v9';
import type { APIMessage } from '../channel';
import type { APIRole, LocaleString } from '../../../v9';
import type { APIAttachment, APIMessage, APIPartialChannel, APIThreadMetadata } from '../channel';
import type { APIGuildMember } from '../guild';
import type { APIUser } from '../user';
@@ -129,3 +129,46 @@ export type APIGuildInteractionWrapper<Original extends APIBaseInteraction<Inter
'user'
> &
Required<Pick<Original, 'member' | 'guild_id'>>;
/**
* https://discord.com/developers/docs/resources/channel#channel-object
*/
export interface APIInteractionDataResolvedChannel extends Required<APIPartialChannel> {
thread_metadata?: APIThreadMetadata | null;
permissions: Permissions;
parent_id?: string | null;
}
/**
* https://discord.com/developers/docs/resources/guild#guild-member-object
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'user' | 'deaf' | 'mute'> {
permissions: Permissions;
}
/**
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure
*/
export interface APIInteractionDataResolved {
users?: Record<Snowflake, APIUser>;
roles?: Record<Snowflake, APIRole>;
members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>;
channels?: Record<Snowflake, APIInteractionDataResolvedChannel>;
attachments?: Record<Snowflake, APIAttachment>;
}
/**
* @deprecated Renamed to `APIInteractionDataResolved`
*/
export type APIChatInputApplicationCommandInteractionDataResolved = APIInteractionDataResolved;
/**
* `users` and optional `members` from APIInteractionDataResolved, for user commands and user selects
*/
export type APIUserInteractionDataResolved = Required<Pick<APIInteractionDataResolved, 'users'>> &
Pick<APIInteractionDataResolved, 'members'>;
/**
* @deprecated Renamed to `APIUserInteractionDataResolved`
*/
export type APIUserApplicationCommandInteractionDataResolved = APIUserInteractionDataResolved;

View File

@@ -1,4 +1,10 @@
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from './base';
import type {
APIDMInteractionWrapper,
APIGuildInteractionWrapper,
APIInteractionDataResolved,
APIUserInteractionDataResolved,
} from './base';
import type { Snowflake } from '../../../globals';
import type { ComponentType } from '../channel';
import type { APIBaseInteraction, InteractionType } from '../interactions';
@@ -9,7 +15,7 @@ export type APIMessageComponentInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageComponentInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -20,7 +26,7 @@ export type APIMessageComponentButtonInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageButtonInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -31,7 +37,7 @@ export type APIMessageComponentSelectMenuInteraction = APIBaseInteraction<
Required<
Pick<
APIBaseInteraction<InteractionType.MessageComponent, APIMessageSelectMenuInteractionData>,
'channel_id' | 'data' | 'message'
'channel_id' | 'data' | 'app_permissions' | 'message'
>
>;
@@ -50,11 +56,42 @@ export interface APIMessageComponentBaseInteractionData<CType extends ComponentT
export type APIMessageButtonInteractionData = APIMessageComponentBaseInteractionData<ComponentType.Button>;
export interface APIMessageSelectMenuInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.SelectMenu> {
export interface APIMessageStringSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.StringSelect> {
values: string[];
}
export interface APIMessageUserSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.UserSelect> {
values: Snowflake[];
resolved: APIUserInteractionDataResolved;
}
export interface APIMessageRoleSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.RoleSelect> {
values: Snowflake[];
resolved: Required<Pick<APIInteractionDataResolved, 'roles'>>;
}
export interface APIMessageMentionableSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.MentionableSelect> {
values: Snowflake[];
resolved: Pick<APIInteractionDataResolved, 'users' | 'members' | 'roles'>;
}
export interface APIMessageChannelSelectInteractionData
extends APIMessageComponentBaseInteractionData<ComponentType.ChannelSelect> {
values: Snowflake[];
resolved: Required<Pick<APIInteractionDataResolved, 'channels'>>;
}
export type APIMessageSelectMenuInteractionData =
| APIMessageStringSelectInteractionData
| APIMessageUserSelectInteractionData
| APIMessageRoleSelectInteractionData
| APIMessageMentionableSelectInteractionData
| APIMessageChannelSelectInteractionData;
export type APIMessageComponentDMInteraction = APIDMInteractionWrapper<APIMessageComponentInteraction>;
export type APIMessageComponentGuildInteraction = APIGuildInteractionWrapper<APIMessageComponentInteraction>;

View File

@@ -6,6 +6,7 @@ import type { OAuth2Scopes } from './oauth2';
import type { APITeam } from './teams';
import type { APIUser } from './user';
import type { Permissions, Snowflake } from '../../globals';
import type { LocalizationMap } from '../common';
/**
* https://discord.com/developers/docs/resources/application#application-object
@@ -105,6 +106,11 @@ export interface APIApplication {
* The application's default custom authorization link, if enabled
*/
custom_install_url?: string;
/**
* The application's role connection verification entry point,
* which when configured will render the app as a verification method in the guild role verification configuration
*/
role_connections_verification_url?: string;
}
export interface APIApplicationInstallParams {
@@ -116,18 +122,131 @@ export interface APIApplicationInstallParams {
* https://discord.com/developers/docs/resources/application#application-object-application-flags
*/
export enum ApplicationFlags {
/**
* @unstable
*/
EmbeddedReleased = 1 << 1,
/**
* @unstable
*/
ManagedEmoji = 1 << 2,
/**
* @unstable
*/
GroupDMCreate = 1 << 4,
/**
* @unstable
*/
RPCHasConnected = 1 << 11,
/**
* Intent required for bots in 100 or more servers to receive `presence_update` events
*/
GatewayPresence = 1 << 12,
/**
* Intent required for bots in under 100 servers to receive `presence_update` events, found in Bot Settings
*/
GatewayPresenceLimited = 1 << 13,
/**
* Intent required for bots in 100 or more servers to receive member-related events like `guild_member_add`.
* See list of member-related events [under `GUILD_MEMBERS`](https://discord.com/developers/docs/topics/gateway#list-of-intents)
*/
GatewayGuildMembers = 1 << 14,
/**
* Intent required for bots in under 100 servers to receive member-related events like `guild_member_add`, found in Bot Settings.
* See list of member-related events [under `GUILD_MEMBERS`](https://discord.com/developers/docs/topics/gateway#list-of-intents)
*/
GatewayGuildMembersLimited = 1 << 15,
/**
* Indicates unusual growth of an app that prevents verification
*/
VerificationPendingGuildLimit = 1 << 16,
/**
* Indicates if an app is embedded within the Discord client (currently unavailable publicly)
*/
Embedded = 1 << 17,
/**
* Intent required for bots in 100 or more servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055)
*/
GatewayMessageContent = 1 << 18,
/**
* Intent required for bots in under 100 servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055),
* found in Bot Settings
*/
GatewayMessageContentLimited = 1 << 19,
/**
* @unstable
*/
EmbeddedFirstParty = 1 << 20,
/**
* Indicates if an app has registered global [application commands](https://discord.com/developers/docs/interactions/application-commands)
*/
ApplicationCommandBadge = 1 << 23,
}
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-structure
*/
export interface APIApplicationRoleConnectionMetadata {
/**
* Type of metadata value
*/
type: ApplicationRoleConnectionMetadataType;
/**
* Dictionary key for the metadata field (must be `a-z`, `0-9`, or `_` characters; max 50 characters)
*/
key: string;
/**
* Name of the metadata field (max 100 characters)
*/
name: string;
/**
* Translations of the name
*/
name_localizations?: LocalizationMap;
/**
* Description of the metadata field (max 200 characters)
*/
description: string;
/**
* Translations of the description
*/
description_localizations?: LocalizationMap;
}
/**
* https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-type
*/
export enum ApplicationRoleConnectionMetadataType {
/**
* The metadata value (`integer`) is less than or equal to the guild's configured value (`integer`)
*/
IntegerLessThanOrEqual = 1,
/**
* The metadata value (`integer`) is greater than or equal to the guild's configured value (`integer`)
*/
IntegerGreaterThanOrEqual,
/**
* The metadata value (`integer`) is equal to the guild's configured value (`integer`)
*/
IntegerEqual,
/**
* The metadata value (`integer`) is not equal to the guild's configured value (`integer`)
*/
IntegerNotEqual,
/**
* The metadata value (`ISO8601 string`) is less than or equal to the guild's configured value (`integer`; days before current date)
*/
DatetimeLessThanOrEqual,
/**
* The metadata value (`ISO8601 string`) is greater than or equal to the guild's configured value (`integer`; days before current date)
*/
DatetimeGreaterThanOrEqual,
/**
* The metadata value (`integer`) is equal to the guild's configured value (`integer`; `1`)
*/
BooleanEqual,
/**
* The metadata value (`integer`) is not equal to the guild's configured value (`integer`; `1`)
*/
BooleanNotEqual,
}

View File

@@ -2,6 +2,13 @@
* Types extracted from https://discord.com/developers/docs/resources/audit-log
*/
import type {
APIAutoModerationAction,
APIAutoModerationRule,
APIAutoModerationRuleTriggerMetadata,
AutoModerationRuleEventType,
AutoModerationRuleTriggerType,
} from './autoModeration';
import type { APIChannel, APIOverwrite } from './channel';
import type {
APIGuildIntegration,
@@ -52,6 +59,12 @@ export interface APIAuditLog {
* See https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object
*/
audit_log_entries: APIAuditLogEntry[];
/**
* List of auto moderation rules referenced in the audit log
*
* See https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object
*/
auto_moderation_rules: APIAutoModerationRule[];
/**
* Partial integration objects
*
@@ -180,12 +193,37 @@ export enum AuditLogEvent {
ThreadDelete,
ApplicationCommandPermissionUpdate = 121,
AutoModerationRuleCreate = 140,
AutoModerationRuleUpdate,
AutoModerationRuleDelete,
AutoModerationBlockMessage,
AutoModerationFlagToChannel,
AutoModerationUserCommunicationDisabled,
}
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-optional-audit-entry-info
*/
export interface APIAuditLogOptions {
/**
* Name of the Auto Moderation rule that was triggered
*
* Present from:
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
auto_moderation_rule_name?: string;
/**
* Trigger type of the Auto Moderation rule that was triggered
*
* Present from:
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
auto_moderation_rule_trigger_type?: AuditLogRuleTriggerType;
/**
* Number of days after which inactive members were kicked
*
@@ -212,6 +250,9 @@ export interface APIAuditLogOptions {
* - STAGE_INSTANCE_CREATE
* - STAGE_INSTANCE_UPDATE
* - STAGE_INSTANCE_DELETE
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
*/
channel_id?: Snowflake;
@@ -275,6 +316,8 @@ export enum AuditLogOptionsType {
Member = '1',
}
export type AuditLogRuleTriggerType = `${AutoModerationRuleTriggerType}`;
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-change-object-audit-log-change-structure
*/
@@ -347,7 +390,14 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyEntityType
| APIAuditLogChangeKeyStatus
| APIAuditLogChangeKeyLocation
| APIAuditLogChangeKeyCommunicationDisabledUntil;
| APIAuditLogChangeKeyCommunicationDisabledUntil
| APIAuditLogChangeKeyTriggerType
| APIAuditLogChangeKeyEventType
| APIAuditLogChangeKeyTriggerMetadata
| APIAuditLogChangeKeyActions
| APIAuditLogChangeKeyEnabled
| APIAuditLogChangeKeyExemptRoles
| APIAuditLogChangeKeyExemptChannels;
/**
* Returned when an entity's name is changed
@@ -710,6 +760,44 @@ export type APIAuditLogChangeKeyLocation = AuditLogChangeData<'location', string
*/
export type APIAuditLogChangeKeyCommunicationDisabledUntil = AuditLogChangeData<'communication_disabled_until', string>;
/**
* Returned when an auto moderation rule's trigger type is changed (only in rule creation or deletion)
*/
export type APIAuditLogChangeKeyTriggerType = AuditLogChangeData<'trigger_type', AutoModerationRuleTriggerType>;
/**
* Returned when an auto moderation rule's event type is changed
*/
export type APIAuditLogChangeKeyEventType = AuditLogChangeData<'event_type', AutoModerationRuleEventType>;
/**
* Returned when an auto moderation rule's trigger metadata is changed
*/
export type APIAuditLogChangeKeyTriggerMetadata = AuditLogChangeData<
'trigger_metadata',
APIAutoModerationRuleTriggerMetadata
>;
/**
* Returned when an auto moderation rule's actions is changed
*/
export type APIAuditLogChangeKeyActions = AuditLogChangeData<'actions', APIAutoModerationAction[]>;
/**
* Returned when an auto moderation rule's enabled status is changed
*/
export type APIAuditLogChangeKeyEnabled = AuditLogChangeData<'enabled', boolean>;
/**
* Returned when an auto moderation rule's exempt roles is changed
*/
export type APIAuditLogChangeKeyExemptRoles = AuditLogChangeData<'exempt_roles', Snowflake[]>;
/**
* Returned when an auto moderation rule's exempt channels is changed
*/
export type APIAuditLogChangeKeyExemptChannels = AuditLogChangeData<'exempt_channels', Snowflake[]>;
interface AuditLogChangeData<K extends string, D> {
key: K;
/**

View File

@@ -0,0 +1,203 @@
/**
* Types extracted from https://discord.com/developers/docs/resources/auto-moderation
*/
import type { Snowflake } from '../../globals';
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-auto-moderation-rule-structure
*/
export interface APIAutoModerationRule {
/**
* The id of this rule
*/
id: Snowflake;
/**
* The guild which this rule belongs to
*/
guild_id: Snowflake;
/**
* The rule name
*/
name: string;
/**
* The user id who created this rule
*/
creator_id: Snowflake;
/**
* The rule event type
*/
event_type: AutoModerationRuleEventType;
/**
* The rule trigger type
*/
trigger_type: AutoModerationRuleTriggerType;
/**
* The rule trigger metadata
*/
trigger_metadata: APIAutoModerationRuleTriggerMetadata;
/**
* The actions which will execute when this rule is triggered
*/
actions: APIAutoModerationAction[];
/**
* Whether this rule is enabled
*/
enabled: boolean;
/**
* The role ids that shouldn't be affected by this rule (Maximum of 20)
*/
exempt_roles: Snowflake[];
/**
* The channel ids that shouldn't be affected by this rule (Maximum of 50)
*/
exempt_channels: Snowflake[];
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-types
*/
export enum AutoModerationRuleTriggerType {
/**
* Check if content contains words from a user defined list of keywords (Maximum of 3 per guild)
*/
Keyword = 1,
/**
* Check if content represents generic spam (Maximum of 1 per guild)
*/
Spam = 3,
/**
* Check if content contains words from internal pre-defined wordsets (Maximum of 1 per guild)
*/
KeywordPreset,
/**
* Check if content contains more mentions than allowed (Maximum of 1 per guild)
*/
MentionSpam,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-metadata
*/
export interface APIAutoModerationRuleTriggerMetadata {
/**
* Substrings which will be searched for in content (Maximum of 1000)
*
* A keyword can be a phrase which contains multiple words. Wildcard symbols can be used to customize how each string will be matched. Each keyword must be 30 characters or less
* See [keyword matching strategies](https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-matching-strategies)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.Keyword}
*/
keyword_filter?: string[];
/**
* The internally pre-defined wordsets which will be searched for in content
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.KeywordPreset}
*/
presets?: AutoModerationRuleKeywordPresetType[];
/**
* Substrings which will be exempt from triggering the preset trigger type (Maximum of 1000)
*
* A allowed-word can be a phrase which contains multiple words. Wildcard symbols can be used to customize how each string will be matched. Each keyword must be 30 characters or less
* See [keyword matching strategies](https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-matching-strategies)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.KeywordPreset}
*/
allow_list?: string[];
/**
* Regular expression patterns which will be matched against content (Maximum of 10)
*
* Only Rust flavored regex is currently supported (Maximum of 75 characters)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.Keyword}
*/
regex_patterns?: string[];
/**
* Total number of mentions (role & user) allowed per message (Maximum of 50)
*
* Associated trigger type: {@link AutoModerationRuleTriggerType.MentionSpam}
*/
mention_total_limit?: number;
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-preset-types
*/
export enum AutoModerationRuleKeywordPresetType {
/**
* Words that may be considered forms of swearing or cursing
*/
Profanity = 1,
/**
* Words that refer to sexually explicit behavior or activity
*/
SexualContent,
/**
* Personal insults or words that may be considered hate speech
*/
Slurs,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-event-types
*/
export enum AutoModerationRuleEventType {
/**
* When a member sends or edits a message in the guild
*/
MessageSend = 1,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-auto-moderation-action-structure
*/
export interface APIAutoModerationAction {
/**
* The action type
*/
type: AutoModerationActionType;
/**
* Additional metadata needed during execution for this specific action type
*
* Will only be omitted if the action type is {@link AutoModerationActionType.BlockMessage}
*/
metadata?: APIAutoModerationActionMetadata;
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-types
*/
export enum AutoModerationActionType {
/**
* Blocks the content of a message according to the rule
*/
BlockMessage = 1,
/**
* Logs user content to a specified channel
*/
SendAlertMessage,
/**
* Timeout user for specified duration, this action type can be set if the bot has `MODERATE_MEMBERS` permission
*/
Timeout,
}
/**
* https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-metadata
*/
export interface APIAutoModerationActionMetadata {
/**
* Channel to which user content should be logged
*
* Associated action type: {@link AutoModerationActionType.SendAlertMessage}
*/
channel_id?: Snowflake;
/**
* Timeout duration in seconds (Maximum of 4 weeks - 2419200 seconds)
*
* Only available if using {@link AutoModerationRuleTriggerType.Keyword}
*
* Associated action type: {@link AutoModerationActionType.Timeout}
*/
duration_seconds?: number;
}

View File

@@ -25,9 +25,9 @@ export interface APIPartialChannel {
*/
type: ChannelType;
/**
* The name of the channel (2-100 characters)
* The name of the channel (1-100 characters)
*/
name?: string;
name?: string | null;
}
/**
@@ -57,6 +57,11 @@ 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;
/**
* When the last pinned message was pinned.
* This may be `null` in events such as `GUILD_CREATE` when a message is not pinned
*/
last_pin_timestamp?: string | 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
@@ -69,7 +74,11 @@ export interface APITextBasedChannel<T extends ChannelType> extends APIChannelBa
rate_limit_per_user?: number;
}
export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T> {
export interface APIGuildChannel<T extends ChannelType> extends Omit<APIChannelBase<T>, 'name'> {
/**
* The name of the channel (1-100 characters)
*/
name: string;
/**
* The id of the guild (may be missing for some channel objects received over gateway guild dispatches)
*/
@@ -83,7 +92,7 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
/**
* Sorting position of the channel
*/
position?: number;
position: number;
/**
* ID of the parent category for a channel (each parent category can contain up to 50 channels)
*
@@ -101,21 +110,21 @@ export interface APIGuildChannel<T extends ChannelType> extends APIChannelBase<T
export type GuildTextChannelType = Exclude<TextChannelType, ChannelType.DM | ChannelType.GroupDM>;
export interface APIGuildTextChannel<T extends GuildTextChannelType>
extends APITextBasedChannel<T>,
extends Omit<APITextBasedChannel<T>, 'name'>,
APIGuildChannel<T> {
/**
* Default duration for newly created threads, in minutes, to automatically archive the thread after recent activity
*/
default_auto_archive_duration?: ThreadAutoArchiveDuration;
/**
* The initial `rate_limit_per_user` to set on newly created threads.
* This field is copied to the thread at creation time and does not live update
*/
default_thread_rate_limit_per_user?: number;
/**
* The channel topic (0-1024 characters)
*/
topic?: string | null;
/**
* When the last pinned message was pinned.
* This may be `null` in events such as `GUILD_CREATE` when a message is not pinned
*/
last_pin_timestamp?: string | null;
}
export type APITextChannel = APIGuildTextChannel<ChannelType.GuildText>;
@@ -141,7 +150,7 @@ export interface APIVoiceChannelBase<T extends ChannelType> extends APIGuildChan
export interface APIGuildVoiceChannel
extends APIVoiceChannelBase<ChannelType.GuildVoice>,
APITextBasedChannel<ChannelType.GuildVoice> {
Omit<APITextBasedChannel<ChannelType.GuildVoice>, 'name' | 'last_pin_timestamp'> {
/**
* The camera video quality mode of the voice channel, `1` when not present
*
@@ -161,9 +170,18 @@ export interface APIDMChannelBase<T extends ChannelType> extends Omit<APITextBas
recipients?: APIUser[];
}
export type APIDMChannel = APIDMChannelBase<ChannelType.DM>;
export interface APIDMChannel extends Omit<APIDMChannelBase<ChannelType.DM>, 'name'> {
/**
* The name of the channel (always null for DM channels)
*/
name: null;
}
export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.GroupDM>, 'name'> {
/**
* The name of the channel (1-100 characters)
*/
name: string | null;
/**
* Application id of the group DM creator if it is bot-created
*/
@@ -172,22 +190,18 @@ export interface APIGroupDMChannel extends Omit<APIDMChannelBase<ChannelType.Gro
* Icon hash
*/
icon?: string | null;
/**
* The name of the channel (2-100 characters)
*/
name?: string | null;
/**
* ID of the DM creator
*/
owner_id?: Snowflake;
/**
* The id of the last message sent in this channel (may not point to an existing or valid message)
*/
last_message_id?: Snowflake | null;
}
export interface APIThreadChannel
extends APIGuildChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread> {
extends Omit<
APITextBasedChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread>,
'name'
>,
APIGuildChannel<ChannelType.PublicThread | ChannelType.PrivateThread | ChannelType.AnnouncementThread> {
/**
* The client users member for the thread, only included in select endpoints
*/
@@ -206,33 +220,112 @@ export interface APIThreadChannel
* The approximate member count of the thread, does not count above 50 even if there are more members
*/
member_count?: number;
/**
* 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;
/**
* ID of the thread creator
*/
owner_id?: Snowflake;
/**
* 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;
/**
* The IDs of the set of tags that have been applied to a thread in a forum channel
*/
applied_tags: Snowflake[];
}
export type APIGuildForumChannel = APIGuildTextChannel<ChannelType.GuildForum>;
/**
* https://discord.com/developers/docs/resources/channel#forum-tag-object-forum-tag-structure
*/
export interface APIGuildForumTag {
/**
* The id of the tag
*/
id: Snowflake;
/**
* The name of the tag (0-20 characters)
*/
name: string;
/**
* Whether this tag can only be added to or removed from threads by a member with the `MANAGE_THREADS` permission
*/
moderated: boolean;
/**
* The id of a guild's custom emoji
*/
emoji_id: Snowflake | null;
/**
* The unicode character of the emoji
*/
emoji_name: string | null;
}
/**
* https://discord.com/developers/docs/resources/channel#default-reaction-object-default-reaction-structure
*/
export interface APIGuildForumDefaultReactionEmoji {
/**
* The id of a guild's custom emoji
*/
emoji_id: Snowflake | null;
/**
* The unicode character of the emoji
*/
emoji_name: string | null;
}
/**
* https://discord.com/developers/docs/resources/channel/#channel-object-sort-order-types
*/
export enum SortOrderType {
/**
* Sort forum posts by activity
*/
LatestActivity,
/**
* Sort forum posts by creation time (from most recent to oldest)
*/
CreationDate,
}
/**
* https://discord.com/developers/docs/resources/channel/#channel-object-forum-layout-types
*/
export enum ForumLayoutType {
/**
* No default has been set for forum channel
*/
NotSet,
/**
* Display posts as a list
*/
ListView,
/**
* Display posts as a collection of tiles
*/
GalleryView,
}
export interface APIGuildForumChannel extends APIGuildTextChannel<ChannelType.GuildForum> {
/**
* The set of tags that can be used in a forum channel
*/
available_tags: APIGuildForumTag[];
/**
* The emoji to show in the add reaction button on a thread in a forum channel
*/
default_reaction_emoji: APIGuildForumDefaultReactionEmoji | null;
/**
* The default sort order type used to order posts in a forum channel
*/
default_sort_order: SortOrderType | null;
/**
* The default layout type used to display posts in a forum channel. Defaults to `0`, which indicates a layout view has not been set by a channel admin
*/
default_forum_layout: ForumLayoutType;
}
/**
* https://discord.com/developers/docs/resources/channel#channel-object-channel-structure
@@ -246,7 +339,6 @@ export type APIChannel =
| APIGuildStageVoiceChannel
| APIGuildCategoryChannel
| APIThreadChannel
| APINewsChannel
| APIGuildForumChannel;
/**
@@ -272,13 +364,13 @@ export enum ChannelType {
/**
* An organizational category that contains up to 50 channels
*
* See https://support.discord.com/hc/en-us/articles/115001580171-Channel-Categories-101
* See https://support.discord.com/hc/articles/115001580171
*/
GuildCategory,
/**
* A channel that users can follow and crosspost into their own guild
*
* See https://support.discord.com/hc/en-us/articles/360032008192
* See https://support.discord.com/hc/articles/360032008192
*/
GuildAnnouncement,
/**
@@ -286,7 +378,7 @@ export enum ChannelType {
*/
AnnouncementThread = 10,
/**
* A temporary sub-channel within a Guild Text channel
* A temporary sub-channel within a Guild Text or Guild Forum channel
*/
PublicThread,
/**
@@ -296,13 +388,13 @@ export enum ChannelType {
/**
* A voice channel for hosting events with an audience
*
* See https://support.discord.com/hc/en-us/articles/1500005513722
* See https://support.discord.com/hc/articles/1500005513722
*/
GuildStageVoice,
/**
* The channel in a Student Hub containing the listed servers
*
* See https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ
* See https://support.discord.com/hc/articles/4406046651927
*/
GuildDirectory,
/**
@@ -316,7 +408,7 @@ export enum ChannelType {
*
* @deprecated This is the old name for {@apilink ChannelType#GuildAnnouncement}
*
* See https://support.discord.com/hc/en-us/articles/360032008192
* See https://support.discord.com/hc/articles/360032008192
*/
GuildNews = 5,
/**
@@ -378,7 +470,7 @@ export interface APIMessage {
*
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
content: string;
/**
@@ -434,7 +526,7 @@ export interface APIMessage {
*
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
attachments: APIAttachment[];
/**
@@ -446,7 +538,7 @@ export interface APIMessage {
*
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
embeds: APIEmbed[];
/**
@@ -535,7 +627,7 @@ export interface APIMessage {
*
* 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
* See https://support-dev.discord.com/hc/articles/4404772028055
*/
components?: APIActionRowComponent<APIMessageActionRowComponent>[];
/**
@@ -586,6 +678,7 @@ export enum MessageType {
ThreadStarterMessage,
GuildInviteReminder,
ContextMenuCommand,
AutoModerationAction,
}
/**
@@ -942,6 +1035,12 @@ export enum EmbedType {
* Link embed
*/
Link = 'link',
/**
* Auto moderation alert embed
*
* @unstable This embed type is currently not documented by Discord, but it is returned in the auto moderation system messages.
*/
AutoModerationMessage = 'auto_moderation_message',
}
/**
@@ -1229,13 +1328,38 @@ export enum ComponentType {
*/
Button,
/**
* Select Menu component
* Select menu for picking from defined text options
*/
SelectMenu,
StringSelect,
/**
* Text Input component
*/
TextInput,
/**
* Select menu for users
*/
UserSelect,
/**
* Select menu for roles
*/
RoleSelect,
/**
* Select menu for users and roles
*/
MentionableSelect,
/**
* Select menu for channels
*/
ChannelSelect,
// EVERYTHING BELOW THIS LINE SHOULD BE OLD NAMES FOR RENAMED ENUM MEMBERS //
/**
* Select menu for picking from defined text options
*
* @deprecated This is the old name for {@apilink ComponentType#StringSelect}
*/
SelectMenu = 3,
}
/**
@@ -1327,15 +1451,18 @@ export enum TextInputStyle {
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APISelectMenuComponent extends APIBaseComponent<ComponentType.SelectMenu> {
export interface APIBaseSelectMenuComponent<
T extends
| ComponentType.StringSelect
| ComponentType.UserSelect
| ComponentType.RoleSelect
| ComponentType.MentionableSelect
| ComponentType.ChannelSelect,
> extends APIBaseComponent<T> {
/**
* A developer-defined identifier for the select menu, max 100 characters
*/
custom_id: string;
/**
* The choices in the select, max 25
*/
options: APISelectMenuOption[];
/**
* Custom placeholder text if nothing is selected, max 150 characters
*/
@@ -1360,6 +1487,51 @@ export interface APISelectMenuComponent extends APIBaseComponent<ComponentType.S
disabled?: boolean;
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APIStringSelectComponent extends APIBaseSelectMenuComponent<ComponentType.StringSelect> {
/**
* Specified choices in a select menu; max 25
*/
options: APISelectMenuOption[];
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIUserSelectComponent = APIBaseSelectMenuComponent<ComponentType.UserSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIRoleSelectComponent = APIBaseSelectMenuComponent<ComponentType.RoleSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APIMentionableSelectComponent = APIBaseSelectMenuComponent<ComponentType.MentionableSelect>;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export interface APIChannelSelectComponent extends APIBaseSelectMenuComponent<ComponentType.ChannelSelect> {
/**
* List of channel types to include in the ChannelSelect component
*/
channel_types?: ChannelType[];
}
/**
* https://discord.com/developers/docs/interactions/message-components#select-menus
*/
export type APISelectMenuComponent =
| APIStringSelectComponent
| APIUserSelectComponent
| APIRoleSelectComponent
| APIMentionableSelectComponent
| APIChannelSelectComponent;
/**
* https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-option-structure
*/
@@ -1428,7 +1600,15 @@ export interface APITextInputComponent extends APIBaseComponent<ComponentType.Te
* https://discord.com/developers/docs/resources/channel#channel-object-channel-flags
*/
export enum ChannelFlags {
/**
* This thread is pinned to the top of its parent forum channel
*/
Pinned = 1 << 1,
/**
* Whether a tag is required to be specified when creating a thread in a forum channel.
* Tags are specified in the `applied_tags` field
*/
RequireTag = 1 << 4,
}
/**

View File

@@ -1,5 +1,7 @@
/**
* Types extracted from https://discord.com/developers/docs/topics/gateway
* Types extracted from
* - https://discord.com/developers/docs/topics/gateway
* - https://discord.com/developers/docs/topics/gateway-events
*/
import type { APIChannel, APIThreadMember } from './channel';
@@ -58,7 +60,7 @@ export interface APIGatewaySessionStartLimit {
}
/**
* https://discord.com/developers/docs/topics/gateway#presence-update-presence-update-event-fields
* https://discord.com/developers/docs/topics/gateway-events#presence-update-presence-update-event-fields
*/
export interface GatewayPresenceUpdate {
/**
@@ -81,13 +83,13 @@ export interface GatewayPresenceUpdate {
/**
* User's current activities
*
* See https://discord.com/developers/docs/topics/gateway#activity-object
* See https://discord.com/developers/docs/topics/gateway-events#activity-object
*/
activities?: GatewayActivity[];
/**
* User's platform-dependent status
*
* See https://discord.com/developers/docs/topics/gateway#client-status-object
* See https://discord.com/developers/docs/topics/gateway-events#client-status-object
*/
client_status?: GatewayPresenceClientStatus;
}
@@ -104,7 +106,7 @@ export enum PresenceUpdateStatus {
}
/**
* https://discord.com/developers/docs/topics/gateway#client-status-object
* https://discord.com/developers/docs/topics/gateway-events#client-status-object
*/
export interface GatewayPresenceClientStatus {
/**
@@ -122,7 +124,7 @@ export interface GatewayPresenceClientStatus {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-structure
*/
export interface GatewayActivity {
/**
@@ -136,7 +138,7 @@ export interface GatewayActivity {
/**
* Activity type
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-types
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types
*/
type: ActivityType;
/**
@@ -171,26 +173,26 @@ export interface GatewayActivity {
/**
* The emoji used for a custom status
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-emoji
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-emoji
*/
emoji?: GatewayActivityEmoji;
session_id?: string;
/**
* Information for the current party of the player
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-party
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-party
*/
party?: GatewayActivityParty;
/**
* Images for the presence and their hover texts
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-assets
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-assets
*/
assets?: GatewayActivityAssets;
/**
* Secrets for Rich Presence joining and spectating
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-secrets
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-secrets
*/
secrets?: GatewayActivitySecrets;
/**
@@ -200,7 +202,7 @@ export interface GatewayActivity {
/**
* Activity flags `OR`d together, describes what the payload includes
*
* See https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags
* See https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags
*
* See https://en.wikipedia.org/wiki/Bit_field
*/
@@ -227,7 +229,7 @@ export enum ActivityPlatform {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-types
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types
*/
export enum ActivityType {
/**
@@ -257,7 +259,7 @@ export enum ActivityType {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-timestamps
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-timestamps
*/
export interface GatewayActivityTimestamps {
/**
@@ -271,12 +273,12 @@ export interface GatewayActivityTimestamps {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-emoji
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-emoji
*/
export type GatewayActivityEmoji = Partial<Pick<APIEmoji, 'id' | 'animated'>> & Pick<APIEmoji, 'name'>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-party
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-party
*/
export interface GatewayActivityParty {
/**
@@ -290,19 +292,19 @@ export interface GatewayActivityParty {
}
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-assets
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-assets
*/
export type GatewayActivityAssets = Partial<
Record<'large_image' | 'large_text' | 'small_image' | 'small_text', string>
>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-secrets
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-secrets
*/
export type GatewayActivitySecrets = Partial<Record<'join' | 'spectate' | 'match', string>>;
/**
* https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags
* https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags
*/
export enum ActivityFlags {
Instance = 1 << 0,
@@ -328,7 +330,7 @@ export interface GatewayActivityButton {
}
/**
* https://discord.com/developers/docs/topics/gateway#thread-list-sync-thread-list-sync-event-fields
* https://discord.com/developers/docs/topics/gateway-events#thread-list-sync-thread-list-sync-event-fields
*/
export interface GatewayThreadListSync {
/**
@@ -350,7 +352,7 @@ export interface GatewayThreadListSync {
}
/**
* https://discord.com/developers/docs/topics/gateway#thread-members-update-thread-members-update-event-fields
* https://discord.com/developers/docs/topics/gateway-events#thread-members-update-thread-members-update-event-fields
*/
export interface GatewayThreadMembersUpdate {
/**

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