Compare commits

..

165 Commits

Author SHA1 Message Date
Vlad Frangu
200f650539 chore(release): 0.38.33 🎉 (#1429)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-09 23:50:43 +02:00
Jiralite
2736687283 feat(PermissionFlagsBits): add BypassSlowmode (#1427) 2025-11-08 10:04:25 +02:00
renovate[bot]
388faf3d33 chore(deps): lock file maintenance (#1426)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-07 14:36:27 +00:00
renovate[bot]
20b7057c50 chore(deps): update patch/minor dependencies (#1425)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-07 10:10:37 +00:00
renovate[bot]
5c73edb70a chore(deps): update eslint/prettier (#1424)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-07 05:42:54 +00:00
Vlad Frangu
2b5a2bc1e9 chore(release): 0.38.32 🎉 (#1422)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-03 19:13:04 +02:00
dependabot[bot]
b89290fc95 chore(deps): bump tar from 7.5.1 to 7.5.2 (#1420)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-31 17:46:13 +02:00
Jiralite
bf4291bed8 feat(globals): Support new s/S timestamp styles (#1418) 2025-10-31 17:45:58 +02:00
Jiralite
4237b1a115 chore: update code owners (#1421) 2025-10-31 17:45:30 +02:00
renovate[bot]
d47172c0c9 chore(deps): lock file maintenance (#1419)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 10:48:20 +00:00
renovate[bot]
075ec3daf2 chore(deps): update patch/minor dependencies (#1416)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 07:40:04 +00:00
renovate[bot]
4e69666fe6 chore(deps): lock file maintenance (#1415)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 19:50:03 +00:00
renovate[bot]
73760723b4 chore(deps): update patch/minor dependencies (#1414)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 11:49:38 +00:00
renovate[bot]
6fdf2c8a72 chore(deps): update eslint/prettier to v8.46.2 (#1413)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 06:09:58 +00:00
Vlad Frangu
fb8972f52c chore(release): 0.38.31 🎉 (#1410)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-24 00:15:46 +03:00
Snazzah
fb0109e8e0 feat(GuildRole): add role member counts (#1412)
* feat(GuildRole): add role member counts

* chore: fix spacing in comment
2025-10-23 19:35:49 +01:00
Danial Raza
e37f802e39 fix(APIModalInteractionResponseCallbackComponent): remove APIFileUploadComponent (#1406)
Co-authored-by: Almeida <almeidx@pm.me>
2025-10-22 23:40:01 +01:00
Snazzah
ea2b922d12 feat(APIAuditLogChange): add some missing channel change types (#1409)
* feat(APIAuditLogChange): add some missing channel change types

* chore: fix formatting

* chore: move a type down the list

* chore: fix linting issue

* chore: fix types in deno
2025-10-22 23:36:05 +01:00
Snazzah
be8b372663 feat(Webhooks): add entitlement update and delete events (#1408)
* feat(Webhooks): add entitlement update and delete events

* chore: fix export order
2025-10-22 22:26:53 +01:00
Danial Raza
c5c0312867 feat(GuildFeature): add PinPermissionMigrationComplete (#1407) 2025-10-21 19:26:32 +01:00
Qjuh
7d6a934f66 fix: missing name and size property on APIFileComponent (#1404) 2025-10-21 06:32:03 +03:00
renovate[bot]
9347651bbe chore(deps): lock file maintenance (#1350)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-20 16:43:22 +00:00
Qjuh
6e5563e2b7 fix: tsdoc unstable tag is block not modifier (#1405) 2025-10-20 18:43:55 +03:00
renovate[bot]
8064df3722 chore(deps): update actions/setup-node action to v6 (#1402)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 09:58:41 +03:00
renovate[bot]
eeb99a9ea0 chore(deps): update patch/minor dependencies (#1401)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 09:58:24 +03:00
renovate[bot]
63c9e4f72e chore(deps): update eslint/prettier to v8.46.1 (#1400)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 04:30:13 +00:00
Vlad Frangu
4d73b0e509 chore: name 2025-10-15 08:52:50 +03:00
Vlad Frangu
a56c3c892e chore: name 2025-10-15 08:47:07 +03:00
Vlad Frangu
97b0580189 chore: oidc unification 2025-10-15 08:46:33 +03:00
Vlad Frangu
62e5b4a95c feat: publishing with OIDC 2025-10-15 08:41:44 +03:00
Vlad Frangu
c96926b6a2 chore(release): 0.38.30 🎉 (#1398)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-13 17:55:13 +03:00
Denis-Adrian Cristea
790b4deb0f refactor: improved channel types (#1397) 2025-10-13 12:26:03 +03:00
Jiralite
51b2d4e1c9 feat: Add support for file upload components (#1372) 2025-10-13 12:15:24 +03:00
renovate[bot]
687f474d4e chore(deps): update patch/minor dependencies (#1396)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 09:39:22 +00:00
renovate[bot]
ff892fa66e chore(deps): update eslint/prettier (#1395)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 04:26:21 +00:00
Vlad Frangu
84f312db2a chore(release): 0.38.29 🎉 (#1394)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-06 20:48:35 +03:00
Jiralite
9665e02367 fix: edit self result (#1393) 2025-10-04 19:53:21 +03:00
Vlad Frangu
71a0b8d211 chore(release): 0.38.28 🎉 (#1392)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-04 18:14:18 +03:00
Almeida
00c46946a0 fix: move applied_tags back to thread channels (#1391) 2025-10-04 17:17:32 +03:00
Vlad Frangu
f65b30a3bf chore(release): 0.38.27 🎉 (#1390)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-04 15:51:24 +03:00
Jiralite
6295858de5 fix(RESTPutAPIGuildIncidentActionsJSONBody): add null (#1387) 2025-10-04 15:46:31 +03:00
Jiralite
0c6d4249b6 fix: add RESTPutAPIGuildIncidentActionsResult (#1388) 2025-10-04 15:46:18 +03:00
Jiralite
95b186deb7 fix: @unstable screening (#1389) 2025-10-04 15:45:59 +03:00
Nabil Ahmed
18cf4a514e fix: Narrow thread-related properties for channels (#1377) 2025-10-03 11:48:44 +03:00
renovate[bot]
7a07478721 chore(deps): update commitlint monorepo to v20 (#1381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 11:47:44 +03:00
renovate[bot]
97cc33d528 chore(deps): update dependency ts-morph to v27 (#1376)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 11:47:26 +03:00
dependabot[bot]
f6e0da697b chore(deps): bump webpack-dev-server, @docusaurus/core, @docusaurus/plugin-client-redirects, @docusaurus/plugin-pwa, @docusaurus/preset-classic, @docusaurus/plugin-content-docs and @docusaurus/theme-search-algolia (#1383)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-03 11:32:41 +03:00
renovate[bot]
6f286522b4 chore(deps): update dependency p-queue to v9 (#1386)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 11:31:47 +03:00
renovate[bot]
d74c6f1923 chore(deps): update patch/minor dependencies (#1385)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 11:31:25 +03:00
renovate[bot]
7937338193 chore(deps): update eslint/prettier to v8.45.0 (#1384)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 04:24:43 +00:00
renovate[bot]
d0ed48c189 chore(deps): update dependency eslint-formatter-pretty to v7 (#1382)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-26 14:43:56 +00:00
renovate[bot]
607dd01f09 chore(deps): update patch/minor dependencies (#1380)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-26 08:57:25 +00:00
renovate[bot]
34485bc840 chore(deps): update eslint/prettier (#1379)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-26 05:49:49 +00:00
renovate[bot]
eb252bd049 chore(deps): update patch/minor dependencies (#1375)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 08:49:52 +00:00
renovate[bot]
34bd7d0aba chore(deps): update eslint/prettier to v8.44.0 (#1374)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 05:02:55 +00:00
Vlad Frangu
de7ac23d41 chore(release): 0.38.26 🎉 (#1373)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-18 15:28:49 +03:00
ducktrshessami
e52ac85e9d fix: add guild_id back to GatewayVoiceStateUpdateDispatchData (#1346) 2025-09-16 12:31:42 +03:00
Vlad Frangu
aca4683388 chore(release): 0.38.25 🎉 (#1371)
Build ran for e316373609

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-15 15:29:49 +03:00
renovate[bot]
e316373609 chore(deps): update patch/minor dependencies (#1370)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-14 02:06:26 +00:00
renovate[bot]
cf57fc92dd chore(deps): update eslint/prettier (#1369)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-12 16:18:15 +00:00
Almeida
14963d61d4 feat: add RateLimited gateway event (#1334) 2025-09-11 00:04:31 +03:00
Vlad Frangu
041583d8da chore(release): 0.38.24 🎉 (#1366)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-10 19:45:43 +03:00
Jiralite
35a4084647 feat(RESTPatchAPICurrentGuildMemberJSONBody): Add banner, avatar, and bio (#1356) 2025-09-10 19:28:36 +03:00
Jiralite
35867c19e6 feat: Update invite types (#1365) 2025-09-09 14:28:09 +03:00
Jiralite
8eb66a1512 feat(RESTPostAPIChannelThreadsResult): narrow response (#1364) 2025-09-08 17:37:48 +03:00
Vlad Frangu
5a07684ef9 chore(release): 0.38.23 🎉 (#1363)
Build ran for 464a9c8cbf

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-05 19:20:29 +03:00
Naiyar
464a9c8cbf fix: add missing text display in modal submission (#1362)
* fix: add missing text display in modal submission

* chore: lint
2025-09-05 19:18:09 +03:00
Almeida
4d3d83d09e refactor: split messages from channels (#1075)
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2025-09-05 12:15:29 +03:00
Jiralite
af3907b106 fix(RESTPatchAPIWebhookWithTokenMessageJSONBody): add flags (#1354) 2025-09-05 10:47:44 +03:00
Jiralite
fa05a7503f feat: More label components and text display in modals (#1351) 2025-09-05 10:47:26 +03:00
renovate[bot]
36567c75e8 chore(deps): update dependency cloudflare to v5 (#1361)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 10:43:20 +03:00
renovate[bot]
51106df44d chore(deps): update actions/setup-node action to v5 (#1360)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 10:42:58 +03:00
renovate[bot]
7df81ce484 chore(deps): update actions/labeler action to v6 (#1359)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 10:42:50 +03:00
renovate[bot]
28dfa78080 chore(deps): update patch/minor dependencies (#1358)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 10:39:53 +03:00
renovate[bot]
9f7933dd03 chore(deps): update eslint/prettier to v8.42.0 (#1357)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 05:22:37 +00:00
Jiralite
ae09e2b9e4 feat: add 400001 (#1352) 2025-09-02 19:25:43 +03:00
renovate[bot]
d3dc8c13d7 chore(deps): update patch/minor dependencies (#1348)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-29 14:01:10 +03:00
renovate[bot]
e665ddc003 chore(deps): update eslint/prettier (#1347)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-29 13:21:10 +03:00
Vlad Frangu
a4063bd034 chore(release): 0.38.22 🎉 (#1349)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-29 13:20:35 +03:00
Jiralite
3659c59ce7 feat: Support select in modals (#1321) 2025-08-29 13:16:14 +03:00
renovate[bot]
e849c17e84 chore(deps): lock file maintenance (#1345)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-22 18:43:06 +00:00
renovate[bot]
8947930088 chore(deps): update patch/minor dependencies (#1344)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-22 14:05:08 +03:00
renovate[bot]
ad46fc3d38 chore(deps): update eslint/prettier to v8.40.0 (#1343)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-22 06:47:28 +00:00
dependabot[bot]
4d1f9d96bc chore(deps): bump brace-expansion in /website (#1342)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 15:32:51 +03:00
Vlad Frangu
72445f8ae2 chore(release): 0.38.21 🎉 (#1341)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-21 15:30:17 +03:00
Danial Raza
1a37ae3eea feat: guest invites (#1290)
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2025-08-20 19:27:49 +03:00
Almeida
b05df17466 feat(PermissionFlagsBits): add PinMessages (#1340) 2025-08-20 19:26:07 +03:00
renovate[bot]
51705cba50 chore(deps): lock file maintenance (#1338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 13:00:02 +00:00
renovate[bot]
77ffcfecb9 chore(deps): update dependency @types/node to v22.17.2 (#1337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 12:59:21 +00:00
renovate[bot]
3cb4bb409b chore(deps): lock file maintenance (#1336)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 10:08:48 +00:00
renovate[bot]
8db0929ba1 chore(deps): update dependency p-limit to v7 (#1335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 10:33:39 +03:00
renovate[bot]
5e096f7e61 chore(deps): update patch/minor dependencies (#1333)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 10:33:28 +03:00
renovate[bot]
4a6bfd2a56 chore(deps): update eslint/prettier (#1332)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 06:14:49 +00:00
Vlad Frangu
f35fc69267 chore(release): 0.38.20 🎉 (#1331)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-14 15:38:29 +03:00
Jiralite
2a7c1d271f ci: actions/checkout@v5 (#1330) 2025-08-12 20:39:23 +03:00
Vlad Frangu
b7e8a9f527 chore(release): 0.38.19 🎉 (#1329)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-12 14:56:27 +03:00
Jiralite
e428c7590f refactor(APIInvite): expires_at always present (#1328) 2025-08-12 14:41:50 +03:00
lew
5f9c1e1b1c feat(GatewayActivity): add url & status display type fields (#1326) 2025-08-10 19:44:35 +03:00
renovate[bot]
87b52b7890 chore(deps): lock file maintenance (#1325)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-08 17:30:35 +00:00
renovate[bot]
256911b9ad chore(deps): lock file maintenance (#1324)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-08 12:55:08 +00:00
renovate[bot]
26a6dd5c77 chore(deps): update patch/minor dependencies (#1323)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-08 08:30:04 +00:00
renovate[bot]
a45f0161e7 chore(deps): update eslint/prettier to v8.39.0 (#1322)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-08 04:56:58 +00:00
renovate[bot]
53f47105dc chore(deps): lock file maintenance (#1320)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-01 15:59:51 +03:00
renovate[bot]
36b23c126b chore(deps): update patch/minor dependencies (#1319)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-01 11:49:39 +00:00
renovate[bot]
53ac69e1a7 chore(deps): update dependency eslint to v9.32.0 (#1318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-01 05:47:39 +00:00
Vlad Frangu
fe08e2d1e2 chore(release): 0.38.18 🎉 (#1317)
Build ran for 4afd0c13fd

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-31 15:37:09 +03:00
Jiralite
4afd0c13fd fix: Deprecate API related to guild ownership (#1316) 2025-07-30 14:39:10 +03:00
Jiralite
03f02a5a9e feat(GuildFeature): add GUILD_TAGS (#1315) 2025-07-30 14:38:21 +03:00
renovate[bot]
b4285c1d7e chore(deps): lock file maintenance (#1314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 15:41:03 +03:00
Vlad Frangu
295276a581 chore(release): 0.38.17 🎉 (#1311)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-25 11:59:26 +03:00
Vlad Frangu
46bb280690 chore: enable automerge for more things
cuz i am lazy
2025-07-25 11:59:04 +03:00
renovate[bot]
cda030d74e chore(deps): update patch/minor dependencies (#1313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 11:58:15 +03:00
renovate[bot]
79534f2e9d chore(deps): update eslint/prettier to v8.38.0 (#1312)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 06:24:27 +00:00
Jiralite
e6c12634e9 ci: disallow changes to these directories (#829) 2025-07-24 14:58:31 +03:00
Jiralite
a41e646d3d feat(GuildMemberFlags): add AutoModQuarantinedGuildTag (#1309) 2025-07-24 14:57:06 +03:00
Jiralite
a72e4545a3 feat(auditLog): add AUTO_MODERATION_QUARANTINE_USER (#1310) 2025-07-24 14:56:34 +03:00
Vlad Frangu
0785436e2f chore: find replace? 2025-07-23 00:21:44 +03:00
Vlad Frangu
5cd2511798 docs: generate routes interfaces automatically on build (#1308) 2025-07-23 00:15:59 +03:00
renovate[bot]
b760be279a chore(deps): lock file maintenance (#1305)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-18 15:22:54 +03:00
renovate[bot]
c47e14570d chore(deps): update patch/minor dependencies (#1304)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-18 13:58:06 +03:00
renovate[bot]
30f95bc938 chore(deps): update eslint/prettier (#1303)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-18 13:57:48 +03:00
dependabot[bot]
fe220db046 chore(deps): bump on-headers and compression in /website (#1302)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-18 13:57:38 +03:00
Vlad Frangu
2f3b892feb chore(release): 0.38.16 🎉 (#1301)
Build ran for 574e5c12bd

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-13 19:41:15 +03:00
Jiralite
574e5c12bd fix(APIApplicationCommandChannelOption): exclude directory channels (#1300) 2025-07-13 19:33:21 +03:00
renovate[bot]
3eb77eb89e chore(deps): lock file maintenance (#1299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 13:45:21 +03:00
renovate[bot]
cbee43cdcd chore(deps): update patch/minor dependencies (#1298)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 13:37:43 +03:00
renovate[bot]
ecb4c336c0 chore(deps): update eslint/prettier to v8.36.0 (#1297)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 13:37:36 +03:00
renovate[bot]
9b68f04fb7 chore(deps): lock file maintenance (#1296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 14:01:32 +03:00
renovate[bot]
82f8ec4366 chore(deps): update eslint/prettier (#1294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-05 22:42:26 +03:00
renovate[bot]
92b6632981 chore(deps): update patch/minor dependencies (#1295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-05 22:42:16 +03:00
Vlad Frangu
a8faa02857 chore(release): 0.38.15 🎉 (#1293)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-03 15:33:22 +03:00
Danial Raza
1fee6339bf fix(CDNRoutes): correct guildTagBadge route (#1291) 2025-07-02 19:17:33 +03:00
Danial Raza
3245f7de92 feat: user guild tags (#1287) 2025-07-02 12:39:15 +03:00
Vlad Frangu
b238cc5b67 chore(release): 0.38.14 🎉 (#1288)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-01 00:10:38 +03:00
renovate[bot]
e2ce6a3d2d chore(deps): lock file maintenance (#1286)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-27 13:07:17 +03:00
renovate[bot]
f1d456de8c chore(deps): update eslint/prettier (#1284)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Vlad Frangu <me@vladfrangu.dev>
2025-06-27 13:04:35 +03:00
Jiralite
71c6d2609f feat: support new pinned messages routes (#1254) 2025-06-27 13:01:20 +03:00
Danial Raza
7fbb3e3310 feat: role gradient colors (#1281) 2025-06-27 12:58:57 +03:00
renovate[bot]
ef1f32acd0 chore(deps): update patch/minor dependencies (#1285)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-27 12:57:05 +03:00
Snazzah
6b05db5a2f feat(voice): add close codes 4021 and 4022 (#1283) 2025-06-27 12:56:39 +03:00
Qjuh
ab926eb038 chore: fix weird issue with api-extractor (#1282) 2025-06-27 01:18:07 +03:00
Vlad Frangu
3e394aa44b chore(release): 0.38.13 🎉 (#1280)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-23 15:32:39 +03:00
renovate[bot]
077623299d chore(deps): lock file maintenance (#1279)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-20 13:59:52 +03:00
renovate[bot]
fa5ab47b5e chore(deps): lock file maintenance (#1278)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-20 13:57:30 +03:00
Almeida
77cb32746f feat(APIUser): add collectibles (#1274) 2025-06-20 13:57:05 +03:00
renovate[bot]
60e2b679f8 chore(deps): update patch/minor dependencies (#1277)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-20 13:47:28 +03:00
renovate[bot]
818d4ee6e7 chore(deps): update eslint/prettier (#1276)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-20 13:47:08 +03:00
Vlad Frangu
31f07f9e5b chore(release): 0.38.12 🎉 (#1275)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-16 15:33:24 +03:00
Danial Raza
91d851628d feat(APIApplication): add approximate_user_authorization_count (#1272) 2025-06-14 18:30:28 +03:00
Danial Raza
b2da18c634 feat(APIUnfurledMediaItem): add attachment_id (#1273) 2025-06-14 17:44:06 +03:00
renovate[bot]
9ae89dd9d8 chore(deps): lock file maintenance (#1269)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-07 16:20:42 +03:00
renovate[bot]
c60f8d2e29 chore(deps): update patch/minor dependencies (#1268)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-07 16:16:23 +03:00
renovate[bot]
bb713c0aec chore(deps): update eslint/prettier (#1267)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-07 16:15:50 +03:00
renovate[bot]
28bb65f85a chore(config): migrate config renovate.json (#1266)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-07 16:12:13 +03:00
Almeida
c76dd317b4 docs: resolved api-extractor warnings (#1265) 2025-06-07 00:52:14 +03:00
Qjuh
6df612809b refactor: omit most omits (#1249) 2025-06-06 23:42:44 +03:00
Jiralite
7a18245abf refactor: remove @unstable (#1264) 2025-06-06 21:09:25 +03:00
Vlad Frangu
ba70b0573c chore(release): 0.38.11 🎉 (#1263)
Build ran for d71276cb5f

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-04 10:17:27 +03:00
Snazzah
d71276cb5f fix(voice): fix remaining payload typos (#1262) 2025-06-04 10:01:32 +03:00
Snazzah
121fb47f4c fix(voice): add clients connect and client disconnect recieve payload (#1261) 2025-06-04 02:06:39 +03:00
Snazzah
83d34ef00c fix(voice): add max_dave_protocol_version to identify (#1260) 2025-06-03 08:46:14 +03:00
Snazzah
c670a2551a chore(docs): add voice v8 to docs (#1259) 2025-06-03 01:09:08 +03:00
Snazzah
ebf313c49c feat: voice v8 payloads & MLS voice opcodes (#1257) 2025-06-03 00:07:22 +03:00
Vlad Frangu
1d8f79e6b2 chore(release): 0.38.10 🎉 (#1258)
Build ran for 7d92c012c7

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-02 15:31:09 +03:00
Vlad Frangu
7d92c012c7 chore: move to ts eslint config 2025-05-31 16:18:18 +03:00
176 changed files with 21354 additions and 15298 deletions

17
.github/CODEOWNERS vendored
View File

@@ -1,10 +1,11 @@
* @vladfrangu
/*.ts @discordjs/discord-api-types @discordjs/core
gateway/ @discordjs/discord-api-types @discordjs/core
payloads/ @discordjs/discord-api-types @discordjs/core
rest/ @discordjs/discord-api-types @discordjs/core
rpc/ @discordjs/discord-api-types @discordjs/core
tests/ @discordjs/discord-api-types @discordjs/core
utils/ @discordjs/discord-api-types @discordjs/core
voice/ @discordjs/discord-api-types @discordjs/core
/*.ts @discordjs/discord-api-types
deno/ @discordjs/discord-api-types
gateway/ @discordjs/discord-api-types
payloads/ @discordjs/discord-api-types
rest/ @discordjs/discord-api-types
rpc/ @discordjs/discord-api-types
tests/ @discordjs/discord-api-types
utils/ @discordjs/discord-api-types
voice/ @discordjs/discord-api-types

View File

@@ -13,11 +13,9 @@
- Checkout a topic branch from a base branch, e.g. `main`, and merge back against that branch.
- If adding a new feature:
- Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first and have it approved before working on it.
- If fixing a bug:
- If you are resolving a special issue, add `fix/close #xxxx[,#xxxx]` (#xxxx is the issue id) in your PR body for a better release log, e.g.
```

View File

@@ -1,33 +0,0 @@
name: Deno
on:
pull_request:
types:
- opened
- synchronize
jobs:
check_deno:
name: Ensure Deno types are in sync with the code
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout Project
uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
cache: 'yarn'
node-version-file: package.json
- name: Install Dependencies
run: yarn
- name: Run Check Script
run: node ./scripts/actions/report-deno-not-ran.mjs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -12,13 +12,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Project
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Add problem matcher
run: echo "::add-matcher::.github/problemMatchers/eslint.json" && echo "::add-matcher::.github/problemMatchers/tsc.json"
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
cache: 'yarn'
node-version-file: package.json

View File

@@ -39,12 +39,12 @@ jobs:
steps:
- name: Checkout discord-api-types
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
ref: ${{ inputs.ref || '' }}
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
cache: 'yarn'
node-version-file: package.json
@@ -56,7 +56,7 @@ jobs:
# pnpm --filter="*api-*" --filter="scripts" --filter="actions" run build
- name: Checkout discord.js
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
repository: discordjs/discord.js
path: djs
@@ -67,7 +67,7 @@ jobs:
with:
swap-size-gb: 10
- uses: pnpm/action-setup@v4.1.0
- uses: pnpm/action-setup@v4.2.0
name: Install pnpm
with:
run_install: false

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Label sync
uses: crazy-max/ghaction-github-labeler@v5

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Automatically label PR
uses: actions/labeler@v5
uses: actions/labeler@v6
with:
repo-token: '${{ secrets.GITHUB_TOKEN }}'
sync-labels: true

View File

@@ -1,52 +0,0 @@
name: Publish next
on:
workflow_dispatch:
push:
branches:
- main
jobs:
publish:
concurrency:
group: publish-next
cancel-in-progress: true
name: Publish @next release to npm
runs-on: ubuntu-latest
permissions:
id-token: write
if: github.repository_owner == 'discordjs' && !(github.event_name == 'push' && startsWith(github.event.head_commit.message, 'chore(release)'))
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js
uses: actions/setup-node@v4
with:
cache: 'yarn'
node-version-file: package.json
- name: Install Dependencies
run: yarn
- name: Bump version
run: node ./scripts/bump-version.mjs
- name: Deprecate old @next versions
run: yarn npm-deprecate --name "*next*" --package discord-api-types --message "No longer supported. Install the latest @next release" || true
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
- name: Publish new @next version
run: |
yarn version $(jq --raw-output '.version' package.json)-next.$(git rev-parse --short HEAD).$(date +%s)
yarn npm publish --tag next
env:
YARN_NPM_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}

View File

@@ -1,4 +1,4 @@
name: Create PR for new releases and publish new version
name: Release flows
on:
workflow_dispatch:
@@ -10,6 +10,49 @@ on:
- cron: '0 12 * * 1,4'
jobs:
publish_next:
concurrency:
group: publish_next
cancel-in-progress: true
name: Publish @next release to npm
runs-on: ubuntu-latest
permissions:
id-token: write
if: github.repository_owner == 'discordjs' && github.event_name == 'push' && !startsWith(github.event.head_commit.message, 'chore(release)')
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Use Node.js
uses: actions/setup-node@v6
with:
cache: 'yarn'
node-version-file: package.json
- name: Install Dependencies
run: yarn
- name: Bump version
run: node ./scripts/bump-version.mjs
# TODO: we need a scoped token for this -.-, can't OIDC tmk
# - name: Deprecate old @next versions
# run: yarn npm-deprecate --name "*next*" --package discord-api-types --message "No longer supported. Install the latest @next release" || true
# env:
# NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
- name: Publish new @next version
run: |
yarn version $(jq --raw-output '.version' package.json)-next.$(git rev-parse --short HEAD).$(date +%s)
yarn npm publish --tag next
create_pr:
name: Create PR for new version
runs-on: ubuntu-latest
@@ -17,12 +60,12 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
cache: 'yarn'
node-version-file: package.json
@@ -73,12 +116,12 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
cache: 'yarn'
node-version-file: package.json
@@ -89,8 +132,6 @@ jobs:
- name: Publish release to npm
run: |
yarn npm publish
env:
YARN_NPM_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
- name: Create GitHub release
run: node ./scripts/actions/create-release.mjs

View File

@@ -0,0 +1,41 @@
name: Validate Pull Request
on:
pull_request:
jobs:
deno:
name: Ensure Deno types are synchronized
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout Project
uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v6
with:
cache: 'yarn'
node-version-file: package.json
- name: Install Dependencies
run: yarn
- name: Run Check Script
run: node ./scripts/actions/report-deno-not-ran.mjs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
validate-supported-versions:
runs-on: ubuntu-latest
name: Disallow unsupported API versions
steps:
- name: Check for unsupported API changes
env:
GH_TOKEN: ${{ github.token }}
run: |
PATTERNS="gateway/v6.ts|gateway/v8.ts|payloads/v6/|payloads/v8/|rest/v6/|rest/v8/|rpc/v8.ts|utils/v8.ts|voice/v8.ts|^v6.ts$|^v8.ts$"
if gh pr view ${{ github.event.pull_request.number }} --repo ${{github.repository}} --json files --jq ".files[].path | select(test(\"$PATTERNS\"))" | grep -q .; then
echo "::error::Unsupported API versions modified. Please make changes to current API versions only."
exit 1
fi

2
.gitignore vendored
View File

@@ -66,3 +66,5 @@ docs/*
# djs repo clone
djs
_generated_

View File

@@ -38,3 +38,5 @@ utils/v8.ts
v8.ts
.yarn/*
djs/*
_generated_

942
.yarn/releases/yarn-4.10.3.cjs vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,7 @@ enableGlobalCache: true
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.9.1.cjs
yarnPath: .yarn/releases/yarn-4.10.3.cjs
plugins:
- path: ./.yarn/plugins/postinstallDev.cjs

View File

@@ -1,3 +1,253 @@
## [0.38.33](https://github.com/discordjs/discord-api-types/compare/0.38.32...0.38.33) (2025-11-09)
### Features
* **PermissionFlagsBits:** add `BypassSlowmode` ([#1427](https://github.com/discordjs/discord-api-types/issues/1427)) ([2736687](https://github.com/discordjs/discord-api-types/commit/27366872836c9f1f069fafea7114dedb62467d27))
## [0.38.32](https://github.com/discordjs/discord-api-types/compare/0.38.31...0.38.32) (2025-11-03)
### Features
* **globals:** Support new s/S timestamp styles ([#1418](https://github.com/discordjs/discord-api-types/issues/1418)) ([bf4291b](https://github.com/discordjs/discord-api-types/commit/bf4291bed83272036e0cd743ba2824fc6de837e4))
## [0.38.31](https://github.com/discordjs/discord-api-types/compare/0.38.30...0.38.31) (2025-10-23)
### Bug Fixes
* **APIModalInteractionResponseCallbackComponent:** remove `APIFileUploadComponent` ([#1406](https://github.com/discordjs/discord-api-types/issues/1406)) ([e37f802](https://github.com/discordjs/discord-api-types/commit/e37f802e392fdce948c2a15ae26088f8ae625793))
* missing name and size property on APIFileComponent ([#1404](https://github.com/discordjs/discord-api-types/issues/1404)) ([7d6a934](https://github.com/discordjs/discord-api-types/commit/7d6a934f66c2a2d063bae16eb6fb323022ece192))
* tsdoc unstable tag is block not modifier ([#1405](https://github.com/discordjs/discord-api-types/issues/1405)) ([6e5563e](https://github.com/discordjs/discord-api-types/commit/6e5563e2b727684b44e2851b09fdf5590e08a1f8))
### Features
* **APIAuditLogChange:** add some missing channel change types ([#1409](https://github.com/discordjs/discord-api-types/issues/1409)) ([ea2b922](https://github.com/discordjs/discord-api-types/commit/ea2b922d12618c54139fb37986697a1a2bd33393))
* **GuildFeature:** add `PinPermissionMigrationComplete` ([#1407](https://github.com/discordjs/discord-api-types/issues/1407)) ([c5c0312](https://github.com/discordjs/discord-api-types/commit/c5c0312867e70aefb803f9988c46e6214a028be6))
* publishing with OIDC ([62e5b4a](https://github.com/discordjs/discord-api-types/commit/62e5b4a95cc7d5b71384d81f96d0e583d117cee5))
* **Webhooks:** add entitlement update and delete events ([#1408](https://github.com/discordjs/discord-api-types/issues/1408)) ([be8b372](https://github.com/discordjs/discord-api-types/commit/be8b3726630bd0b0f76615cb5d7e759a95de71e4))
## [0.38.30](https://github.com/discordjs/discord-api-types/compare/0.38.29...0.38.30) (2025-10-13)
### Features
* Add support for file upload components ([#1372](https://github.com/discordjs/discord-api-types/issues/1372)) ([51b2d4e](https://github.com/discordjs/discord-api-types/commit/51b2d4e1c91a2d10244baccf1fdeee767df2289f))
## [0.38.29](https://github.com/discordjs/discord-api-types/compare/0.38.28...0.38.29) (2025-10-06)
### Bug Fixes
* edit self result ([#1393](https://github.com/discordjs/discord-api-types/issues/1393)) ([9665e02](https://github.com/discordjs/discord-api-types/commit/9665e0236734cf224e88da4a6ede4dc535ce53a5))
## [0.38.28](https://github.com/discordjs/discord-api-types/compare/0.38.27...0.38.28) (2025-10-04)
### Bug Fixes
* move `applied_tags` back to thread channels ([#1391](https://github.com/discordjs/discord-api-types/issues/1391)) ([00c4694](https://github.com/discordjs/discord-api-types/commit/00c46946a02ace495031c6d257b0820c4a0652cc))
## [0.38.27](https://github.com/discordjs/discord-api-types/compare/0.38.26...0.38.27) (2025-10-04)
### Bug Fixes
* `[@unstable](https://github.com/unstable)` screening ([#1389](https://github.com/discordjs/discord-api-types/issues/1389)) ([95b186d](https://github.com/discordjs/discord-api-types/commit/95b186deb7410ff5a667a1cbac5e7b6dd915f6fe))
* add `RESTPutAPIGuildIncidentActionsResult` ([#1388](https://github.com/discordjs/discord-api-types/issues/1388)) ([0c6d424](https://github.com/discordjs/discord-api-types/commit/0c6d4249b6e39b52607235b273bf0c46caa331dc))
* Narrow thread-related properties for channels ([#1377](https://github.com/discordjs/discord-api-types/issues/1377)) ([18cf4a5](https://github.com/discordjs/discord-api-types/commit/18cf4a514e644d039f18f55d4062318dbeb1c3f6))
* **RESTPutAPIGuildIncidentActionsJSONBody:** add `null` ([#1387](https://github.com/discordjs/discord-api-types/issues/1387)) ([6295858](https://github.com/discordjs/discord-api-types/commit/6295858de5d7bde4b2b289ef301d994ed78bf964))
## [0.38.26](https://github.com/discordjs/discord-api-types/compare/0.38.25...0.38.26) (2025-09-18)
### Bug Fixes
* add guild_id back to GatewayVoiceStateUpdateDispatchData ([#1346](https://github.com/discordjs/discord-api-types/issues/1346)) ([e52ac85](https://github.com/discordjs/discord-api-types/commit/e52ac85e9d60b4032bb21cd958cf032cad50643f))
## [0.38.25](https://github.com/discordjs/discord-api-types/compare/0.38.24...0.38.25) (2025-09-15)
### Features
* add RateLimited gateway event ([#1334](https://github.com/discordjs/discord-api-types/issues/1334)) ([14963d6](https://github.com/discordjs/discord-api-types/commit/14963d61d488af2be8d3655651fd0677ad4c46ed))
## [0.38.24](https://github.com/discordjs/discord-api-types/compare/0.38.23...0.38.24) (2025-09-10)
### Features
* **RESTPatchAPICurrentGuildMemberJSONBody:** Add `banner`, `avatar`, and `bio` ([#1356](https://github.com/discordjs/discord-api-types/issues/1356)) ([35a4084](https://github.com/discordjs/discord-api-types/commit/35a40846473eebfe5245656ee5437347ff2fa88f))
* **RESTPostAPIChannelThreadsResult:** narrow response ([#1364](https://github.com/discordjs/discord-api-types/issues/1364)) ([8eb66a1](https://github.com/discordjs/discord-api-types/commit/8eb66a1512e5b8c57ba7e4a85a18380664ac6219))
* Update invite types ([#1365](https://github.com/discordjs/discord-api-types/issues/1365)) ([35867c1](https://github.com/discordjs/discord-api-types/commit/35867c19e6942e82ac6b2bcd93f61853b0b41666))
## [0.38.23](https://github.com/discordjs/discord-api-types/compare/0.38.22...0.38.23) (2025-09-05)
### Bug Fixes
* add missing text display in modal submission ([#1362](https://github.com/discordjs/discord-api-types/issues/1362)) ([464a9c8](https://github.com/discordjs/discord-api-types/commit/464a9c8cbf613428c3da6b3a9ebd0da4bd827c2b))
* **RESTPatchAPIWebhookWithTokenMessageJSONBody:** add `flags` ([#1354](https://github.com/discordjs/discord-api-types/issues/1354)) ([af3907b](https://github.com/discordjs/discord-api-types/commit/af3907b10690c224dcd3106127fd67491262cc6c))
### Features
* add 400001 ([#1352](https://github.com/discordjs/discord-api-types/issues/1352)) ([ae09e2b](https://github.com/discordjs/discord-api-types/commit/ae09e2b9e47460b07907fc3b6e317bc1ae426663))
* More label components and text display in modals ([#1351](https://github.com/discordjs/discord-api-types/issues/1351)) ([fa05a75](https://github.com/discordjs/discord-api-types/commit/fa05a7503f59017efc16ba2ca6cfb3fc99d331a3))
## [0.38.22](https://github.com/discordjs/discord-api-types/compare/0.38.21...0.38.22) (2025-08-29)
### Features
* Support select in modals ([#1321](https://github.com/discordjs/discord-api-types/issues/1321)) ([3659c59](https://github.com/discordjs/discord-api-types/commit/3659c59ce7b3ee8c0281bf28499e733e1bc0752b))
## [0.38.21](https://github.com/discordjs/discord-api-types/compare/0.38.20...0.38.21) (2025-08-21)
### Features
* guest invites ([#1290](https://github.com/discordjs/discord-api-types/issues/1290)) ([1a37ae3](https://github.com/discordjs/discord-api-types/commit/1a37ae3eea156108e1add538b1d42c5fc2ce08ee))
* **PermissionFlagsBits:** add `PinMessages` ([#1340](https://github.com/discordjs/discord-api-types/issues/1340)) ([b05df17](https://github.com/discordjs/discord-api-types/commit/b05df17466ade5bf58578b8a230d9cb5ec9e1024))
## [0.38.20](https://github.com/discordjs/discord-api-types/compare/0.38.19...0.38.20) (2025-08-14)
## [0.38.19](https://github.com/discordjs/discord-api-types/compare/0.38.18...0.38.19) (2025-08-12)
### Features
* **GatewayActivity:** add url & status display type fields ([#1326](https://github.com/discordjs/discord-api-types/issues/1326)) ([5f9c1e1](https://github.com/discordjs/discord-api-types/commit/5f9c1e1b1c9f1a63d80718629fb2775b7bae62b3))
## [0.38.18](https://github.com/discordjs/discord-api-types/compare/0.38.17...0.38.18) (2025-07-31)
### Bug Fixes
* Deprecate API related to guild ownership ([#1316](https://github.com/discordjs/discord-api-types/issues/1316)) ([4afd0c1](https://github.com/discordjs/discord-api-types/commit/4afd0c13fde05fa7117ecdeaf20534545cfdb005))
### Features
* **GuildFeature:** add `GUILD_TAGS` ([#1315](https://github.com/discordjs/discord-api-types/issues/1315)) ([03f02a5](https://github.com/discordjs/discord-api-types/commit/03f02a5a9ee2e533b58b7790c4deb7ad571e5a92))
## [0.38.17](https://github.com/discordjs/discord-api-types/compare/0.38.16...0.38.17) (2025-07-24)
### Features
* **auditLog:** add `AUTO_MODERATION_QUARANTINE_USER` ([#1310](https://github.com/discordjs/discord-api-types/issues/1310)) ([a72e454](https://github.com/discordjs/discord-api-types/commit/a72e4545a3409388a9c5ec0b5555ecc258de0ac2))
* **GuildMemberFlags:** add `AutoModQuarantinedGuildTag` ([#1309](https://github.com/discordjs/discord-api-types/issues/1309)) ([a41e646](https://github.com/discordjs/discord-api-types/commit/a41e646d3d9b9f6bb15c2f6165043ef8042b26bf))
## [0.38.16](https://github.com/discordjs/discord-api-types/compare/0.38.15...0.38.16) (2025-07-13)
### Bug Fixes
* **APIApplicationCommandChannelOption:** exclude directory channels ([#1300](https://github.com/discordjs/discord-api-types/issues/1300)) ([574e5c1](https://github.com/discordjs/discord-api-types/commit/574e5c12bddd2c515fd2b96b5705b5ef9f9d2787))
## [0.38.15](https://github.com/discordjs/discord-api-types/compare/0.38.14...0.38.15) (2025-07-03)
### Bug Fixes
* **CDNRoutes:** correct `guildTagBadge` route ([#1291](https://github.com/discordjs/discord-api-types/issues/1291)) ([1fee633](https://github.com/discordjs/discord-api-types/commit/1fee6339bf05a98900d8703207c77b8e6d047f24))
### Features
* user guild tags ([#1287](https://github.com/discordjs/discord-api-types/issues/1287)) ([3245f7d](https://github.com/discordjs/discord-api-types/commit/3245f7de92c40d3b74014dbf97a2c0eafea8bcd2))
## [0.38.14](https://github.com/discordjs/discord-api-types/compare/0.38.13...0.38.14) (2025-06-30)
### Features
* role gradient colors ([#1281](https://github.com/discordjs/discord-api-types/issues/1281)) ([7fbb3e3](https://github.com/discordjs/discord-api-types/commit/7fbb3e3310bde5ea0e977afb83ea21bda0220633))
* support new pinned messages routes ([#1254](https://github.com/discordjs/discord-api-types/issues/1254)) ([71c6d26](https://github.com/discordjs/discord-api-types/commit/71c6d2609f1713827e95c5f617011c053cd3eb6a))
* **voice:** add close codes 4021 and 4022 ([#1283](https://github.com/discordjs/discord-api-types/issues/1283)) ([6b05db5](https://github.com/discordjs/discord-api-types/commit/6b05db5a2f9ea540e34e8429c07b96411d418b73))
## [0.38.13](https://github.com/discordjs/discord-api-types/compare/0.38.12...0.38.13) (2025-06-23)
### Features
* **APIUser:** add `collectibles` ([#1274](https://github.com/discordjs/discord-api-types/issues/1274)) ([77cb327](https://github.com/discordjs/discord-api-types/commit/77cb32746f47247a4229910db8ec64f844038529))
## [0.38.12](https://github.com/discordjs/discord-api-types/compare/0.38.11...0.38.12) (2025-06-16)
### Features
* **APIApplication:** add `approximate_user_authorization_count` ([#1272](https://github.com/discordjs/discord-api-types/issues/1272)) ([91d8516](https://github.com/discordjs/discord-api-types/commit/91d851628d2078e70b79e4aa7e464297eca745ce))
* **APIUnfurledMediaItem:** add `attachment_id` ([#1273](https://github.com/discordjs/discord-api-types/issues/1273)) ([b2da18c](https://github.com/discordjs/discord-api-types/commit/b2da18c634c4e20112ce13a8e0a5e6db50063acc))
## [0.38.11](https://github.com/discordjs/discord-api-types/compare/0.38.10...0.38.11) (2025-06-04)
### Bug Fixes
* **voice:** add `max_dave_protocol_version` to identify ([#1260](https://github.com/discordjs/discord-api-types/issues/1260)) ([83d34ef](https://github.com/discordjs/discord-api-types/commit/83d34ef00c4e25d5050c7fc47562b3faa9125215))
* **voice:** add clients connect and client disconnect recieve payload ([#1261](https://github.com/discordjs/discord-api-types/issues/1261)) ([121fb47](https://github.com/discordjs/discord-api-types/commit/121fb47f4c0c51d6149bcf051ffc5bae04b1bba8))
* **voice:** fix remaining payload typos ([#1262](https://github.com/discordjs/discord-api-types/issues/1262)) ([d71276c](https://github.com/discordjs/discord-api-types/commit/d71276cb5f3423a81780494d041694356b8cb49c))
### Features
* voice v8 payloads & MLS voice opcodes ([#1257](https://github.com/discordjs/discord-api-types/issues/1257)) ([ebf313c](https://github.com/discordjs/discord-api-types/commit/ebf313c49c1d78cb1aaf238cfbae7c114f6215cf))
## [0.38.10](https://github.com/discordjs/discord-api-types/compare/0.38.9...0.38.10) (2025-06-02)
## [0.38.9](https://github.com/discordjs/discord-api-types/compare/0.38.8...0.38.9) (2025-05-31)

View File

@@ -82,15 +82,12 @@ The exports of each API version is split into three main parts:
- Everything exported with the `Gateway` prefix represents data that ONLY comes from or is directly related to the Gateway.
- Everything exported with the `REST` prefix represents data that ONLY comes from or is directly related to the REST API.
- For endpoint options, they will follow the following structure: `REST<HTTP Method><Type><Query|(JSON|FormData)Body|Result>` where the type represents what it will return.
- For example, `RESTPostAPIChannelMessageJSONBody` or `RESTGetAPIGatewayBotInfoResult`.
- Some exported types (specifically OAuth2 related ones) may not respect this entire structure due to the nature of the fields. They will start with either `RESTOAuth2` or with something similar to `REST<HTTP Method>OAuth2`
- If a type ends with `Result`, then it represents the expected result by calling its accompanying route.
- Types that are exported as `never` usually mean the result will be a `204 No Content`, so you can safely ignore it. This does **not** account for errors.
- Anything else that is miscellaneous will be exported based on what it represents (for example the `REST` route object).

View File

@@ -7,7 +7,8 @@
"additionalEntryPoints": [
{ "modulePath": "v9", "filePath": "<projectFolder>/v9.d.ts" },
{ "modulePath": "rpc/v10", "filePath": "<projectFolder>/rpc/v10.d.ts" },
{ "modulePath": "voice/v4", "filePath": "<projectFolder>/voice/v4.d.ts" }
{ "modulePath": "voice/v4", "filePath": "<projectFolder>/voice/v4.d.ts" },
{ "modulePath": "voice/v8", "filePath": "<projectFolder>/voice/v8.d.ts" }
],
"bundledPackages": [],

250
deno/CHANGELOG.md generated
View File

@@ -1,3 +1,253 @@
## [0.38.33](https://github.com/discordjs/discord-api-types/compare/0.38.32...0.38.33) (2025-11-09)
### Features
* **PermissionFlagsBits:** add `BypassSlowmode` ([#1427](https://github.com/discordjs/discord-api-types/issues/1427)) ([2736687](https://github.com/discordjs/discord-api-types/commit/27366872836c9f1f069fafea7114dedb62467d27))
## [0.38.32](https://github.com/discordjs/discord-api-types/compare/0.38.31...0.38.32) (2025-11-03)
### Features
* **globals:** Support new s/S timestamp styles ([#1418](https://github.com/discordjs/discord-api-types/issues/1418)) ([bf4291b](https://github.com/discordjs/discord-api-types/commit/bf4291bed83272036e0cd743ba2824fc6de837e4))
## [0.38.31](https://github.com/discordjs/discord-api-types/compare/0.38.30...0.38.31) (2025-10-23)
### Bug Fixes
* **APIModalInteractionResponseCallbackComponent:** remove `APIFileUploadComponent` ([#1406](https://github.com/discordjs/discord-api-types/issues/1406)) ([e37f802](https://github.com/discordjs/discord-api-types/commit/e37f802e392fdce948c2a15ae26088f8ae625793))
* missing name and size property on APIFileComponent ([#1404](https://github.com/discordjs/discord-api-types/issues/1404)) ([7d6a934](https://github.com/discordjs/discord-api-types/commit/7d6a934f66c2a2d063bae16eb6fb323022ece192))
* tsdoc unstable tag is block not modifier ([#1405](https://github.com/discordjs/discord-api-types/issues/1405)) ([6e5563e](https://github.com/discordjs/discord-api-types/commit/6e5563e2b727684b44e2851b09fdf5590e08a1f8))
### Features
* **APIAuditLogChange:** add some missing channel change types ([#1409](https://github.com/discordjs/discord-api-types/issues/1409)) ([ea2b922](https://github.com/discordjs/discord-api-types/commit/ea2b922d12618c54139fb37986697a1a2bd33393))
* **GuildFeature:** add `PinPermissionMigrationComplete` ([#1407](https://github.com/discordjs/discord-api-types/issues/1407)) ([c5c0312](https://github.com/discordjs/discord-api-types/commit/c5c0312867e70aefb803f9988c46e6214a028be6))
* publishing with OIDC ([62e5b4a](https://github.com/discordjs/discord-api-types/commit/62e5b4a95cc7d5b71384d81f96d0e583d117cee5))
* **Webhooks:** add entitlement update and delete events ([#1408](https://github.com/discordjs/discord-api-types/issues/1408)) ([be8b372](https://github.com/discordjs/discord-api-types/commit/be8b3726630bd0b0f76615cb5d7e759a95de71e4))
## [0.38.30](https://github.com/discordjs/discord-api-types/compare/0.38.29...0.38.30) (2025-10-13)
### Features
* Add support for file upload components ([#1372](https://github.com/discordjs/discord-api-types/issues/1372)) ([51b2d4e](https://github.com/discordjs/discord-api-types/commit/51b2d4e1c91a2d10244baccf1fdeee767df2289f))
## [0.38.29](https://github.com/discordjs/discord-api-types/compare/0.38.28...0.38.29) (2025-10-06)
### Bug Fixes
* edit self result ([#1393](https://github.com/discordjs/discord-api-types/issues/1393)) ([9665e02](https://github.com/discordjs/discord-api-types/commit/9665e0236734cf224e88da4a6ede4dc535ce53a5))
## [0.38.28](https://github.com/discordjs/discord-api-types/compare/0.38.27...0.38.28) (2025-10-04)
### Bug Fixes
* move `applied_tags` back to thread channels ([#1391](https://github.com/discordjs/discord-api-types/issues/1391)) ([00c4694](https://github.com/discordjs/discord-api-types/commit/00c46946a02ace495031c6d257b0820c4a0652cc))
## [0.38.27](https://github.com/discordjs/discord-api-types/compare/0.38.26...0.38.27) (2025-10-04)
### Bug Fixes
* `[@unstable](https://github.com/unstable)` screening ([#1389](https://github.com/discordjs/discord-api-types/issues/1389)) ([95b186d](https://github.com/discordjs/discord-api-types/commit/95b186deb7410ff5a667a1cbac5e7b6dd915f6fe))
* add `RESTPutAPIGuildIncidentActionsResult` ([#1388](https://github.com/discordjs/discord-api-types/issues/1388)) ([0c6d424](https://github.com/discordjs/discord-api-types/commit/0c6d4249b6e39b52607235b273bf0c46caa331dc))
* Narrow thread-related properties for channels ([#1377](https://github.com/discordjs/discord-api-types/issues/1377)) ([18cf4a5](https://github.com/discordjs/discord-api-types/commit/18cf4a514e644d039f18f55d4062318dbeb1c3f6))
* **RESTPutAPIGuildIncidentActionsJSONBody:** add `null` ([#1387](https://github.com/discordjs/discord-api-types/issues/1387)) ([6295858](https://github.com/discordjs/discord-api-types/commit/6295858de5d7bde4b2b289ef301d994ed78bf964))
## [0.38.26](https://github.com/discordjs/discord-api-types/compare/0.38.25...0.38.26) (2025-09-18)
### Bug Fixes
* add guild_id back to GatewayVoiceStateUpdateDispatchData ([#1346](https://github.com/discordjs/discord-api-types/issues/1346)) ([e52ac85](https://github.com/discordjs/discord-api-types/commit/e52ac85e9d60b4032bb21cd958cf032cad50643f))
## [0.38.25](https://github.com/discordjs/discord-api-types/compare/0.38.24...0.38.25) (2025-09-15)
### Features
* add RateLimited gateway event ([#1334](https://github.com/discordjs/discord-api-types/issues/1334)) ([14963d6](https://github.com/discordjs/discord-api-types/commit/14963d61d488af2be8d3655651fd0677ad4c46ed))
## [0.38.24](https://github.com/discordjs/discord-api-types/compare/0.38.23...0.38.24) (2025-09-10)
### Features
* **RESTPatchAPICurrentGuildMemberJSONBody:** Add `banner`, `avatar`, and `bio` ([#1356](https://github.com/discordjs/discord-api-types/issues/1356)) ([35a4084](https://github.com/discordjs/discord-api-types/commit/35a40846473eebfe5245656ee5437347ff2fa88f))
* **RESTPostAPIChannelThreadsResult:** narrow response ([#1364](https://github.com/discordjs/discord-api-types/issues/1364)) ([8eb66a1](https://github.com/discordjs/discord-api-types/commit/8eb66a1512e5b8c57ba7e4a85a18380664ac6219))
* Update invite types ([#1365](https://github.com/discordjs/discord-api-types/issues/1365)) ([35867c1](https://github.com/discordjs/discord-api-types/commit/35867c19e6942e82ac6b2bcd93f61853b0b41666))
## [0.38.23](https://github.com/discordjs/discord-api-types/compare/0.38.22...0.38.23) (2025-09-05)
### Bug Fixes
* add missing text display in modal submission ([#1362](https://github.com/discordjs/discord-api-types/issues/1362)) ([464a9c8](https://github.com/discordjs/discord-api-types/commit/464a9c8cbf613428c3da6b3a9ebd0da4bd827c2b))
* **RESTPatchAPIWebhookWithTokenMessageJSONBody:** add `flags` ([#1354](https://github.com/discordjs/discord-api-types/issues/1354)) ([af3907b](https://github.com/discordjs/discord-api-types/commit/af3907b10690c224dcd3106127fd67491262cc6c))
### Features
* add 400001 ([#1352](https://github.com/discordjs/discord-api-types/issues/1352)) ([ae09e2b](https://github.com/discordjs/discord-api-types/commit/ae09e2b9e47460b07907fc3b6e317bc1ae426663))
* More label components and text display in modals ([#1351](https://github.com/discordjs/discord-api-types/issues/1351)) ([fa05a75](https://github.com/discordjs/discord-api-types/commit/fa05a7503f59017efc16ba2ca6cfb3fc99d331a3))
## [0.38.22](https://github.com/discordjs/discord-api-types/compare/0.38.21...0.38.22) (2025-08-29)
### Features
* Support select in modals ([#1321](https://github.com/discordjs/discord-api-types/issues/1321)) ([3659c59](https://github.com/discordjs/discord-api-types/commit/3659c59ce7b3ee8c0281bf28499e733e1bc0752b))
## [0.38.21](https://github.com/discordjs/discord-api-types/compare/0.38.20...0.38.21) (2025-08-21)
### Features
* guest invites ([#1290](https://github.com/discordjs/discord-api-types/issues/1290)) ([1a37ae3](https://github.com/discordjs/discord-api-types/commit/1a37ae3eea156108e1add538b1d42c5fc2ce08ee))
* **PermissionFlagsBits:** add `PinMessages` ([#1340](https://github.com/discordjs/discord-api-types/issues/1340)) ([b05df17](https://github.com/discordjs/discord-api-types/commit/b05df17466ade5bf58578b8a230d9cb5ec9e1024))
## [0.38.20](https://github.com/discordjs/discord-api-types/compare/0.38.19...0.38.20) (2025-08-14)
## [0.38.19](https://github.com/discordjs/discord-api-types/compare/0.38.18...0.38.19) (2025-08-12)
### Features
* **GatewayActivity:** add url & status display type fields ([#1326](https://github.com/discordjs/discord-api-types/issues/1326)) ([5f9c1e1](https://github.com/discordjs/discord-api-types/commit/5f9c1e1b1c9f1a63d80718629fb2775b7bae62b3))
## [0.38.18](https://github.com/discordjs/discord-api-types/compare/0.38.17...0.38.18) (2025-07-31)
### Bug Fixes
* Deprecate API related to guild ownership ([#1316](https://github.com/discordjs/discord-api-types/issues/1316)) ([4afd0c1](https://github.com/discordjs/discord-api-types/commit/4afd0c13fde05fa7117ecdeaf20534545cfdb005))
### Features
* **GuildFeature:** add `GUILD_TAGS` ([#1315](https://github.com/discordjs/discord-api-types/issues/1315)) ([03f02a5](https://github.com/discordjs/discord-api-types/commit/03f02a5a9ee2e533b58b7790c4deb7ad571e5a92))
## [0.38.17](https://github.com/discordjs/discord-api-types/compare/0.38.16...0.38.17) (2025-07-24)
### Features
* **auditLog:** add `AUTO_MODERATION_QUARANTINE_USER` ([#1310](https://github.com/discordjs/discord-api-types/issues/1310)) ([a72e454](https://github.com/discordjs/discord-api-types/commit/a72e4545a3409388a9c5ec0b5555ecc258de0ac2))
* **GuildMemberFlags:** add `AutoModQuarantinedGuildTag` ([#1309](https://github.com/discordjs/discord-api-types/issues/1309)) ([a41e646](https://github.com/discordjs/discord-api-types/commit/a41e646d3d9b9f6bb15c2f6165043ef8042b26bf))
## [0.38.16](https://github.com/discordjs/discord-api-types/compare/0.38.15...0.38.16) (2025-07-13)
### Bug Fixes
* **APIApplicationCommandChannelOption:** exclude directory channels ([#1300](https://github.com/discordjs/discord-api-types/issues/1300)) ([574e5c1](https://github.com/discordjs/discord-api-types/commit/574e5c12bddd2c515fd2b96b5705b5ef9f9d2787))
## [0.38.15](https://github.com/discordjs/discord-api-types/compare/0.38.14...0.38.15) (2025-07-03)
### Bug Fixes
* **CDNRoutes:** correct `guildTagBadge` route ([#1291](https://github.com/discordjs/discord-api-types/issues/1291)) ([1fee633](https://github.com/discordjs/discord-api-types/commit/1fee6339bf05a98900d8703207c77b8e6d047f24))
### Features
* user guild tags ([#1287](https://github.com/discordjs/discord-api-types/issues/1287)) ([3245f7d](https://github.com/discordjs/discord-api-types/commit/3245f7de92c40d3b74014dbf97a2c0eafea8bcd2))
## [0.38.14](https://github.com/discordjs/discord-api-types/compare/0.38.13...0.38.14) (2025-06-30)
### Features
* role gradient colors ([#1281](https://github.com/discordjs/discord-api-types/issues/1281)) ([7fbb3e3](https://github.com/discordjs/discord-api-types/commit/7fbb3e3310bde5ea0e977afb83ea21bda0220633))
* support new pinned messages routes ([#1254](https://github.com/discordjs/discord-api-types/issues/1254)) ([71c6d26](https://github.com/discordjs/discord-api-types/commit/71c6d2609f1713827e95c5f617011c053cd3eb6a))
* **voice:** add close codes 4021 and 4022 ([#1283](https://github.com/discordjs/discord-api-types/issues/1283)) ([6b05db5](https://github.com/discordjs/discord-api-types/commit/6b05db5a2f9ea540e34e8429c07b96411d418b73))
## [0.38.13](https://github.com/discordjs/discord-api-types/compare/0.38.12...0.38.13) (2025-06-23)
### Features
* **APIUser:** add `collectibles` ([#1274](https://github.com/discordjs/discord-api-types/issues/1274)) ([77cb327](https://github.com/discordjs/discord-api-types/commit/77cb32746f47247a4229910db8ec64f844038529))
## [0.38.12](https://github.com/discordjs/discord-api-types/compare/0.38.11...0.38.12) (2025-06-16)
### Features
* **APIApplication:** add `approximate_user_authorization_count` ([#1272](https://github.com/discordjs/discord-api-types/issues/1272)) ([91d8516](https://github.com/discordjs/discord-api-types/commit/91d851628d2078e70b79e4aa7e464297eca745ce))
* **APIUnfurledMediaItem:** add `attachment_id` ([#1273](https://github.com/discordjs/discord-api-types/issues/1273)) ([b2da18c](https://github.com/discordjs/discord-api-types/commit/b2da18c634c4e20112ce13a8e0a5e6db50063acc))
## [0.38.11](https://github.com/discordjs/discord-api-types/compare/0.38.10...0.38.11) (2025-06-04)
### Bug Fixes
* **voice:** add `max_dave_protocol_version` to identify ([#1260](https://github.com/discordjs/discord-api-types/issues/1260)) ([83d34ef](https://github.com/discordjs/discord-api-types/commit/83d34ef00c4e25d5050c7fc47562b3faa9125215))
* **voice:** add clients connect and client disconnect recieve payload ([#1261](https://github.com/discordjs/discord-api-types/issues/1261)) ([121fb47](https://github.com/discordjs/discord-api-types/commit/121fb47f4c0c51d6149bcf051ffc5bae04b1bba8))
* **voice:** fix remaining payload typos ([#1262](https://github.com/discordjs/discord-api-types/issues/1262)) ([d71276c](https://github.com/discordjs/discord-api-types/commit/d71276cb5f3423a81780494d041694356b8cb49c))
### Features
* voice v8 payloads & MLS voice opcodes ([#1257](https://github.com/discordjs/discord-api-types/issues/1257)) ([ebf313c](https://github.com/discordjs/discord-api-types/commit/ebf313c49c1d78cb1aaf238cfbae7c114f6215cf))
## [0.38.10](https://github.com/discordjs/discord-api-types/compare/0.38.9...0.38.10) (2025-06-02)
## [0.38.9](https://github.com/discordjs/discord-api-types/compare/0.38.8...0.38.9) (2025-05-31)

3
deno/README.md generated
View File

@@ -82,15 +82,12 @@ The exports of each API version is split into three main parts:
- Everything exported with the `Gateway` prefix represents data that ONLY comes from or is directly related to the Gateway.
- Everything exported with the `REST` prefix represents data that ONLY comes from or is directly related to the REST API.
- For endpoint options, they will follow the following structure: `REST<HTTP Method><Type><Query|(JSON|FormData)Body|Result>` where the type represents what it will return.
- For example, `RESTPostAPIChannelMessageJSONBody` or `RESTGetAPIGatewayBotInfoResult`.
- Some exported types (specifically OAuth2 related ones) may not respect this entire structure due to the nature of the fields. They will start with either `RESTOAuth2` or with something similar to `REST<HTTP Method>OAuth2`
- If a type ends with `Result`, then it represents the expected result by calling its accompanying route.
- Types that are exported as `never` usually mean the result will be a `204 No Content`, so you can safely ignore it. This does **not** account for errors.
- Anything else that is miscellaneous will be exported based on what it represents (for example the `REST` route object).

287
deno/gateway/v10.ts generated
View File

@@ -3,7 +3,6 @@
*/
import type { Snowflake } from '../globals.ts';
import type { GatewayPresenceUpdate } from '../payloads/v10/gateway.ts';
import type {
APIApplication,
APIApplicationCommandPermission,
@@ -16,7 +15,6 @@ import type {
APIGuildMember,
APIGuildScheduledEvent,
APIInteraction,
APIMessage,
APIRole,
APIStageInstance,
APISticker,
@@ -25,10 +23,9 @@ import type {
APIUnavailableGuild,
APIUser,
GatewayActivity,
GatewayPresenceUpdate as RawGatewayPresenceUpdate,
GatewayThreadListSync as RawGatewayThreadListSync,
GatewayPresenceUpdate,
GatewayThreadListSync,
GatewayThreadMembersUpdate as RawGatewayThreadMembersUpdate,
APIVoiceState,
InviteTargetType,
PresenceUpdateStatus,
AutoModerationRuleTriggerType,
@@ -39,6 +36,17 @@ import type {
APISoundboardSound,
GuildChannelType,
ThreadChannelType,
APIBaseGuild,
APIBaseGuildMember,
APIBaseVoiceState,
APIBaseVoiceGuildMember,
APIGuildMemberJoined,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
APIGuildMemberUser,
GatewayGuildMembersChunkPresence,
APIBaseMessage,
APIVoiceState,
} from '../payloads/v10/mod.ts';
import type { ReactionType } from '../rest/v10/mod.ts';
import type { _Nullable } from '../utils/internals.ts';
@@ -278,6 +286,7 @@ export enum GatewayDispatchEvents {
MessageReactionRemoveEmoji = 'MESSAGE_REACTION_REMOVE_EMOJI',
MessageUpdate = 'MESSAGE_UPDATE',
PresenceUpdate = 'PRESENCE_UPDATE',
RateLimited = 'RATE_LIMITED',
Ready = 'READY',
Resumed = 'RESUMED',
StageInstanceCreate = 'STAGE_INSTANCE_CREATE',
@@ -366,6 +375,7 @@ export type GatewayDispatchPayload =
| GatewayMessageReactionRemoveEmojiDispatch
| GatewayMessageUpdateDispatch
| GatewayPresenceUpdateDispatch
| GatewayRateLimitedDispatch
| GatewayReadyDispatch
| GatewayResumedDispatch
| GatewaySoundboardSoundsDispatch
@@ -789,9 +799,7 @@ export type GatewayEntitlementModifyDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#entitlement-create}
*/
export type GatewayEntitlementCreateDispatchData = Omit<GatewayEntitlementModifyDispatchData, 'ends_at'> & {
ends_at: GatewayEntitlementModifyDispatchData['ends_at'] | null;
};
export type GatewayEntitlementCreateDispatchData = GatewayEntitlementModifyDispatchData;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#entitlement-create}
@@ -873,7 +881,7 @@ export interface GatewayGuildCreateDispatchData extends APIGuild {
*
* @see {@link https://discord.com/developers/docs/resources/voice#voice-state-object}
*/
voice_states: Omit<APIVoiceState, 'guild_id'>[];
voice_states: APIBaseVoiceState[];
/**
* Users in the guild
*
@@ -953,7 +961,7 @@ export type GatewayGuildDeleteDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-delete}
*/
export interface GatewayGuildDeleteDispatchData extends Omit<APIUnavailableGuild, 'unavailable'> {
export interface GatewayGuildDeleteDispatchData extends APIBaseGuild {
/**
* `true` if this guild is unavailable due to an outage
*
@@ -1127,15 +1135,18 @@ export type GatewayGuildMemberUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-member-update}
*/
export type GatewayGuildMemberUpdateDispatchData = _Nullable<Pick<APIGuildMember, 'joined_at'>> &
Omit<APIGuildMember, 'deaf' | 'flags' | 'joined_at' | 'mute' | 'user'> &
Partial<Pick<APIGuildMember, 'deaf' | 'flags' | 'mute'>> &
Required<Pick<APIGuildMember, 'avatar' | 'banner' | 'user'>> & {
/**
* The id of the guild
*/
guild_id: Snowflake;
};
export interface GatewayGuildMemberUpdateDispatchData
extends APIGuildMemberJoined,
APIBaseGuildMember,
Partial<APIBaseVoiceGuildMember>,
Partial<APIFlaggedGuildMember>,
Required<APIGuildMemberAvatar>,
Required<APIGuildMemberUser> {
/**
* The id of the guild
*/
guild_id: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk}
@@ -1145,11 +1156,6 @@ export type GatewayGuildMembersChunkDispatch = _DataPayload<
GatewayGuildMembersChunkDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#update-presence}
*/
export type GatewayGuildMembersChunkPresence = Omit<RawGatewayPresenceUpdate, 'guild_id'>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk}
*/
@@ -1556,6 +1562,10 @@ export interface GatewayInviteCreateDispatchData {
* How many times the invite has been used (always will be `0`)
*/
uses: 0;
/**
* The expiration date of this invite.
*/
expires_at: string | null;
}
/**
@@ -1597,7 +1607,7 @@ export type GatewayMessageCreateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-create}
*/
export type GatewayMessageCreateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
export interface GatewayMessageCreateDispatchData extends GatewayMessageEventExtraFields, APIBaseMessage {}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-update}
@@ -1610,7 +1620,24 @@ export type GatewayMessageUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-update}
*/
export type GatewayMessageUpdateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
export interface GatewayMessageUpdateDispatchData extends GatewayMessageEventExtraFields, APIBaseMessage {}
export interface APIGuildMemberNoUser
extends APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
NonNullable<APIGuildMemberJoined>,
APIBaseVoiceGuildMember {}
export interface APIUserWithMember extends APIUser {
/**
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMemberNoUser;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-create-message-create-extra-fields}
@@ -1628,17 +1655,13 @@ export interface GatewayMessageEventExtraFields {
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: Omit<APIGuildMember, 'user'>;
member?: APIGuildMemberNoUser;
/**
* Users specifically mentioned in the message
*
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
mentions: APIUserWithMember[];
}
/**
@@ -1696,25 +1719,74 @@ export interface GatewayMessageDeleteBulkDispatchData {
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-add}
*/
export type GatewayMessageReactionAddDispatch = GatewayMessageReactionData<GatewayDispatchEvents.MessageReactionAdd>;
export interface GatewayMessageReactionAddDispatchData extends GatewayMessageReactionRemoveDispatchData {
/**
* The member who reacted if this happened in a guild
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
/**
* The id of the user that posted the message that was reacted to
*/
message_author_id?: Snowflake;
/**
* Colors used for super-reaction animation in "#rrggbb" format
*/
burst_colors?: string[];
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-add}
*/
export type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d'];
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatch = GatewayMessageReactionData<
GatewayDispatchEvents.MessageReactionRemove,
'burst_colors' | 'member' | 'message_author_id'
export type GatewayMessageReactionAddDispatch = _DataPayload<
GatewayDispatchEvents.MessageReactionAdd,
GatewayMessageReactionAddDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d'];
export interface GatewayMessageReactionRemoveDispatchData {
/**
* The id of the user
*/
user_id: Snowflake;
/**
* The id of the channel
*/
channel_id: Snowflake;
/**
* The id of the message
*/
message_id: Snowflake;
/**
* The id of the guild
*/
guild_id?: Snowflake;
/**
* The emoji used to react
*
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
*/
emoji: APIEmoji;
/**
* True if this is a super-reaction
*/
burst: boolean;
/**
* The type of reaction
*/
type: ReactionType;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatch = _DataPayload<
GatewayDispatchEvents.MessageReactionRemove,
GatewayMessageReactionRemoveDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-all}
@@ -1758,7 +1830,7 @@ export type GatewayPresenceUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#presence-update}
*/
export type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate;
export type GatewayPresenceUpdateDispatchData = GatewayPresenceUpdate;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#stage-instance-create}
@@ -1810,7 +1882,7 @@ export type GatewayThreadListSyncDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#thread-list-sync}
*/
export type GatewayThreadListSyncDispatchData = RawGatewayThreadListSync;
export type GatewayThreadListSyncDispatchData = GatewayThreadListSync;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#thread-members-update}
@@ -2147,6 +2219,73 @@ export interface GatewayMessagePollVoteDispatchData {
answer_id: number;
}
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedDispatch<
Opcode extends keyof GatewayOpcodeRateLimitMetadataMap = keyof GatewayOpcodeRateLimitMetadataMap,
> = _DataPayload<GatewayDispatchEvents.RateLimited, GatewayRateLimitedDispatchData<Opcode>>;
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedRequestGuildMembersDispatch =
GatewayRateLimitedDispatch<GatewayOpcodes.RequestGuildMembers>;
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export interface GatewayRateLimitedDispatchData<
Opcode extends keyof GatewayOpcodeRateLimitMetadataMap = keyof GatewayOpcodeRateLimitMetadataMap,
> {
/**
* {@link GatewayOpcodes | Gateway opcode} of the event that was rate limited
*/
opcode: Opcode;
/**
* The number of seconds to wait before submitting another request
*/
retry_after: number;
/**
* Metadata for the event that was rate limited
*/
meta: GatewayOpcodeRateLimitMetadataMap[Opcode];
}
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedRequestGuildMembersDispatchData =
GatewayRateLimitedDispatchData<GatewayOpcodes.RequestGuildMembers>;
/**
* Map of gateway opcodes to their rate limit metadata types
*
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited-rate-limit-metadata-for-opcode-structure}
*/
export interface GatewayOpcodeRateLimitMetadataMap {
[GatewayOpcodes.RequestGuildMembers]: GatewayRequestGuildMemberRateLimitMetadata;
}
/**
* Types of metadata that can be received in a {@link GatewayRateLimitedDispatchData.meta} field
*/
export type GatewayRateLimitedMetadata = GatewayOpcodeRateLimitMetadataMap[keyof GatewayOpcodeRateLimitMetadataMap];
/**
* Rate limit metadata for the {@link GatewayOpcodes.RequestGuildMembers} opcode
*/
export interface GatewayRequestGuildMemberRateLimitMetadata {
/**
* Id of the guild members were requested for
*/
guild_id: Snowflake;
/**
* Nonce used to identify the {@link GatewayGuildMembersChunkDispatch} response
*/
nonce?: string;
}
// #endregion Dispatch Payloads
// #region Sendable Payloads
@@ -2415,7 +2554,7 @@ export type GatewayActivityUpdateData = Pick<GatewayActivity, 'name' | 'state' |
// #endregion Sendable Payloads
// #region Shared
export interface _BasePayload {
export interface _BaseBasePayload {
/**
* Opcode for the payload
*/
@@ -2424,6 +2563,9 @@ export interface _BasePayload {
* Event data
*/
d?: unknown;
}
export interface _BasePayload {
/**
* Sequence number, used for resuming sessions and heartbeats
*/
@@ -2434,10 +2576,10 @@ export interface _BasePayload {
t?: string;
}
export type _NonDispatchPayload = Omit<_BasePayload, 's' | 't'> & {
export interface _NonDispatchPayload extends _BaseBasePayload {
t: null;
s: null;
};
}
export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown> extends _BasePayload {
op: GatewayOpcodes.Dispatch;
@@ -2445,57 +2587,10 @@ export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown>
d: D;
}
// This is not used internally anymore, just remains to be non-breaking
export type GatewayMessageReactionData<E extends GatewayDispatchEvents, O extends string = never> = _DataPayload<
E,
Omit<
{
/**
* The id of the user
*/
user_id: Snowflake;
/**
* The id of the channel
*/
channel_id: Snowflake;
/**
* The id of the message
*/
message_id: Snowflake;
/**
* The id of the guild
*/
guild_id?: Snowflake;
/**
* The member who reacted if this happened in a guild
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
/**
* The emoji used to react
*
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
*/
emoji: APIEmoji;
/**
* The id of the user that posted the message that was reacted to
*/
message_author_id?: Snowflake;
/**
* True if this is a super-reaction
*/
burst: boolean;
/**
* Colors used for super-reaction animation in "#rrggbb" format
*/
burst_colors: string[];
/**
* The type of reaction
*/
type: ReactionType;
},
O
>
Omit<GatewayMessageReactionAddDispatchData, O>
>;
export interface GatewayMessageReactionRemoveData {

287
deno/gateway/v9.ts generated
View File

@@ -3,7 +3,6 @@
*/
import type { Snowflake } from '../globals.ts';
import type { GatewayPresenceUpdate } from '../payloads/v9/gateway.ts';
import type {
APIApplication,
APIApplicationCommandPermission,
@@ -16,7 +15,6 @@ import type {
APIGuildMember,
APIGuildScheduledEvent,
APIInteraction,
APIMessage,
APIRole,
APIStageInstance,
APISticker,
@@ -25,10 +23,9 @@ import type {
APIUnavailableGuild,
APIUser,
GatewayActivity,
GatewayPresenceUpdate as RawGatewayPresenceUpdate,
GatewayThreadListSync as RawGatewayThreadListSync,
GatewayPresenceUpdate,
GatewayThreadListSync,
GatewayThreadMembersUpdate as RawGatewayThreadMembersUpdate,
APIVoiceState,
InviteTargetType,
PresenceUpdateStatus,
AutoModerationRuleTriggerType,
@@ -39,6 +36,17 @@ import type {
GuildChannelType,
ThreadChannelType,
APIEntitlement,
APIBaseGuild,
APIBaseGuildMember,
APIBaseVoiceState,
APIBaseVoiceGuildMember,
APIFlaggedGuildMember,
APIGuildMemberUser,
APIGuildMemberAvatar,
GatewayGuildMembersChunkPresence,
APIBaseMessage,
APIGuildMemberJoined,
APIVoiceState,
} from '../payloads/v9/mod.ts';
import type { ReactionType } from '../rest/v9/mod.ts';
import type { _Nullable } from '../utils/internals.ts';
@@ -277,6 +285,7 @@ export enum GatewayDispatchEvents {
MessageReactionRemoveEmoji = 'MESSAGE_REACTION_REMOVE_EMOJI',
MessageUpdate = 'MESSAGE_UPDATE',
PresenceUpdate = 'PRESENCE_UPDATE',
RateLimited = 'RATE_LIMITED',
Ready = 'READY',
Resumed = 'RESUMED',
StageInstanceCreate = 'STAGE_INSTANCE_CREATE',
@@ -365,6 +374,7 @@ export type GatewayDispatchPayload =
| GatewayMessageReactionRemoveEmojiDispatch
| GatewayMessageUpdateDispatch
| GatewayPresenceUpdateDispatch
| GatewayRateLimitedDispatch
| GatewayReadyDispatch
| GatewayResumedDispatch
| GatewaySoundboardSoundsDispatch
@@ -788,9 +798,7 @@ export type GatewayEntitlementModifyDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#entitlement-create}
*/
export type GatewayEntitlementCreateDispatchData = Omit<GatewayEntitlementModifyDispatchData, 'ends_at'> & {
ends_at: GatewayEntitlementModifyDispatchData['ends_at'] | null;
};
export type GatewayEntitlementCreateDispatchData = GatewayEntitlementModifyDispatchData;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#entitlement-create}
@@ -872,7 +880,7 @@ export interface GatewayGuildCreateDispatchData extends APIGuild {
*
* @see {@link https://discord.com/developers/docs/resources/voice#voice-state-object}
*/
voice_states: Omit<APIVoiceState, 'guild_id'>[];
voice_states: APIBaseVoiceState[];
/**
* Users in the guild
*
@@ -952,7 +960,7 @@ export type GatewayGuildDeleteDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-delete}
*/
export interface GatewayGuildDeleteDispatchData extends Omit<APIUnavailableGuild, 'unavailable'> {
export interface GatewayGuildDeleteDispatchData extends APIBaseGuild {
/**
* `true` if this guild is unavailable due to an outage
*
@@ -1126,15 +1134,18 @@ export type GatewayGuildMemberUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-member-update}
*/
export type GatewayGuildMemberUpdateDispatchData = _Nullable<Pick<APIGuildMember, 'joined_at'>> &
Omit<APIGuildMember, 'deaf' | 'flags' | 'joined_at' | 'mute' | 'user'> &
Partial<Pick<APIGuildMember, 'deaf' | 'flags' | 'mute'>> &
Required<Pick<APIGuildMember, 'avatar' | 'banner' | 'user'>> & {
/**
* The id of the guild
*/
guild_id: Snowflake;
};
export interface GatewayGuildMemberUpdateDispatchData
extends APIGuildMemberJoined,
APIBaseGuildMember,
Partial<APIBaseVoiceGuildMember>,
Partial<APIFlaggedGuildMember>,
Required<APIGuildMemberUser>,
Required<APIGuildMemberAvatar> {
/**
* The id of the guild
*/
guild_id: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk}
@@ -1144,11 +1155,6 @@ export type GatewayGuildMembersChunkDispatch = _DataPayload<
GatewayGuildMembersChunkDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#update-presence}
*/
export type GatewayGuildMembersChunkPresence = Omit<RawGatewayPresenceUpdate, 'guild_id'>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk}
*/
@@ -1555,6 +1561,10 @@ export interface GatewayInviteCreateDispatchData {
* How many times the invite has been used (always will be `0`)
*/
uses: 0;
/**
* The expiration date of this invite.
*/
expires_at: string | null;
}
/**
@@ -1596,7 +1606,7 @@ export type GatewayMessageCreateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-create}
*/
export type GatewayMessageCreateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
export interface GatewayMessageCreateDispatchData extends GatewayMessageEventExtraFields, APIBaseMessage {}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-update}
@@ -1609,7 +1619,24 @@ export type GatewayMessageUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-update}
*/
export type GatewayMessageUpdateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
export interface GatewayMessageUpdateDispatchData extends GatewayMessageEventExtraFields, APIBaseMessage {}
export interface APIGuildMemberNoUser
extends APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
NonNullable<APIGuildMemberJoined>,
APIBaseVoiceGuildMember {}
export interface APIUserWithMember extends APIUser {
/**
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMemberNoUser;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-create-message-create-extra-fields}
@@ -1627,17 +1654,13 @@ export interface GatewayMessageEventExtraFields {
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: Omit<APIGuildMember, 'user'>;
member?: APIGuildMemberNoUser;
/**
* Users specifically mentioned in the message
*
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
mentions: APIUserWithMember[];
}
/**
@@ -1695,25 +1718,74 @@ export interface GatewayMessageDeleteBulkDispatchData {
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-add}
*/
export type GatewayMessageReactionAddDispatch = GatewayMessageReactionData<GatewayDispatchEvents.MessageReactionAdd>;
export interface GatewayMessageReactionAddDispatchData extends GatewayMessageReactionRemoveDispatchData {
/**
* The member who reacted if this happened in a guild
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
/**
* The id of the user that posted the message that was reacted to
*/
message_author_id?: Snowflake;
/**
* Colors used for super-reaction animation in "#rrggbb" format
*/
burst_colors?: string[];
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-add}
*/
export type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d'];
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatch = GatewayMessageReactionData<
GatewayDispatchEvents.MessageReactionRemove,
'burst_colors' | 'member' | 'message_author_id'
export type GatewayMessageReactionAddDispatch = _DataPayload<
GatewayDispatchEvents.MessageReactionAdd,
GatewayMessageReactionAddDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d'];
export interface GatewayMessageReactionRemoveDispatchData {
/**
* The id of the user
*/
user_id: Snowflake;
/**
* The id of the channel
*/
channel_id: Snowflake;
/**
* The id of the message
*/
message_id: Snowflake;
/**
* The id of the guild
*/
guild_id?: Snowflake;
/**
* The emoji used to react
*
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
*/
emoji: APIEmoji;
/**
* True if this is a super-reaction
*/
burst: boolean;
/**
* The type of reaction
*/
type: ReactionType;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatch = _DataPayload<
GatewayDispatchEvents.MessageReactionRemove,
GatewayMessageReactionRemoveDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-all}
@@ -1757,7 +1829,7 @@ export type GatewayPresenceUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#presence-update}
*/
export type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate;
export type GatewayPresenceUpdateDispatchData = GatewayPresenceUpdate;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#stage-instance-create}
@@ -1809,7 +1881,7 @@ export type GatewayThreadListSyncDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#thread-list-sync}
*/
export type GatewayThreadListSyncDispatchData = RawGatewayThreadListSync;
export type GatewayThreadListSyncDispatchData = GatewayThreadListSync;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#thread-members-update}
@@ -2146,6 +2218,73 @@ export interface GatewayMessagePollVoteDispatchData {
answer_id: number;
}
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedDispatch<
Opcode extends keyof GatewayOpcodeRateLimitMetadataMap = keyof GatewayOpcodeRateLimitMetadataMap,
> = _DataPayload<GatewayDispatchEvents.RateLimited, GatewayRateLimitedDispatchData<Opcode>>;
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedRequestGuildMembersDispatch =
GatewayRateLimitedDispatch<GatewayOpcodes.RequestGuildMembers>;
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export interface GatewayRateLimitedDispatchData<
Opcode extends keyof GatewayOpcodeRateLimitMetadataMap = keyof GatewayOpcodeRateLimitMetadataMap,
> {
/**
* {@link GatewayOpcodes | Gateway opcode} of the event that was rate limited
*/
opcode: Opcode;
/**
* The number of seconds to wait before submitting another request
*/
retry_after: number;
/**
* Metadata for the event that was rate limited
*/
meta: GatewayOpcodeRateLimitMetadataMap[Opcode];
}
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedRequestGuildMembersDispatchData =
GatewayRateLimitedDispatchData<GatewayOpcodes.RequestGuildMembers>;
/**
* Map of gateway opcodes to their rate limit metadata types
*
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited-rate-limit-metadata-for-opcode-structure}
*/
export interface GatewayOpcodeRateLimitMetadataMap {
[GatewayOpcodes.RequestGuildMembers]: GatewayRequestGuildMemberRateLimitMetadata;
}
/**
* Types of metadata that can be received in a {@link GatewayRateLimitedDispatchData.meta} field
*/
export type GatewayRateLimitedMetadata = GatewayOpcodeRateLimitMetadataMap[keyof GatewayOpcodeRateLimitMetadataMap];
/**
* Rate limit metadata for the {@link GatewayOpcodes.RequestGuildMembers} opcode
*/
export interface GatewayRequestGuildMemberRateLimitMetadata {
/**
* Id of the guild members were requested for
*/
guild_id: Snowflake;
/**
* Nonce used to identify the {@link GatewayGuildMembersChunkDispatch} response
*/
nonce?: string;
}
// #endregion Dispatch Payloads
// #region Sendable Payloads
@@ -2414,7 +2553,8 @@ export type GatewayActivityUpdateData = Pick<GatewayActivity, 'name' | 'state' |
// #endregion Sendable Payloads
// #region Shared
export interface _BasePayload {
export interface _BaseBasePayload {
/**
* Opcode for the payload
*/
@@ -2423,6 +2563,8 @@ export interface _BasePayload {
* Event data
*/
d?: unknown;
}
export interface _BasePayload extends _BaseBasePayload {
/**
* Sequence number, used for resuming sessions and heartbeats
*/
@@ -2433,10 +2575,10 @@ export interface _BasePayload {
t?: string;
}
export type _NonDispatchPayload = Omit<_BasePayload, 's' | 't'> & {
export interface _NonDispatchPayload extends _BaseBasePayload {
t: null;
s: null;
};
}
export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown> extends _BasePayload {
op: GatewayOpcodes.Dispatch;
@@ -2444,57 +2586,10 @@ export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown>
d: D;
}
// This is not used internally anymore, just remains to be non-breaking
export type GatewayMessageReactionData<E extends GatewayDispatchEvents, O extends string = never> = _DataPayload<
E,
Omit<
{
/**
* The id of the user
*/
user_id: Snowflake;
/**
* The id of the channel
*/
channel_id: Snowflake;
/**
* The id of the message
*/
message_id: Snowflake;
/**
* The id of the guild
*/
guild_id?: Snowflake;
/**
* The member who reacted if this happened in a guild
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
/**
* The emoji used to react
*
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
*/
emoji: APIEmoji;
/**
* The id of the user that posted the message that was reacted to
*/
message_author_id?: Snowflake;
/**
* True if this is a super-reaction
*/
burst: boolean;
/**
* Colors used for super-reaction animation in "#rrggbb" format
*/
burst_colors?: string[];
/**
* The type of reaction
*/
type: ReactionType;
},
O
>
Omit<GatewayMessageReactionAddDispatchData, O>
>;
export interface GatewayMessageReactionRemoveData {

4
deno/globals.ts generated
View File

@@ -76,8 +76,8 @@ export const FormattingPatterns = {
*
* The `timestamp` and `style` group properties are present on the `exec` result of this expression
*/
// eslint-disable-next-line prefer-named-capture-group
Timestamp: /<t:(?<timestamp>-?\d{1,13})(:(?<style>[DFRTdft]))?>/,
// eslint-disable-next-line prefer-named-capture-group, unicorn/better-regex
Timestamp: /<t:(?<timestamp>-?\d{1,13})(:(?<style>[DFRSTdfst]))?>/,
/**
* Regular expression for matching strictly default styled timestamps
*

View File

@@ -288,6 +288,18 @@ export const PermissionFlagsBits = {
* Applies to channel types: Text, Voice, Stage
*/
UseExternalApps: 1n << 50n,
/**
* Allows pinning and unpinning messages
*
* Applies to channel types: Text
*/
PinMessages: 1n << 51n,
/**
* @unstable Allows for bypassing slowmode restrictions. Not (yet) documented.
*
* Applies to text-based and thread-based channel types.
*/
BypassSlowmode: 1n << 52n,
} as const;
/**

View File

@@ -5,7 +5,7 @@ import type { ApplicationCommandOptionType } from './shared.ts';
export interface APIApplicationCommandChannelOption
extends APIApplicationCommandOptionBase<ApplicationCommandOptionType.Channel> {
channel_types?: Exclude<ChannelType, ChannelType.DM | ChannelType.GroupDM>[];
channel_types?: Exclude<ChannelType, ChannelType.DM | ChannelType.GroupDM | ChannelType.GuildDirectory>[];
}
export type APIApplicationCommandInteractionDataChannelOption = APIInteractionDataOptionBase<

View File

@@ -1,5 +1,5 @@
import type { Snowflake } from '../../../../globals.ts';
import type { APIMessage } from '../../channel.ts';
import type { APIMessage } from '../../message.ts';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands.ts';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIUserInteractionDataResolved } from '../base.ts';
import type { APIBaseApplicationCommandInteractionData } from './internals.ts';

View File

@@ -1,15 +1,15 @@
import type { Permissions, Snowflake } from '../../../globals.ts';
import type { APIRole, ApplicationIntegrationType, InteractionContextType, Locale } from '../../../v10.ts';
import type { APIChannel, APIPartialChannel, APIThreadChannel, ChannelType, ThreadChannelType } from '../channel.ts';
import type {
APIAttachment,
APIChannel,
APIMessage,
APIPartialChannel,
APIThreadChannel,
ChannelType,
ThreadChannelType,
} from '../channel.ts';
import type { APIGuildMember, APIPartialInteractionGuild } from '../guild.ts';
APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMember,
APIGuildMemberAvatar,
APIGuildMemberJoined,
APIPartialInteractionGuild,
} from '../guild.ts';
import type { APIAttachment, APIMessage } from '../message.ts';
import type { APIEntitlement } from '../monetization.ts';
import type { APIUser } from '../user.ts';
import type { InteractionType } from './responses.ts';
@@ -253,7 +253,11 @@ export type APIInteractionDataResolvedChannel =
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'deaf' | 'mute' | 'user'> {
export interface APIInteractionDataResolvedGuildMember
extends APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
APIGuildMemberJoined {
permissions: Permissions;
}

View File

@@ -1,6 +1,6 @@
import type { Snowflake } from '../../../globals.ts';
import type { ComponentType } from '../channel.ts';
import type { APIBaseInteraction, InteractionType } from '../interactions.ts';
import type { ComponentType } from '../message.ts';
import type {
APIDMInteractionWrapper,
APIGuildInteractionWrapper,

View File

@@ -1,27 +1,80 @@
import type { APIActionRowComponent, APIComponentInModalActionRow } from '../channel.ts';
import type {
APIBaseInteraction,
APIDMInteractionWrapper,
APIGuildInteractionWrapper,
APIInteractionDataResolved,
ComponentType,
InteractionType,
} from '../mod.ts';
import type { APIBaseComponent } from '../message.ts';
export interface ModalSubmitComponent {
type: ComponentType;
export interface APIBaseModalSubmitComponent<T extends ComponentType> extends APIBaseComponent<T> {
custom_id: string;
}
export interface APIModalSubmitTextInputComponent extends APIBaseModalSubmitComponent<ComponentType.TextInput> {
value: string;
}
export interface ModalSubmitActionRowComponent
extends Omit<APIActionRowComponent<APIComponentInModalActionRow>, 'components'> {
components: ModalSubmitComponent[];
export interface APIModalSubmitStringSelectComponent extends APIBaseModalSubmitComponent<ComponentType.StringSelect> {
values: string[];
}
export interface APIModalSubmitUserSelectComponent extends APIBaseModalSubmitComponent<ComponentType.UserSelect> {
values: string[];
}
export interface APIModalSubmitRoleSelectComponent extends APIBaseModalSubmitComponent<ComponentType.RoleSelect> {
values: string[];
}
export interface APIModalSubmitMentionableSelectComponent
extends APIBaseModalSubmitComponent<ComponentType.MentionableSelect> {
values: string[];
}
export interface APIModalSubmitChannelSelectComponent extends APIBaseModalSubmitComponent<ComponentType.ChannelSelect> {
values: string[];
}
export interface APIModalSubmitFileUploadComponent extends APIBaseModalSubmitComponent<ComponentType.FileUpload> {
values: string[];
}
export type ModalSubmitComponent =
| APIModalSubmitChannelSelectComponent
| APIModalSubmitFileUploadComponent
| APIModalSubmitMentionableSelectComponent
| APIModalSubmitRoleSelectComponent
| APIModalSubmitStringSelectComponent
| APIModalSubmitTextInputComponent
| APIModalSubmitUserSelectComponent;
export interface ModalSubmitActionRowComponent extends APIBaseComponent<ComponentType.ActionRow> {
components: APIModalSubmitTextInputComponent[];
}
export interface ModalSubmitTextDisplayComponent extends APIBaseComponent<ComponentType.TextDisplay> {}
export interface ModalSubmitLabelComponent extends APIBaseComponent<ComponentType.Label> {
component: ModalSubmitComponent;
}
export type APIModalSubmissionComponent =
| ModalSubmitActionRowComponent
| ModalSubmitLabelComponent
| ModalSubmitTextDisplayComponent;
/**
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-modal-submit-data-structure}
*/
export interface APIModalSubmission {
/**
* Data for users, members, channels, and roles in the modal's auto-populated select menus
*
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure}
*/
resolved?: APIInteractionDataResolved;
/**
* A developer-defined identifier for the component, max 100 characters
*/
@@ -29,7 +82,7 @@ export interface APIModalSubmission {
/**
* A list of child components
*/
components: ModalSubmitActionRowComponent[];
components: APIModalSubmissionComponent[];
}
/**

View File

@@ -1,5 +1,10 @@
import type { RESTPostAPIWebhookWithTokenJSONBody } from '../../../v10.ts';
import type { APIActionRowComponent, APIComponentInModalActionRow } from '../channel.ts';
import type {
APIActionRowComponent,
APIComponentInModalActionRow,
APILabelComponent,
APITextDisplayComponent,
} from '../message.ts';
import type { APIApplicationCommandOptionChoice } from './applicationCommands.ts';
/**
@@ -126,6 +131,11 @@ export interface APICommandAutocompleteInteractionResponseCallbackData {
choices?: APIApplicationCommandOptionChoice[];
}
export type APIModalInteractionResponseCallbackComponent =
| APIActionRowComponent<APIComponentInModalActionRow>
| APILabelComponent
| APITextDisplayComponent;
/**
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-modal}
*/
@@ -140,6 +150,8 @@ export interface APIModalInteractionResponseCallbackData {
title: string;
/**
* Between 1 and 5 (inclusive) components that make up the modal
*
* @remarks Using action rows inside modals is deprecated.
*/
components: APIActionRowComponent<APIComponentInModalActionRow>[];
components: APIModalInteractionResponseCallbackComponent[];
}

View File

@@ -111,9 +111,13 @@ export interface APIApplication {
*/
approximate_guild_count?: number;
/**
* Approximate count of users that have installed the app
* Approximate count of users that have installed the app (authorized with `application.commands` as a scope)
*/
approximate_user_install_count?: number;
/**
* Approximate count of users that have OAuth2 authorizations for the app
*/
approximate_user_authorization_count?: number;
/**
* Array of redirect URIs for the application
*/

View File

@@ -10,7 +10,13 @@ import type {
AutoModerationRuleEventType,
AutoModerationRuleTriggerType,
} from './autoModeration.ts';
import type { APIChannel, APIGuildForumDefaultReactionEmoji, APIGuildForumTag, APIOverwrite } from './channel.ts';
import type {
APIChannel,
APIGuildForumDefaultReactionEmoji,
APIGuildForumTag,
APIOverwrite,
VideoQualityMode,
} from './channel.ts';
import type {
APIGuildIntegration,
APIGuildIntegrationType,
@@ -207,6 +213,7 @@ export enum AuditLogEvent {
AutoModerationBlockMessage,
AutoModerationFlagToChannel,
AutoModerationUserCommunicationDisabled,
AutoModerationQuarantineUser,
CreatorMonetizationRequestCreated = 150,
CreatorMonetizationTermsAccepted,
@@ -232,6 +239,7 @@ export interface APIAuditLogOptions {
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
* - AUTO_MODERATION_QUARANTINE_USER
*/
auto_moderation_rule_name?: string;
/**
@@ -241,6 +249,7 @@ export interface APIAuditLogOptions {
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
* - AUTO_MODERATION_QUARANTINE_USER
*/
auto_moderation_rule_trigger_type?: AuditLogRuleTriggerType;
/**
@@ -272,6 +281,7 @@ export interface APIAuditLogOptions {
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
* - AUTO_MODERATION_QUARANTINE_USER
*/
channel_id?: Snowflake;
@@ -418,7 +428,9 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyRateLimitPerUser
| APIAuditLogChangeKeyRecurrenceRule
| APIAuditLogChangeKeyRegion
| APIAuditLogChangeKeyRTCRegion
| APIAuditLogChangeKeyRulesChannelId
| APIAuditLogChangeKeySafetyAlertsChannelId
| APIAuditLogChangeKeySoundId
| APIAuditLogChangeKeySplashHash
| APIAuditLogChangeKeyStatus
@@ -435,6 +447,7 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyUses
| APIAuditLogChangeKeyVanityURLCode
| APIAuditLogChangeKeyVerificationLevel
| APIAuditLogChangeKeyVideoQualityMode
| APIAuditLogChangeKeyVolume
| APIAuditLogChangeKeyWidgetChannelId
| APIAuditLogChangeKeyWidgetEnabled;
@@ -484,6 +497,11 @@ export type APIAuditLogChangeKeyOwnerId = APIAuditLogChangeData<'owner_id', Snow
*/
export type APIAuditLogChangeKeyRegion = APIAuditLogChangeData<'region', string>;
/**
* Returned when a channel's rtc_region is changed
*/
export type APIAuditLogChangeKeyRTCRegion = APIAuditLogChangeData<'rtc_region', string>;
/**
* Returned when a guild's preferred_locale is changed
*/
@@ -524,6 +542,11 @@ export type APIAuditLogChangeKeyMFALevel = APIAuditLogChangeData<'mfa_level', Gu
*/
export type APIAuditLogChangeKeyVerificationLevel = APIAuditLogChangeData<'verification_level', GuildVerificationLevel>;
/**
* Returned when a channel's video_quality_mode is changed
*/
export type APIAuditLogChangeKeyVideoQualityMode = APIAuditLogChangeData<'video_quality_mode', VideoQualityMode>;
/**
* Returned when a guild's explicit_content_filter is changed
*/

File diff suppressed because it is too large Load Diff

View File

@@ -60,9 +60,9 @@ export interface APIGatewaySessionStartLimit {
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#presence-update-presence-update-event-fields}
* @see {@link https://discord.com/developers/docs/topics/gateway-events#update-presence}
*/
export interface GatewayPresenceUpdate {
export interface GatewayGuildMembersChunkPresence {
/**
* The user presence is being updated for
*
@@ -72,10 +72,6 @@ export interface GatewayPresenceUpdate {
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
*/
user: Partial<APIUser> & Pick<APIUser, 'id'>;
/**
* ID of the guild
*/
guild_id: Snowflake;
/**
* Either "idle", "dnd", "online", or "offline"
*/
@@ -94,6 +90,16 @@ export interface GatewayPresenceUpdate {
client_status?: GatewayPresenceClientStatus;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#presence-update-presence-update-event-fields}
*/
export interface GatewayPresenceUpdate extends GatewayGuildMembersChunkPresence {
/**
* ID of the guild
*/
guild_id: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#update-presence-status-types}
*/
@@ -176,14 +182,28 @@ export interface GatewayActivity {
* Application id for the game
*/
application_id?: Snowflake;
/**
* Controls which field is displayed in the user's status text in the member list
*
* @see {@link https://discord.com/developers/docs/events/gateway-events#activity-object-status-display-types}
*/
status_display_type?: StatusDisplayType | null;
/**
* What the player is currently doing
*/
details?: string | null;
/**
* URL that is linked when clicking on the details text
*/
details_url?: string | null;
/**
* The user's current party status, or the text used for a custom status
*/
state?: string | null;
/**
* URL that is linked when clicking on the state text
*/
state_url?: string | null;
/**
* The emoji used for a custom status
*
@@ -274,6 +294,26 @@ export enum ActivityType {
Competing,
}
/**
* Controls which field is used in the user's status message
*
* @see {@link https://discord.com/developers/docs/events/gateway-events#activity-object-status-display-types}
*/
export enum StatusDisplayType {
/**
* Playing \{name\}
*/
Name,
/**
* Playing \{state\}
*/
State,
/**
* Playing \{details\}
*/
Details,
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-timestamps}
*/
@@ -311,7 +351,7 @@ export interface GatewayActivityParty {
* @see {@link 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>
Record<'large_image' | 'large_text' | 'large_url' | 'small_image' | 'small_text' | 'small_url', string>
>;
/**

View File

@@ -11,14 +11,17 @@ import type { APIRole } from './permissions.ts';
import type { APISticker } from './sticker.ts';
import type { APIAvatarDecorationData, APIUser } from './user.ts';
/**
* @see {@link https://discord.com/developers/docs/resources/guild#unavailable-guild-object}
*/
export interface APIUnavailableGuild {
export interface APIBaseGuild {
/**
* Guild id
*/
id: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#unavailable-guild-object}
*/
export interface APIUnavailableGuild extends APIBaseGuild {
/**
* `true` if this guild is unavailable due to an outage
*/
@@ -28,7 +31,7 @@ export interface APIUnavailableGuild {
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-object-guild-structure}
*/
export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'>, Pick<APIGuild, 'welcome_screen'> {
export interface APIPartialGuild extends APIBaseGuild {
/**
* Guild name (2-100 characters, excluding trailing and leading whitespace)
*/
@@ -71,6 +74,12 @@ export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'
* The vanity url code for the guild
*/
vanity_url_code?: string | null;
/**
* The welcome screen of a Community guild, shown to new members
*
* Returned in the invite object
*/
welcome_screen?: APIGuildWelcomeScreen;
}
/**
@@ -255,12 +264,6 @@ export interface APIGuild extends APIPartialGuild {
* returned from the `GET /guilds/<id>` and `/users/@me/guilds` (OAuth2) endpoints when `with_counts` is `true`
*/
approximate_presence_count?: number;
/**
* The welcome screen of a Community guild, shown to new members
*
* Returned in the invite object
*/
welcome_screen?: APIGuildWelcomeScreen;
/**
* The nsfw level of the guild
*
@@ -562,6 +565,24 @@ export enum GuildFeature {
* Guild has enabled the welcome screen
*/
WelcomeScreenEnabled = 'WELCOME_SCREEN_ENABLED',
/**
* Guild has access to set guild tags
*/
GuildTags = 'GUILD_TAGS',
/**
* Guild is able to set gradient colors to roles
*/
EnhancedRoleColors = 'ENHANCED_ROLE_COLORS',
/**
* Guild has access to guest invites
*/
GuestsEnabled = 'GUESTS_ENABLED',
/**
* Guild has migrated to the new pin messages permission
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
PinPermissionMigrationComplete = 'PIN_PERMISSION_MIGRATION_COMPLETE',
}
/**
@@ -641,57 +662,23 @@ export interface APIGuildWidgetSettings {
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMember {
/**
* The user this guild member represents
*
* **This field won't be included in the member object attached to `MESSAGE_CREATE` and `MESSAGE_UPDATE` gateway events.**
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
*/
user: APIUser;
export interface APIBaseGuildMember {
/**
* This users guild nickname
*/
nick?: string | null;
/**
* The member's guild avatar hash
*/
avatar?: string | null;
/**
* The member's guild banner hash
*/
banner?: string | null;
/**
* Array of role object ids
*
* @see {@link https://discord.com/developers/docs/topics/permissions#role-object}
*/
roles: Snowflake[];
/**
* When the user joined the guild
*/
joined_at: string;
/**
* When the user started boosting the guild
*
* @see {@link https://support.discord.com/hc/articles/360028038352}
*/
premium_since?: string | null;
/**
* Whether the user is deafened in voice channels
*/
deaf: boolean;
/**
* Whether the user is muted in voice channels
*/
mute: boolean;
/**
* Guild member flags represented as a bit set
*
* @defaultValue `0`
*/
flags: GuildMemberFlags;
/**
* Whether the user has not yet passed the guild's Membership Screening requirements
*
@@ -710,6 +697,81 @@ export interface APIGuildMember {
avatar_decoration_data?: APIAvatarDecorationData | null;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIFlaggedGuildMember {
/**
* Guild member flags represented as a bit set
*
* @defaultValue `0`
*/
flags: GuildMemberFlags;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMemberJoined {
/**
* When the user joined the guild
*/
joined_at: string | null;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMemberAvatar {
/**
* The member's guild avatar hash
*/
avatar?: string | null;
/**
* The member's guild banner hash
*/
banner?: string | null;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIBaseVoiceGuildMember {
/**
* Whether the user is deafened in voice channels
*/
deaf: boolean;
/**
* Whether the user is muted in voice channels
*/
mute: boolean;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMemberUser {
/**
* The user this guild member represents
*
* **This field won't be included in the member object attached to `MESSAGE_CREATE` and `MESSAGE_UPDATE` gateway events.**
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
*/
user: APIUser;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMember
extends APIBaseGuildMember,
APIBaseVoiceGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
APIGuildMemberJoined,
APIGuildMemberUser {}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object-guild-member-flags}
*/
@@ -755,6 +817,10 @@ export enum GuildMemberFlags {
* Member has dismissed the DM settings upsell
*/
DmSettingsUpsellAcknowledged = 1 << 9,
/**
* Member's guild tag is blocked by AutoMod
*/
AutoModQuarantinedGuildTag = 1 << 10,
}
/**
@@ -1014,6 +1080,9 @@ export interface APIGuildWelcomeScreenChannel {
emoji_name: string | null;
}
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export interface APIGuildMembershipScreening {
/**
* When the fields were last updated
@@ -1029,8 +1098,9 @@ export interface APIGuildMembershipScreening {
description: string | null;
}
// TODO: make this a union based on the type in the future, when new types are added
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export interface APIGuildMembershipScreeningField {
/**
* The type of field
@@ -1050,6 +1120,9 @@ export interface APIGuildMembershipScreeningField {
required: boolean;
}
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export enum MembershipScreeningFieldType {
/**
* Server Rules
@@ -1170,6 +1243,9 @@ export enum GuildOnboardingPromptType {
Dropdown,
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#incidents-data-object}
*/
export interface APIIncidentsData {
/**
* When invites get enabled again

View File

@@ -6,7 +6,6 @@ import type { APIApplication } from './application.ts';
import type { APIInviteChannel } from './channel.ts';
import type { APIGuild } from './guild.ts';
import type { APIGuildScheduledEvent } from './guildScheduledEvent.ts';
import type { APIInviteStageInstance } from './stageInstance.ts';
import type { APIUser } from './user.ts';
export type APIInviteGuild = Pick<
@@ -77,16 +76,16 @@ export interface APIInvite {
*/
approximate_member_count?: number;
/**
* The expiration date of this invite, returned from the `GET /invites/<code>` endpoint when `with_expiration` is `true`
* The expiration date of this invite
*/
expires_at?: string | null;
expires_at: string | null;
/**
* The stage instance data if there is a public stage instance in the stage channel this invite is for
*
* @deprecated
* {@link https://github.com/discord/discord-api-docs/pull/4479 | discord-api-docs#4479}
* @deprecated This has been removed from the documentation.
* {@link https://github.com/discord/discord-api-docs/pull/7779 | discord-api-docs#7779}
*/
stage_instance?: APIInviteStageInstance;
stage_instance?: never;
/**
* The guild scheduled event data, returned from the `GET /invites/<code>` endpoint when `guild_scheduled_event_id` is a valid guild scheduled event id
*/
@@ -95,6 +94,17 @@ export interface APIInvite {
* The invite type
*/
type: InviteType;
/**
* The flags of the invite
*/
flags?: InviteFlags;
}
/**
* @see {@link https://discord.com/developers/docs/resources/invite#invite-object-guild-invite-flags}
*/
export enum InviteFlags {
IsGuestInvite = 1 << 0,
}
/**

1822
deno/payloads/v10/message.ts generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -9,6 +9,7 @@ export * from './guild.ts';
export * from './guildScheduledEvent.ts';
export * from './interactions.ts';
export * from './invite.ts';
export * from './message.ts';
export * from './monetization.ts';
export * from './oauth2.ts';
export * from './permissions.ts';

View File

@@ -18,8 +18,14 @@ export interface APIRole {
name: string;
/**
* Integer representation of hexadecimal color code
*
* @remarks `color` will still be returned by the API, but using the `colors` field is recommended when doing requests.
*/
color: number;
/**
* The role's colors
*/
colors?: APIRoleColors;
/**
* If this role is pinned in the user listing
*/
@@ -99,3 +105,23 @@ export enum RoleFlags {
*/
InPrompt = 1 << 0,
}
/**
* @see {@link https://discord.com/developers/docs/topics/permissions#role-colors-object}
*/
export interface APIRoleColors {
/**
* The primary color for the role
*/
primary_color: number;
/**
* The secondary color for the role, this will make the role a gradient between the other provided colors
*/
secondary_color: number | null;
/**
* The tertiary color for the role, this will turn the gradient into a holographic style
*
* @remarks When sending `tertiary_color` the API enforces the role color to be a holographic style with values of `primary_color = 11127295`, `secondary_color = 16759788`, and `tertiary_color = 16761760`.
*/
tertiary_color: number | null;
}

View File

@@ -4,22 +4,14 @@
import type { APIPartialEmoji } from './emoji.ts';
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-object-poll-object-structure}
*/
export interface APIPoll {
export interface APIBasePoll {
/**
* The question of the poll
*/
question: APIPollMedia;
/**
* Each of the answers available in the poll, up to 10
*/
answers: APIPollAnswer[];
/**
* The time when the poll ends (IS08601 timestamp)
*/
expiry: string;
}
export interface APIPollDefaults {
/**
* Whether a user can select multiple answers
*
@@ -32,6 +24,20 @@ export interface APIPoll {
* @defaultValue `PollLayoutType.Default`
*/
layout_type: PollLayoutType;
}
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-object-poll-object-structure}
*/
export interface APIPoll extends APIBasePoll, APIPollDefaults {
/**
* Each of the answers available in the poll, up to 10
*/
answers: APIPollAnswer[];
/**
* The time when the poll ends (IS08601 timestamp)
*/
expiry: string;
/**
* The results of the poll
*/
@@ -64,20 +70,23 @@ export interface APIPollMedia {
emoji?: APIPartialEmoji;
}
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-answer-object-poll-answer-object-structure}
*/
export interface APIPollAnswer {
/**
* The ID of the answer. Starts at `1` for the first answer and goes up sequentially
*/
answer_id: number;
export interface APIBasePollAnswer {
/**
* The data of the answer
*/
poll_media: APIPollMedia;
}
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-answer-object-poll-answer-object-structure}
*/
export interface APIPollAnswer extends APIBasePollAnswer {
/**
* The ID of the answer. Starts at `1` for the first answer and goes up sequentially
*/
answer_id: number;
}
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-results-object-poll-results-object-structure}
*/

View File

@@ -96,6 +96,18 @@ export interface APIUser {
* @see {@link https://discord.com/developers/docs/resources/user#avatar-decoration-data-object}
*/
avatar_decoration_data?: APIAvatarDecorationData | null;
/**
* The data for the user's collectibles
*
* @see {@link https://discord.com/developers/docs/resources/user#collectibles}
*/
collectibles?: APICollectibles | null;
/**
* The user's primary guild
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object-user-primary-guild}
*/
primary_guild?: APIUserPrimaryGuild | null;
}
/**
@@ -348,3 +360,81 @@ export interface APIAvatarDecorationData {
*/
sku_id: Snowflake;
}
/**
* The collectibles the user has, excluding Avatar Decorations and Profile Effects.
*
* @see {@link https://discord.com/developers/docs/resources/user#collectibles}
*/
export interface APICollectibles {
/**
* Object mapping of {@link APINameplateData}
*/
nameplate?: APINameplateData;
}
/**
* @see {@link https://discord.com/developers/docs/resources/user#nameplate}
*/
export interface APINameplateData {
/**
* ID of the nameplate SKU
*/
sku_id: Snowflake;
/**
* Path to the nameplate asset
*
* @example `nameplates/nameplates/twilight/`
*/
asset: string;
/**
* The label of this nameplate. Currently unused
*/
label: string;
/**
* Background color of the nameplate
*/
palette: NameplatePalette;
}
/**
* Background color of a nameplate.
*/
export enum NameplatePalette {
Berry = 'berry',
BubbleGum = 'bubble_gum',
Clover = 'clover',
Cobalt = 'cobalt',
Crimson = 'crimson',
Forest = 'forest',
Lemon = 'lemon',
Sky = 'sky',
Teal = 'teal',
Violet = 'violet',
White = 'white',
}
/**
* @see {@link https://discord.com/developers/docs/resources/user#user-object-user-primary-guild}
*/
export interface APIUserPrimaryGuild {
/**
* The id of the user's primary guild
*/
identity_guild_id: Snowflake | null;
/**
* Whether the user is displaying the primary guild's server tag.
* This can be `null` if the system clears the identity, e.g. because the server no longer supports tags
*/
identity_enabled: boolean | null;
/**
* The text of the user's server tag. Limited to 4 characters
*/
tag: string | null;
/**
* The server tag badge hash
*
* @see {@link https://discord.com/developers/docs/reference#image-formatting}
*/
badge: string | null;
}

View File

@@ -14,11 +14,7 @@ export type GatewayVoiceState = APIVoiceState;
/**
* @see {@link https://discord.com/developers/docs/resources/voice#voice-state-object}
*/
export interface APIVoiceState {
/**
* The guild id this voice state is for
*/
guild_id?: Snowflake;
export interface APIBaseVoiceState {
/**
* The channel id this user is connected to
*/
@@ -30,6 +26,7 @@ export interface APIVoiceState {
/**
* The guild member this voice state is for
*
* @remarks The member field will have `joined_at` set to `null` if the member was invited as a guest.
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
@@ -71,6 +68,16 @@ export interface APIVoiceState {
request_to_speak_timestamp: string | null;
}
/**
* @see {@link https://discord.com/developers/docs/resources/voice#voice-state-object}
*/
export interface APIVoiceState extends APIBaseVoiceState {
/**
* The guild id this voice state is for
*/
guild_id?: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/resources/voice#voice-region-object}
*/

View File

@@ -91,6 +91,8 @@ export type APIWebhookEventBody =
APIWebhookEventApplicationDeauthorizedData
>
| APIWebhookEventEventBase<ApplicationWebhookEventType.EntitlementCreate, APIWebhookEventEntitlementCreateData>
| APIWebhookEventEventBase<ApplicationWebhookEventType.EntitlementDelete, APIWebhookEventEntitlementDeleteData>
| APIWebhookEventEventBase<ApplicationWebhookEventType.EntitlementUpdate, APIWebhookEventEntitlementUpdateData>
| APIWebhookEventEventBase<ApplicationWebhookEventType.QuestUserEnrollment, APIWebhookEventQuestUserEnrollmentData>;
export interface APIWebhookEventApplicationAuthorizedData {
@@ -112,9 +114,6 @@ export interface APIWebhookEventApplicationAuthorizedData {
guild?: APIGuild;
}
/**
* @unstable
*/
export interface APIWebhookEventApplicationDeauthorizedData {
/**
* User who deauthorized the app
@@ -124,6 +123,16 @@ export interface APIWebhookEventApplicationDeauthorizedData {
export type APIWebhookEventEntitlementCreateData = APIEntitlement;
/**
* @unstable
*/
export type APIWebhookEventEntitlementDeleteData = APIEntitlement;
/**
* @unstable
*/
export type APIWebhookEventEntitlementUpdateData = APIEntitlement;
export type APIWebhookEventQuestUserEnrollmentData = never;
export interface APIWebhookEventBase<Type extends ApplicationWebhookType, Event> {
@@ -184,14 +193,24 @@ export enum ApplicationWebhookEventType {
ApplicationAuthorized = 'APPLICATION_AUTHORIZED',
/**
* Sent when an app was deauthorized by a user
*
* @unstable
*/
ApplicationDeauthorized = 'APPLICATION_DEAUTHORIZED',
/**
* Entitlement was created
*/
EntitlementCreate = 'ENTITLEMENT_CREATE',
/**
* Entitlement was updated
*
* @unstable This event is not yet documented but can be enabled from the developer portal
*/
EntitlementUpdate = 'ENTITLEMENT_UPDATE',
/**
* Entitlement was deleted
*
* @unstable This event is not yet documented but can be enabled from the developer portal
*/
EntitlementDelete = 'ENTITLEMENT_DELETE',
/**
* User was added to a Quest (currently unavailable)
*/

View File

@@ -5,7 +5,7 @@ import type { ApplicationCommandOptionType } from './shared.ts';
export interface APIApplicationCommandChannelOption
extends APIApplicationCommandOptionBase<ApplicationCommandOptionType.Channel> {
channel_types?: Exclude<ChannelType, ChannelType.DM | ChannelType.GroupDM>[];
channel_types?: Exclude<ChannelType, ChannelType.DM | ChannelType.GroupDM | ChannelType.GuildDirectory>[];
}
export type APIApplicationCommandInteractionDataChannelOption = APIInteractionDataOptionBase<

View File

@@ -1,5 +1,5 @@
import type { Snowflake } from '../../../../globals.ts';
import type { APIMessage } from '../../channel.ts';
import type { APIMessage } from '../../message.ts';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands.ts';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIUserInteractionDataResolved } from '../base.ts';
import type { APIBaseApplicationCommandInteractionData } from './internals.ts';

View File

@@ -1,15 +1,15 @@
import type { Permissions, Snowflake } from '../../../globals.ts';
import type { APIRole, ApplicationIntegrationType, InteractionContextType, Locale } from '../../../v9.ts';
import type { APIChannel, APIPartialChannel, APIThreadChannel, ChannelType, ThreadChannelType } from '../channel.ts';
import type {
APIAttachment,
APIChannel,
APIMessage,
APIPartialChannel,
APIThreadChannel,
ChannelType,
ThreadChannelType,
} from '../channel.ts';
import type { APIGuildMember, APIPartialInteractionGuild } from '../guild.ts';
APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMember,
APIGuildMemberAvatar,
APIGuildMemberJoined,
APIPartialInteractionGuild,
} from '../guild.ts';
import type { APIAttachment, APIMessage } from '../message.ts';
import type { APIEntitlement } from '../monetization.ts';
import type { APIUser } from '../user.ts';
import type { InteractionType } from './responses.ts';
@@ -256,7 +256,11 @@ export type APIInteractionDataResolvedChannel =
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'deaf' | 'mute' | 'user'> {
export interface APIInteractionDataResolvedGuildMember
extends APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
APIGuildMemberJoined {
permissions: Permissions;
}

View File

@@ -1,6 +1,6 @@
import type { Snowflake } from '../../../globals.ts';
import type { ComponentType } from '../channel.ts';
import type { APIBaseInteraction, InteractionType } from '../interactions.ts';
import type { ComponentType } from '../message.ts';
import type {
APIDMInteractionWrapper,
APIGuildInteractionWrapper,

View File

@@ -1,27 +1,80 @@
import type { APIActionRowComponent, APIComponentInModalActionRow } from '../channel.ts';
import type {
APIBaseInteraction,
APIDMInteractionWrapper,
APIGuildInteractionWrapper,
APIInteractionDataResolved,
ComponentType,
InteractionType,
} from '../mod.ts';
import type { APIBaseComponent } from '../message.ts';
export interface ModalSubmitComponent {
type: ComponentType;
export interface APIBaseModalSubmitComponent<T extends ComponentType> extends APIBaseComponent<T> {
custom_id: string;
}
export interface APIModalSubmitTextInputComponent extends APIBaseModalSubmitComponent<ComponentType.TextInput> {
value: string;
}
export interface ModalSubmitActionRowComponent
extends Omit<APIActionRowComponent<APIComponentInModalActionRow>, 'components'> {
components: ModalSubmitComponent[];
export interface APIModalSubmitStringSelectComponent extends APIBaseModalSubmitComponent<ComponentType.StringSelect> {
values: string[];
}
export interface APIModalSubmitUserSelectComponent extends APIBaseModalSubmitComponent<ComponentType.UserSelect> {
values: string[];
}
export interface APIModalSubmitRoleSelectComponent extends APIBaseModalSubmitComponent<ComponentType.RoleSelect> {
values: string[];
}
export interface APIModalSubmitMentionableSelectComponent
extends APIBaseModalSubmitComponent<ComponentType.MentionableSelect> {
values: string[];
}
export interface APIModalSubmitChannelSelectComponent extends APIBaseModalSubmitComponent<ComponentType.ChannelSelect> {
values: string[];
}
export interface APIModalSubmitFileUploadComponent extends APIBaseModalSubmitComponent<ComponentType.FileUpload> {
values: string[];
}
export type ModalSubmitComponent =
| APIModalSubmitChannelSelectComponent
| APIModalSubmitFileUploadComponent
| APIModalSubmitMentionableSelectComponent
| APIModalSubmitRoleSelectComponent
| APIModalSubmitStringSelectComponent
| APIModalSubmitTextInputComponent
| APIModalSubmitUserSelectComponent;
export interface ModalSubmitActionRowComponent extends APIBaseComponent<ComponentType.ActionRow> {
components: APIModalSubmitTextInputComponent[];
}
export interface ModalSubmitTextDisplayComponent extends APIBaseComponent<ComponentType.TextDisplay> {}
export interface ModalSubmitLabelComponent extends APIBaseComponent<ComponentType.Label> {
component: ModalSubmitComponent;
}
export type APIModalSubmissionComponent =
| ModalSubmitActionRowComponent
| ModalSubmitLabelComponent
| ModalSubmitTextDisplayComponent;
/**
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-modal-submit-data-structure}
*/
export interface APIModalSubmission {
/**
* Data for users, members, channels, and roles in the modal's auto-populated select menus
*
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure}
*/
resolved?: APIInteractionDataResolved;
/**
* A developer-defined identifier for the component, max 100 characters
*/
@@ -29,7 +82,7 @@ export interface APIModalSubmission {
/**
* A list of child components
*/
components: ModalSubmitActionRowComponent[];
components: APIModalSubmissionComponent[];
}
/**

View File

@@ -1,5 +1,10 @@
import type { RESTPostAPIWebhookWithTokenJSONBody } from '../../../v9.ts';
import type { APIActionRowComponent, APIComponentInModalActionRow } from '../channel.ts';
import type {
APIActionRowComponent,
APIComponentInModalActionRow,
APILabelComponent,
APITextDisplayComponent,
} from '../message.ts';
import type { APIApplicationCommandOptionChoice } from './applicationCommands.ts';
/**
@@ -126,6 +131,11 @@ export interface APICommandAutocompleteInteractionResponseCallbackData {
choices?: APIApplicationCommandOptionChoice[];
}
export type APIModalInteractionResponseCallbackComponent =
| APIActionRowComponent<APIComponentInModalActionRow>
| APILabelComponent
| APITextDisplayComponent;
/**
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-modal}
*/
@@ -140,6 +150,8 @@ export interface APIModalInteractionResponseCallbackData {
title: string;
/**
* Between 1 and 5 (inclusive) components that make up the modal
*
* @remarks Using action rows inside modals is deprecated.
*/
components: APIActionRowComponent<APIComponentInModalActionRow>[];
components: APIModalInteractionResponseCallbackComponent[];
}

View File

@@ -111,9 +111,13 @@ export interface APIApplication {
*/
approximate_guild_count?: number;
/**
* Approximate count of users that have installed the app
* Approximate count of users that have installed the app (authorized with `application.commands` as a scope)
*/
approximate_user_install_count?: number;
/**
* Approximate count of users that have OAuth2 authorizations for the app
*/
approximate_user_authorization_count?: number;
/**
* Array of redirect URIs for the application
*/

View File

@@ -10,7 +10,13 @@ import type {
AutoModerationRuleEventType,
AutoModerationRuleTriggerType,
} from './autoModeration.ts';
import type { APIChannel, APIGuildForumDefaultReactionEmoji, APIGuildForumTag, APIOverwrite } from './channel.ts';
import type {
APIChannel,
APIGuildForumDefaultReactionEmoji,
APIGuildForumTag,
APIOverwrite,
VideoQualityMode,
} from './channel.ts';
import type {
APIGuildIntegration,
APIGuildIntegrationType,
@@ -207,6 +213,7 @@ export enum AuditLogEvent {
AutoModerationBlockMessage,
AutoModerationFlagToChannel,
AutoModerationUserCommunicationDisabled,
AutoModerationQuarantineUser,
CreatorMonetizationRequestCreated = 150,
CreatorMonetizationTermsAccepted,
@@ -232,6 +239,7 @@ export interface APIAuditLogOptions {
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
* - AUTO_MODERATION_QUARANTINE_USER
*/
auto_moderation_rule_name?: string;
/**
@@ -241,6 +249,7 @@ export interface APIAuditLogOptions {
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
* - AUTO_MODERATION_QUARANTINE_USER
*/
auto_moderation_rule_trigger_type?: AuditLogRuleTriggerType;
/**
@@ -272,6 +281,7 @@ export interface APIAuditLogOptions {
* - AUTO_MODERATION_BLOCK_MESSAGE
* - AUTO_MODERATION_FLAG_TO_CHANNEL
* - AUTO_MODERATION_USER_COMMUNICATION_DISABLED
* - AUTO_MODERATION_QUARANTINE_USER
*/
channel_id?: Snowflake;
@@ -418,7 +428,9 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyRateLimitPerUser
| APIAuditLogChangeKeyRecurrenceRule
| APIAuditLogChangeKeyRegion
| APIAuditLogChangeKeyRTCRegion
| APIAuditLogChangeKeyRulesChannelId
| APIAuditLogChangeKeySafetyAlertsChannelId
| APIAuditLogChangeKeySoundId
| APIAuditLogChangeKeySplashHash
| APIAuditLogChangeKeyStatus
@@ -435,6 +447,7 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyUses
| APIAuditLogChangeKeyVanityURLCode
| APIAuditLogChangeKeyVerificationLevel
| APIAuditLogChangeKeyVideoQualityMode
| APIAuditLogChangeKeyVolume
| APIAuditLogChangeKeyWidgetChannelId
| APIAuditLogChangeKeyWidgetEnabled;
@@ -484,6 +497,11 @@ export type APIAuditLogChangeKeyOwnerId = APIAuditLogChangeData<'owner_id', Snow
*/
export type APIAuditLogChangeKeyRegion = APIAuditLogChangeData<'region', string>;
/**
* Returned when a channel's rtc_region is changed
*/
export type APIAuditLogChangeKeyRTCRegion = APIAuditLogChangeData<'rtc_region', string>;
/**
* Returned when a guild's preferred_locale is changed
*/
@@ -524,6 +542,11 @@ export type APIAuditLogChangeKeyMFALevel = APIAuditLogChangeData<'mfa_level', Gu
*/
export type APIAuditLogChangeKeyVerificationLevel = APIAuditLogChangeData<'verification_level', GuildVerificationLevel>;
/**
* Returned when a channel's video_quality_mode is changed
*/
export type APIAuditLogChangeKeyVideoQualityMode = APIAuditLogChangeData<'video_quality_mode', VideoQualityMode>;
/**
* Returned when a guild's explicit_content_filter is changed
*/

File diff suppressed because it is too large Load Diff

View File

@@ -60,9 +60,9 @@ export interface APIGatewaySessionStartLimit {
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#presence-update-presence-update-event-fields}
* @see {@link https://discord.com/developers/docs/topics/gateway-events#update-presence}
*/
export interface GatewayPresenceUpdate {
export interface GatewayGuildMembersChunkPresence {
/**
* The user presence is being updated for
*
@@ -72,10 +72,6 @@ export interface GatewayPresenceUpdate {
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
*/
user: Partial<APIUser> & Pick<APIUser, 'id'>;
/**
* ID of the guild
*/
guild_id: Snowflake;
/**
* Either "idle", "dnd", "online", or "offline"
*/
@@ -94,6 +90,16 @@ export interface GatewayPresenceUpdate {
client_status?: GatewayPresenceClientStatus;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#presence-update-presence-update-event-fields}
*/
export interface GatewayPresenceUpdate extends GatewayGuildMembersChunkPresence {
/**
* ID of the guild
*/
guild_id: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#update-presence-status-types}
*/
@@ -167,14 +173,28 @@ export interface GatewayActivity {
* Application id for the game
*/
application_id?: Snowflake;
/**
* Controls which field is displayed in the user's status text in the member list
*
* @see {@link https://discord.com/developers/docs/events/gateway-events#activity-object-status-display-types}
*/
status_display_type?: StatusDisplayType | null;
/**
* What the player is currently doing
*/
details?: string | null;
/**
* URL that is linked when clicking on the details text
*/
details_url?: string | null;
/**
* The user's current party status, or the text used for a custom status
*/
state?: string | null;
/**
* URL that is linked when clicking on the state text
*/
state_url?: string | null;
/**
* The emoji used for a custom status
*
@@ -262,6 +282,26 @@ export enum ActivityType {
Competing,
}
/**
* Controls which field is used in the user's status message
*
* @see {@link https://discord.com/developers/docs/events/gateway-events#activity-object-status-display-types}
*/
export enum StatusDisplayType {
/**
* Playing \{name\}
*/
Name,
/**
* Playing \{state\}
*/
State,
/**
* Playing \{details\}
*/
Details,
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-timestamps}
*/
@@ -299,7 +339,7 @@ export interface GatewayActivityParty {
* @see {@link 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>
Record<'large_image' | 'large_text' | 'large_url' | 'small_image' | 'small_text' | 'small_url', string>
>;
/**

View File

@@ -11,14 +11,17 @@ import type { APIRole } from './permissions.ts';
import type { APISticker } from './sticker.ts';
import type { APIAvatarDecorationData, APIUser } from './user.ts';
/**
* @see {@link https://discord.com/developers/docs/resources/guild#unavailable-guild-object}
*/
export interface APIUnavailableGuild {
export interface APIBaseGuild {
/**
* Guild id
*/
id: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#unavailable-guild-object}
*/
export interface APIUnavailableGuild extends APIBaseGuild {
/**
* `true` if this guild is unavailable due to an outage
*/
@@ -28,7 +31,7 @@ export interface APIUnavailableGuild {
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-object-guild-structure}
*/
export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'>, Pick<APIGuild, 'welcome_screen'> {
export interface APIPartialGuild extends APIBaseGuild {
/**
* Guild name (2-100 characters, excluding trailing and leading whitespace)
*/
@@ -71,6 +74,12 @@ export interface APIPartialGuild extends Omit<APIUnavailableGuild, 'unavailable'
* The vanity url code for the guild
*/
vanity_url_code?: string | null;
/**
* The welcome screen of a Community guild, shown to new members
*
* Returned in the invite object
*/
welcome_screen?: APIGuildWelcomeScreen;
}
/**
@@ -255,12 +264,6 @@ export interface APIGuild extends APIPartialGuild {
* returned from the `GET /guilds/<id>` and `/users/@me/guilds` (OAuth2) endpoints when `with_counts` is `true`
*/
approximate_presence_count?: number;
/**
* The welcome screen of a Community guild, shown to new members
*
* Returned in the invite object
*/
welcome_screen?: APIGuildWelcomeScreen;
/**
* The nsfw level of the guild
*
@@ -554,6 +557,24 @@ export enum GuildFeature {
* Guild has enabled the welcome screen
*/
WelcomeScreenEnabled = 'WELCOME_SCREEN_ENABLED',
/**
* Guild has access to set guild tags
*/
GuildTags = 'GUILD_TAGS',
/**
* Guild is able to set gradient colors to roles
*/
EnhancedRoleColors = 'ENHANCED_ROLE_COLORS',
/**
* Guild has access to guest invites
*/
GuestsEnabled = 'GUESTS_ENABLED',
/**
* Guild has migrated to the new pin messages permission
*
* @unstable This feature is currently not documented by Discord, but has known value
*/
PinPermissionMigrationComplete = 'PIN_PERMISSION_MIGRATION_COMPLETE',
}
/**
@@ -633,57 +654,23 @@ export interface APIGuildWidgetSettings {
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMember {
/**
* The user this guild member represents
*
* **This field won't be included in the member object attached to `MESSAGE_CREATE` and `MESSAGE_UPDATE` gateway events.**
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
*/
user: APIUser;
export interface APIBaseGuildMember {
/**
* This users guild nickname
*/
nick?: string | null;
/**
* The member's guild avatar hash
*/
avatar?: string | null;
/**
* The member's guild banner hash
*/
banner?: string | null;
/**
* Array of role object ids
*
* @see {@link https://discord.com/developers/docs/topics/permissions#role-object}
*/
roles: Snowflake[];
/**
* When the user joined the guild
*/
joined_at: string;
/**
* When the user started boosting the guild
*
* @see {@link https://support.discord.com/hc/articles/360028038352}
*/
premium_since?: string | null;
/**
* Whether the user is deafened in voice channels
*/
deaf: boolean;
/**
* Whether the user is muted in voice channels
*/
mute: boolean;
/**
* Guild member flags represented as a bit set
*
* @defaultValue `0`
*/
flags: GuildMemberFlags;
/**
* Whether the user has not yet passed the guild's Membership Screening requirements
*
@@ -702,6 +689,81 @@ export interface APIGuildMember {
avatar_decoration_data?: APIAvatarDecorationData | null;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIFlaggedGuildMember {
/**
* Guild member flags represented as a bit set
*
* @defaultValue `0`
*/
flags: GuildMemberFlags;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMemberJoined {
/**
* When the user joined the guild
*/
joined_at: string | null;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMemberAvatar {
/**
* The member's guild avatar hash
*/
avatar?: string | null;
/**
* The member's guild banner hash
*/
banner?: string | null;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIBaseVoiceGuildMember {
/**
* Whether the user is deafened in voice channels
*/
deaf: boolean;
/**
* Whether the user is muted in voice channels
*/
mute: boolean;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMemberUser {
/**
* The user this guild member represents
*
* **This field won't be included in the member object attached to `MESSAGE_CREATE` and `MESSAGE_UPDATE` gateway events.**
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
*/
user: APIUser;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIGuildMember
extends APIBaseGuildMember,
APIBaseVoiceGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
APIGuildMemberJoined,
APIGuildMemberUser {}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object-guild-member-flags}
*/
@@ -747,6 +809,10 @@ export enum GuildMemberFlags {
* Member has dismissed the DM settings upsell
*/
DmSettingsUpsellAcknowledged = 1 << 9,
/**
* Member's guild tag is blocked by AutoMod
*/
AutoModQuarantinedGuildTag = 1 << 10,
}
/**
@@ -1006,6 +1072,9 @@ export interface APIGuildWelcomeScreenChannel {
emoji_name: string | null;
}
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export interface APIGuildMembershipScreening {
/**
* When the fields were last updated
@@ -1021,8 +1090,9 @@ export interface APIGuildMembershipScreening {
description: string | null;
}
// TODO: make this a union based on the type in the future, when new types are added
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export interface APIGuildMembershipScreeningField {
/**
* The type of field
@@ -1042,6 +1112,9 @@ export interface APIGuildMembershipScreeningField {
required: boolean;
}
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export enum MembershipScreeningFieldType {
/**
* Server Rules
@@ -1162,6 +1235,9 @@ export enum GuildOnboardingPromptType {
Dropdown,
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#incidents-data-object}
*/
export interface APIIncidentsData {
/**
* When invites get enabled again

View File

@@ -6,7 +6,6 @@ import type { APIApplication } from './application.ts';
import type { APIInviteChannel } from './channel.ts';
import type { APIGuild } from './guild.ts';
import type { APIGuildScheduledEvent } from './guildScheduledEvent.ts';
import type { APIInviteStageInstance } from './stageInstance.ts';
import type { APIUser } from './user.ts';
export type APIInviteGuild = Pick<
@@ -77,16 +76,16 @@ export interface APIInvite {
*/
approximate_member_count?: number;
/**
* The expiration date of this invite, returned from the `GET /invites/<code>` endpoint when `with_expiration` is `true`
* The expiration date of this invite
*/
expires_at?: string | null;
expires_at: string | null;
/**
* The stage instance data if there is a public stage instance in the stage channel this invite is for
*
* @deprecated
* {@link https://github.com/discord/discord-api-docs/pull/4479 | discord-api-docs#4479}
* @deprecated This has been removed from the documentation.
* {@link https://github.com/discord/discord-api-docs/pull/7779 | discord-api-docs#7779}
*/
stage_instance?: APIInviteStageInstance;
stage_instance?: never;
/**
* The guild scheduled event data, returned from the `GET /invites/<code>` endpoint when `guild_scheduled_event_id` is a valid guild scheduled event id
*/
@@ -95,6 +94,17 @@ export interface APIInvite {
* The invite type
*/
type: InviteType;
/**
* The flags of the invite
*/
flags?: InviteFlags;
}
/**
* @see {@link https://discord.com/developers/docs/resources/invite#invite-object-guild-invite-flags}
*/
export enum InviteFlags {
IsGuestInvite = 1 << 0,
}
/**

1817
deno/payloads/v9/message.ts generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -9,6 +9,7 @@ export * from './guild.ts';
export * from './guildScheduledEvent.ts';
export * from './interactions.ts';
export * from './invite.ts';
export * from './message.ts';
export * from './monetization.ts';
export * from './oauth2.ts';
export * from './permissions.ts';

View File

@@ -18,8 +18,14 @@ export interface APIRole {
name: string;
/**
* Integer representation of hexadecimal color code
*
* @remarks `color` will still be returned by the API, but using the `colors` field is recommended when doing requests.
*/
color: number;
/**
* The role's colors
*/
colors?: APIRoleColors;
/**
* If this role is pinned in the user listing
*/
@@ -99,3 +105,23 @@ export enum RoleFlags {
*/
InPrompt = 1 << 0,
}
/**
* @see {@link https://discord.com/developers/docs/topics/permissions#role-colors-object}
*/
export interface APIRoleColors {
/**
* The primary color for the role
*/
primary_color: number;
/**
* The secondary color for the role, this will make the role a gradient between the other provided colors
*/
secondary_color: number | null;
/**
* The tertiary color for the role, this will turn the gradient into a holographic style
*
* @remarks When sending `tertiary_color` the API enforces the role color to be a holographic style with values of `primary_color = 11127295`, `secondary_color = 16759788`, and `tertiary_color = 16761760`.
*/
tertiary_color: number | null;
}

View File

@@ -4,22 +4,14 @@
import type { APIPartialEmoji } from './emoji.ts';
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-object-poll-object-structure}
*/
export interface APIPoll {
export interface APIBasePoll {
/**
* The question of the poll
*/
question: APIPollMedia;
/**
* Each of the answers available in the poll, up to 10
*/
answers: APIPollAnswer[];
/**
* The time when the poll ends (IS08601 timestamp)
*/
expiry: string;
}
export interface APIPollDefaults {
/**
* Whether a user can select multiple answers
*
@@ -32,6 +24,20 @@ export interface APIPoll {
* @defaultValue `PollLayoutType.Default`
*/
layout_type: PollLayoutType;
}
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-object-poll-object-structure}
*/
export interface APIPoll extends APIBasePoll, APIPollDefaults {
/**
* Each of the answers available in the poll, up to 10
*/
answers: APIPollAnswer[];
/**
* The time when the poll ends (IS08601 timestamp)
*/
expiry: string;
/**
* The results of the poll
*/
@@ -64,20 +70,23 @@ export interface APIPollMedia {
emoji?: APIPartialEmoji;
}
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-answer-object-poll-answer-object-structure}
*/
export interface APIPollAnswer {
/**
* The ID of the answer. Starts at `1` for the first answer and goes up sequentially
*/
answer_id: number;
export interface APIBasePollAnswer {
/**
* The data of the answer
*/
poll_media: APIPollMedia;
}
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-answer-object-poll-answer-object-structure}
*/
export interface APIPollAnswer extends APIBasePollAnswer {
/**
* The ID of the answer. Starts at `1` for the first answer and goes up sequentially
*/
answer_id: number;
}
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-results-object-poll-results-object-structure}
*/

View File

@@ -96,6 +96,18 @@ export interface APIUser {
* @see {@link https://discord.com/developers/docs/resources/user#avatar-decoration-data-object}
*/
avatar_decoration_data?: APIAvatarDecorationData | null;
/**
* The data for the user's collectibles
*
* @see {@link https://discord.com/developers/docs/resources/user#collectibles}
*/
collectibles?: APICollectibles | null;
/**
* The user's primary guild
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object-user-primary-guild}
*/
primary_guild?: APIUserPrimaryGuild | null;
}
/**
@@ -348,3 +360,81 @@ export interface APIAvatarDecorationData {
*/
sku_id: Snowflake;
}
/**
* The collectibles the user has, excluding Avatar Decorations and Profile Effects.
*
* @see {@link https://discord.com/developers/docs/resources/user#collectibles}
*/
export interface APICollectibles {
/**
* Object mapping of {@link APINameplateData}
*/
nameplate?: APINameplateData;
}
/**
* @see {@link https://discord.com/developers/docs/resources/user#nameplate}
*/
export interface APINameplateData {
/**
* ID of the nameplate SKU
*/
sku_id: Snowflake;
/**
* Path to the nameplate asset
*
* @example `nameplates/nameplates/twilight/`
*/
asset: string;
/**
* The label of this nameplate. Currently unused
*/
label: string;
/**
* Background color of the nameplate
*/
palette: NameplatePalette;
}
/**
* Background color of a nameplate.
*/
export enum NameplatePalette {
Berry = 'berry',
BubbleGum = 'bubble_gum',
Clover = 'clover',
Cobalt = 'cobalt',
Crimson = 'crimson',
Forest = 'forest',
Lemon = 'lemon',
Sky = 'sky',
Teal = 'teal',
Violet = 'violet',
White = 'white',
}
/**
* @see {@link https://discord.com/developers/docs/resources/user#user-object-user-primary-guild}
*/
export interface APIUserPrimaryGuild {
/**
* The id of the user's primary guild
*/
identity_guild_id: Snowflake | null;
/**
* Whether the user is displaying the primary guild's server tag.
* This can be `null` if the system clears the identity, e.g. because the server no longer supports tags
*/
identity_enabled: boolean | null;
/**
* The text of the user's server tag. Limited to 4 characters
*/
tag: string | null;
/**
* The server tag badge hash
*
* @see {@link https://discord.com/developers/docs/reference#image-formatting}
*/
badge: string | null;
}

View File

@@ -11,14 +11,7 @@ import type { APIGuildMember } from './guild.ts';
*/
export type GatewayVoiceState = APIVoiceState;
/**
* @see {@link https://discord.com/developers/docs/resources/voice#voice-state-object}
*/
export interface APIVoiceState {
/**
* The guild id this voice state is for
*/
guild_id?: Snowflake;
export interface APIBaseVoiceState {
/**
* The channel id this user is connected to
*/
@@ -30,6 +23,7 @@ export interface APIVoiceState {
/**
* The guild member this voice state is for
*
* @remarks The member field will have `joined_at` set to `null` if the member was invited as a guest.
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
@@ -71,6 +65,16 @@ export interface APIVoiceState {
request_to_speak_timestamp: string | null;
}
/**
* @see {@link https://discord.com/developers/docs/resources/voice#voice-state-object}
*/
export interface APIVoiceState extends APIBaseVoiceState {
/**
* The guild id this voice state is for
*/
guild_id?: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/resources/voice#voice-region-object}
*/

View File

@@ -91,6 +91,8 @@ export type APIWebhookEventBody =
APIWebhookEventApplicationDeauthorizedData
>
| APIWebhookEventEventBase<ApplicationWebhookEventType.EntitlementCreate, APIWebhookEventEntitlementCreateData>
| APIWebhookEventEventBase<ApplicationWebhookEventType.EntitlementDelete, APIWebhookEventEntitlementDeleteData>
| APIWebhookEventEventBase<ApplicationWebhookEventType.EntitlementUpdate, APIWebhookEventEntitlementUpdateData>
| APIWebhookEventEventBase<ApplicationWebhookEventType.QuestUserEnrollment, APIWebhookEventQuestUserEnrollmentData>;
export interface APIWebhookEventApplicationAuthorizedData {
@@ -112,9 +114,6 @@ export interface APIWebhookEventApplicationAuthorizedData {
guild?: APIGuild;
}
/**
* @unstable
*/
export interface APIWebhookEventApplicationDeauthorizedData {
/**
* User who deauthorized the app
@@ -124,6 +123,16 @@ export interface APIWebhookEventApplicationDeauthorizedData {
export type APIWebhookEventEntitlementCreateData = APIEntitlement;
/**
* @unstable
*/
export type APIWebhookEventEntitlementDeleteData = APIEntitlement;
/**
* @unstable
*/
export type APIWebhookEventEntitlementUpdateData = APIEntitlement;
export type APIWebhookEventQuestUserEnrollmentData = never;
export interface APIWebhookEventBase<Type extends ApplicationWebhookType, Event> {
@@ -184,14 +193,24 @@ export enum ApplicationWebhookEventType {
ApplicationAuthorized = 'APPLICATION_AUTHORIZED',
/**
* Sent when an app was deauthorized by a user
*
* @unstable
*/
ApplicationDeauthorized = 'APPLICATION_DEAUTHORIZED',
/**
* Entitlement was created
*/
EntitlementCreate = 'ENTITLEMENT_CREATE',
/**
* Entitlement was updated
*
* @unstable This event is not yet documented but can be enabled from the developer portal
*/
EntitlementUpdate = 'ENTITLEMENT_UPDATE',
/**
* Entitlement was deleted
*
* @unstable This event is not yet documented but can be enabled from the developer portal
*/
EntitlementDelete = 'ENTITLEMENT_DELETE',
/**
* User was added to a Quest (currently unavailable)
*/

2
deno/rest/common.ts generated
View File

@@ -313,6 +313,8 @@ export enum RESTJSONErrorCodes {
CannotEnableOnboardingRequirementsAreNotMet = 350_000,
CannotUpdateOnboardingWhileBelowRequirements,
AccessToFileUploadsHasBeenLimitedForThisGuild = 400_001,
FailedToBanUsers = 500_000,
PollVotingBlocked = 520_000,

View File

@@ -24,6 +24,10 @@ import type {
ChannelFlags,
APIAttachment,
APIMessageTopLevelComponent,
APIMessagePin,
APIAnnouncementThreadChannel,
APIPrivateThreadChannel,
APIPublicThreadChannel,
} from '../../payloads/v10/mod.ts';
import type { _AddUndefinedToPossiblyUndefinedPropertiesOfInterface, _StrictPartial } from '../../utils/internals.ts';
import type { RESTAPIPoll } from './poll.ts';
@@ -617,17 +621,60 @@ export type RESTPostAPIChannelFollowersResult = APIFollowedChannel;
export type RESTPostAPIChannelTypingResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/channel#get-pinned-messages}
* @see {@link https://discord.com/developers/docs/resources/message#get-channel-pins}
*/
export interface RESTGetAPIChannelMessagesPinsQuery {
/**
* Get messages pinned before this timestamp
*/
before?: string;
/**
* Maximum number of pins to return (1-50).
*
* @defaultValue `50`
*/
limit?: number;
}
/**
* @see {@link https://discord.com/developers/docs/resources/message#get-channel-pins}
*/
export interface RESTGetAPIChannelMessagesPinsResult {
/**
* Array of pinned messages
*/
items: APIMessagePin[];
/**
* Whether there are more items available
*/
has_more: boolean;
}
/**
* @see {@link https://discord.com/developers/docs/resources/message#pin-message}
*/
export type RESTPutAPIChannelMessagesPinResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/message#unpin-message}
*/
export type RESTDeleteAPIChannelMessagesPinResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/message#get-pinned-messages-deprecated}
* @deprecated
*/
export type RESTGetAPIChannelPinsResult = APIMessage[];
/**
* @see {@link https://discord.com/developers/docs/resources/channel#pin-message}
* @see {@link https://discord.com/developers/docs/resources/message#pin-message-deprecated}
* @deprecated
*/
export type RESTPutAPIChannelPinResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/channel#unpin-message}
* @see {@link https://discord.com/developers/docs/resources/message#unpin-message-deprecated}
* @deprecated
*/
export type RESTDeleteAPIChannelPinResult = never;
@@ -723,7 +770,10 @@ export interface RESTPostAPIChannelThreadsJSONBody extends RESTPostAPIChannelMes
/**
* @see {@link https://discord.com/developers/docs/resources/channel#start-thread-without-message}
*/
export type RESTPostAPIChannelThreadsResult = APIChannel;
export type RESTPostAPIChannelThreadsResult =
| APIAnnouncementThreadChannel
| APIPrivateThreadChannel
| APIPublicThreadChannel;
/**
* @see {@link https://discord.com/developers/docs/resources/channel#join-thread}

View File

@@ -1,5 +1,5 @@
import type { Snowflake } from '../../globals.ts';
import type { APIApplicationEmoji, APIEmoji } from '../../payloads/v10.ts';
import type { APIApplicationEmoji, APIEmoji } from '../../payloads/v10/mod.ts';
/**
* @see {@link https://discord.com/developers/docs/resources/emoji#list-guild-emojis}

131
deno/rest/v10/guild.ts generated
View File

@@ -26,6 +26,9 @@ import type {
GuildWidgetStyle,
APIGuildOnboardingPrompt,
APIGuildOnboardingPromptOption,
APIRoleColors,
APIIncidentsData,
APIGuildChannel,
} from '../../payloads/v10/mod.ts';
import type {
_AddUndefinedToPossiblyUndefinedPropertiesOfInterface,
@@ -96,7 +99,8 @@ export interface RESTAPIGuildCreateRole extends RESTPostAPIGuildRoleJSONBody {
export type APIGuildCreateRole = RESTAPIGuildCreateRole;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export interface RESTPostAPIGuildsJSONBody {
/**
@@ -184,12 +188,14 @@ export interface RESTPostAPIGuildsJSONBody {
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export type RESTPostAPIGuildsResult = APIGuild;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export interface RESTPostAPIGuildsMFAJSONBody {
/**
@@ -201,7 +207,8 @@ export interface RESTPostAPIGuildsMFAJSONBody {
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export type RESTPostAPIGuildsMFAResult = RESTPostAPIGuildsMFAJSONBody;
@@ -275,6 +282,8 @@ export interface RESTPatchAPIGuildJSONBody {
icon?: string | null | undefined;
/**
* User id to transfer guild ownership to (must be owner)
*
* @deprecated
*/
owner_id?: Snowflake | undefined;
/**
@@ -341,14 +350,15 @@ export interface RESTPatchAPIGuildJSONBody {
export type RESTPatchAPIGuildResult = APIGuild;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#delete-guild}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export type RESTDeleteAPIGuildResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-channels}
*/
export type RESTGetAPIGuildChannelsResult = APIChannel[];
export type RESTGetAPIGuildChannelsResult = APIGuildChannel[];
/**
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild-channel}
@@ -532,6 +542,13 @@ export interface RESTPatchAPICurrentGuildMemberNicknameJSONBody {
nick?: string | null | undefined;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-user-nick}
* @deprecated Use {@link https://discord.com/developers/docs/resources/guild#modify-current-member | Modify Current Member} instead.
*/
export type RESTPatchAPICurrentGuildMemberNicknameResult =
_StrictRequired<RESTPatchAPICurrentGuildMemberNicknameJSONBody>;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-member}
*/
@@ -542,14 +559,24 @@ export interface RESTPatchAPICurrentGuildMemberJSONBody {
* Requires `CHANGE_NICKNAME` permission
*/
nick?: string | null | undefined;
/**
* Data URI base64 encoded banner image
*/
banner?: string | null | undefined;
/**
* Data URI base64 encoded avatar image
*/
avatar?: string | null | undefined;
/**
* Guild member bio
*/
bio?: string | null | undefined;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-user-nick}
* @deprecated Use {@link https://discord.com/developers/docs/resources/guild#modify-current-member | Modify Current Member} instead.
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-member}
*/
export type RESTPatchAPICurrentGuildMemberNicknameResult =
_StrictRequired<RESTPatchAPICurrentGuildMemberNicknameJSONBody>;
export type RESTPatchAPICurrentGuildMemberResult = APIGuildMember;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#add-guild-member-role}
@@ -676,8 +703,15 @@ export interface RESTPostAPIGuildRoleJSONBody {
* RGB color value
*
* @defaultValue `0`
* @remarks `color` will still be returned by the API, but using the `colors` field is recommended when doing requests.
*/
color?: number | null | undefined;
/**
* The role's colors
*
* @defaultValue `{ "primary_color": 0, "secondary_color": null, "tertiary_color": null }`
*/
colors?: APIRoleColors | undefined;
/**
* Whether the role should be displayed separately in the sidebar
*
@@ -738,8 +772,14 @@ export interface RESTPatchAPIGuildRoleJSONBody {
permissions?: Permissions | null | undefined;
/**
* RGB color value
*
* @remarks `color` will still be returned by the API, but using the `colors` field is recommended when doing requests.
*/
color?: number | null | undefined;
/**
* The role's colors
*/
colors?: APIRoleColors | undefined;
/**
* Whether the role should be displayed separately in the sidebar
*/
@@ -773,6 +813,11 @@ export type RESTPatchAPIGuildRoleResult = APIRole;
*/
export type RESTDeleteAPIGuildRoleResult = never;
/**
* @unstable
*/
export type RESTGetAPIGuildRoleMemberCountsResult = Record<Snowflake, number>;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-prune-count}
*/
@@ -898,6 +943,9 @@ export type RESTGetAPIGuildWidgetImageResult = ArrayBuffer;
export type RESTGetAPIGuildMemberVerificationResult = APIGuildMembershipScreening;
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export interface RESTPatchAPIGuildMemberVerificationJSONBody {
/**
* Whether Membership Screening is enabled
@@ -913,6 +961,9 @@ export interface RESTPatchAPIGuildMemberVerificationJSONBody {
description?: string | null | undefined;
}
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export type RESTPatchAPIGuildMemberVerificationResult = APIGuildMembershipScreening;
/**
@@ -952,38 +1003,40 @@ export type RESTPutAPIGuildOnboardingJSONBody = _AddUndefinedToPossiblyUndefined
prompts?: RESTAPIGuildOnboardingPrompt[] | undefined;
};
export type RESTAPIGuildOnboardingPrompt = _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<Omit<APIGuildOnboardingPrompt, 'guild_id' | 'id' | 'options' | 'title'>>
> &
Pick<APIGuildOnboardingPrompt, 'id' | 'title'> & {
/**
* Options available within the prompt
*/
options: RESTAPIGuildOnboardingPromptOption[];
};
export interface RESTAPIGuildOnboardingPrompt
extends _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<Omit<APIGuildOnboardingPrompt, 'guild_id' | 'id' | 'options' | 'title'>>
>,
Pick<APIGuildOnboardingPrompt, 'id' | 'title'> {
/**
* Options available within the prompt
*/
options: RESTAPIGuildOnboardingPromptOption[];
}
/**
* @deprecated Use {@link RESTAPIGuildOnboardingPrompt} instead.
*/
export type RESTAPIModifyGuildOnboardingPromptData = RESTAPIGuildOnboardingPrompt;
export type RESTAPIGuildOnboardingPromptOption = _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<Omit<APIGuildOnboardingPromptOption, 'emoji' | 'guild_id' | 'title'>>
> &
Pick<APIGuildOnboardingPromptOption, 'title'> & {
/**
* Emoji id
*/
emoji_id?: Snowflake | null | undefined;
/**
* Emoji name
*/
emoji_name?: string | null | undefined;
/**
* Whether this emoji is animated
*/
emoji_animated?: boolean | null | undefined;
};
export interface RESTAPIGuildOnboardingPromptOption
extends _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<Omit<APIGuildOnboardingPromptOption, 'emoji' | 'guild_id' | 'title'>>
>,
Pick<APIGuildOnboardingPromptOption, 'title'> {
/**
* Emoji id
*/
emoji_id?: Snowflake | null | undefined;
/**
* Emoji name
*/
emoji_name?: string | null | undefined;
/**
* Whether this emoji is animated
*/
emoji_animated?: boolean | null | undefined;
}
/**
* @deprecated Use {@link RESTAPIGuildOnboardingPromptOption} instead.
@@ -1002,9 +1055,11 @@ export interface RESTPutAPIGuildIncidentActionsJSONBody {
/**
* When invites will be enabled again
*/
invites_disabled_until?: string | undefined;
invites_disabled_until?: string | null | undefined;
/**
* When direct messages will be enabled again
*/
dms_disabled_until?: string | undefined;
dms_disabled_until?: string | null | undefined;
}
export type RESTPutAPIGuildIncidentActionsResult = APIIncidentsData;

View File

@@ -94,17 +94,18 @@ export type RESTGetAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event}
*/
export type RESTPatchAPIGuildScheduledEventJSONBody = _Nullable<
Pick<RESTPostAPIGuildScheduledEventJSONBody, 'description' | 'entity_metadata' | 'recurrence_rule'>
> &
_StrictPartial<
Omit<RESTPostAPIGuildScheduledEventJSONBody, 'description' | 'entity_metadata' | 'recurrence_rule'>
> & {
/**
* The status of the scheduled event
*/
status?: GuildScheduledEventStatus | undefined;
};
export interface RESTPatchAPIGuildScheduledEventJSONBody
extends _Nullable<
Pick<RESTPostAPIGuildScheduledEventJSONBody, 'description' | 'entity_metadata' | 'recurrence_rule'>
>,
_StrictPartial<
Omit<RESTPostAPIGuildScheduledEventJSONBody, 'description' | 'entity_metadata' | 'recurrence_rule'>
> {
/**
* The status of the scheduled event
*/
status?: GuildScheduledEventStatus | undefined;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event}

View File

@@ -47,26 +47,29 @@ export type RESTGetAPIApplicationCommandsResult = APIApplicationCommand[];
*/
export type RESTGetAPIApplicationCommandResult = APIApplicationCommand;
export type RESTPostAPIBaseApplicationCommandsJSONBody = _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Omit<
APIApplicationCommand,
| 'application_id'
| 'contexts'
| 'default_member_permissions'
| 'description_localized'
| 'description'
| 'guild_id'
| 'id'
| 'integration_types'
| 'name_localized'
| 'type'
| 'version'
> &
Partial<
_NonNullableFields<Pick<APIApplicationCommand, 'contexts'>> &
Pick<APIApplicationCommand, 'default_member_permissions' | 'integration_types'>
>
>;
export interface RESTPostAPIBaseApplicationCommandsJSONBody
extends _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Omit<
APIApplicationCommand,
| 'application_id'
| 'contexts'
| 'default_member_permissions'
| 'description_localized'
| 'description'
| 'guild_id'
| 'id'
| 'integration_types'
| 'name_localized'
| 'type'
| 'version'
>
>,
_AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<
_NonNullableFields<Pick<APIApplicationCommand, 'contexts'>> &
Pick<APIApplicationCommand, 'default_member_permissions' | 'integration_types'>
>
> {}
/**
* @see {@link https://discord.com/developers/docs/interactions/application-commands#create-global-application-command}

52
deno/rest/v10/mod.ts generated
View File

@@ -181,9 +181,28 @@ export const Routes = {
return `/channels/${channelId}/typing` as const;
},
/**
* Route for:
* - GET `/channels/{channel.id}/messages/pins`
*/
channelMessagesPins(channelId: Snowflake) {
return `/channels/${channelId}/messages/pins` as const;
},
/**
* Route for:
* - PUT `/channels/{channel.id}/messages/pins/{message.id}`
* - DELETE `/channels/{channel.id}/messages/pins/{message.id}`
*/
channelMessagesPin(channelId: Snowflake, messageId: Snowflake) {
return `/channels/${channelId}/messages/pins/${messageId}` as const;
},
/**
* Route for:
* - GET `/channels/{channel.id}/pins`
*
* @deprecated Use {@link Routes.channelMessagesPins} instead.
*/
channelPins(channelId: Snowflake) {
return `/channels/${channelId}/pins` as const;
@@ -193,6 +212,8 @@ export const Routes = {
* Route for:
* - PUT `/channels/{channel.id}/pins/{message.id}`
* - DELETE `/channels/{channel.id}/pins/{message.id}`
*
* @deprecated Use {@link Routes.channelMessagesPin} instead.
*/
channelPin(channelId: Snowflake, messageId: Snowflake) {
return `/channels/${channelId}/pins/${messageId}` as const;
@@ -229,6 +250,8 @@ export const Routes = {
/**
* Route for:
* - POST `/guilds`
*
* @deprecated {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
*/
guilds() {
return '/guilds' as const;
@@ -238,7 +261,7 @@ export const Routes = {
* Route for:
* - GET `/guilds/{guild.id}`
* - PATCH `/guilds/{guild.id}`
* - DELETE `/guilds/{guild.id}`
* - DELETE `/guilds/{guild.id}` (**deprecated**)
*/
guild(guildId: Snowflake) {
return `/guilds/${guildId}` as const;
@@ -312,6 +335,8 @@ export const Routes = {
/**
* Route for:
* - POST `/guilds/{guild.id}/mfa`
*
* @deprecated
*/
guildMFA(guildId: Snowflake) {
return `/guilds/${guildId}/mfa` as const;
@@ -355,6 +380,16 @@ export const Routes = {
return `/guilds/${guildId}/roles/${roleId}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/roles/member-counts`
*
* @unstable
*/
guildRoleMemberCounts(guildId: Snowflake) {
return `/guilds/${guildId}/roles/member-counts` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/prune`
@@ -441,7 +476,7 @@ export const Routes = {
/**
* Route for:
* - GET `/guilds/templates/{template.code}`
* - POST `/guilds/templates/{template.code}`
* - POST `/guilds/templates/{template.code}` (**deprecated**)
*/
template(code: string) {
return `/guilds/templates/${code}` as const;
@@ -783,6 +818,8 @@ export const Routes = {
* Route for:
* - GET `/guilds/{guild.id}/member-verification`
* - PATCH `/guilds/{guild.id}/member-verification`
*
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
guildMemberVerification(guildId: Snowflake) {
return `/guilds/${guildId}/member-verification` as const;
@@ -1382,6 +1419,16 @@ export const CDNRoutes = {
soundboardSound(soundId: Snowflake) {
return `/soundboard-sounds/${soundId}` as const;
},
/**
* Route for:
* - GET `/guild-tag-badges/{guild.id}/{badge}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildTagBadge<Format extends GuildTagBadgeFormat>(guildId: Snowflake, guildTagBadge: string, format: Format) {
return `/guild-tag-badges/${guildId}/${guildTagBadge}.${format}` as const;
},
};
for (const [key, fn] of Object.entries(CDNRoutes)) {
@@ -1428,6 +1475,7 @@ export type StickerFormat = Extract<ImageFormat, ImageFormat.GIF | ImageFormat.L
export type RoleIconFormat = Exclude<ImageFormat, ImageFormat.GIF | ImageFormat.Lottie>;
export type GuildScheduledEventCoverFormat = Exclude<ImageFormat, ImageFormat.GIF | ImageFormat.Lottie>;
export type GuildMemberBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildTagBadgeFormat = Exclude<ImageFormat, ImageFormat.GIF | ImageFormat.Lottie>;
/**
* @deprecated Use {@link DefaultUserAvatarFormat} instead.

8
deno/rest/v10/poll.ts generated
View File

@@ -1,5 +1,5 @@
import type { Snowflake } from '../../globals.ts';
import type { APIMessage, APIPoll, APIPollAnswer, APIUser } from '../../v10.ts';
import type { APIBasePoll, APIBasePollAnswer, APIMessage, APIPollDefaults, APIUser } from '../../v10.ts';
/**
* @see {@link https://discord.com/developers/docs/resources/poll#get-answer-voters}
@@ -20,13 +20,11 @@ export interface RESTGetAPIPollAnswerVotersQuery {
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-create-request-object-poll-create-request-object-structure}
*/
export interface RESTAPIPoll
extends Omit<APIPoll, 'allow_multiselect' | 'answers' | 'expiry' | 'layout_type' | 'results'>,
Partial<Pick<APIPoll, 'allow_multiselect' | 'layout_type'>> {
export interface RESTAPIPoll extends APIBasePoll, Partial<APIPollDefaults> {
/**
* Each of the answers available in the poll, up to 10
*/
answers: Omit<APIPollAnswer, 'answer_id'>[];
answers: APIBasePollAnswer[];
/**
* Number of hours the poll should be open for, up to 32 days
*

View File

@@ -7,7 +7,8 @@ import type { _StrictPartial } from '../../utils/internals.ts';
export type RESTGetAPITemplateResult = APITemplate;
/**
* @see {@link https://discord.com/developers/docs/resources/guild-template#create-guild-from-guild-template}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export interface RESTPostAPITemplateCreateGuildJSONBody {
/**
@@ -23,7 +24,8 @@ export interface RESTPostAPITemplateCreateGuildJSONBody {
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild-template#create-guild-from-guild-template}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export type RESTPostAPITemplateCreateGuildResult = APIGuild;

View File

@@ -263,7 +263,9 @@ export interface RESTGetAPIWebhookWithTokenMessageQuery {
* @see {@link https://discord.com/developers/docs/resources/webhook#edit-webhook-message}
*/
export type RESTPatchAPIWebhookWithTokenMessageJSONBody = _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
_Nullable<Pick<RESTPostAPIWebhookWithTokenJSONBody, 'allowed_mentions' | 'components' | 'content' | 'embeds'>>
_Nullable<
Pick<RESTPostAPIWebhookWithTokenJSONBody, 'allowed_mentions' | 'components' | 'content' | 'embeds' | 'flags'>
>
> & {
/**
* Attached files to keep

View File

@@ -24,6 +24,10 @@ import type {
ChannelFlags,
APIAttachment,
APIMessageTopLevelComponent,
APIMessagePin,
APIAnnouncementThreadChannel,
APIPrivateThreadChannel,
APIPublicThreadChannel,
} from '../../payloads/v9/mod.ts';
import type { _AddUndefinedToPossiblyUndefinedPropertiesOfInterface, _StrictPartial } from '../../utils/internals.ts';
import type { RESTAPIPoll } from './poll.ts';
@@ -631,12 +635,54 @@ export type RESTPostAPIChannelFollowersResult = APIFollowedChannel;
export type RESTPostAPIChannelTypingResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/channel#get-pinned-messages}
* @see {@link https://discord.com/developers/docs/resources/message#get-channel-pins}
*/
export interface RESTGetAPIChannelMessagesPinsQuery {
/**
* Get messages pinned before this timestamp
*/
before?: string;
/**
* Maximum number of pins to return (1-50).
*
* @defaultValue `50`
*/
limit?: number;
}
/**
* @see {@link https://discord.com/developers/docs/resources/message#get-channel-pins}
*/
export interface RESTGetAPIChannelMessagesPinsResult {
/**
* Array of pinned messages
*/
items: APIMessagePin[];
/**
* Whether there are more items available
*/
has_more: boolean;
}
/**
* @see {@link https://discord.com/developers/docs/resources/message#pin-message}
*/
export type RESTPutAPIChannelMessagesPinResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/message#unpin-message}
*/
export type RESTDeleteAPIChannelMessagesPinResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/message#get-pinned-messages-deprecated}
* @deprecated
*/
export type RESTGetAPIChannelPinsResult = APIMessage[];
/**
* @see {@link https://discord.com/developers/docs/resources/channel#pin-message}
* @see {@link https://discord.com/developers/docs/resources/message#pin-message-deprecated}
* @deprecated
*/
export type RESTPutAPIChannelPinResult = never;
@@ -737,7 +783,10 @@ export interface RESTPostAPIChannelThreadsJSONBody extends RESTPostAPIChannelMes
/**
* @see {@link https://discord.com/developers/docs/resources/channel#start-thread-without-message}
*/
export type RESTPostAPIChannelThreadsResult = APIChannel;
export type RESTPostAPIChannelThreadsResult =
| APIAnnouncementThreadChannel
| APIPrivateThreadChannel
| APIPublicThreadChannel;
/**
* @see {@link https://discord.com/developers/docs/resources/channel#join-thread}

2
deno/rest/v9/emoji.ts generated
View File

@@ -1,5 +1,5 @@
import type { Snowflake } from '../../globals.ts';
import type { APIApplicationEmoji, APIEmoji } from '../../payloads/v9.ts';
import type { APIApplicationEmoji, APIEmoji } from '../../payloads/v9/mod.ts';
/**
* @see {@link https://discord.com/developers/docs/resources/emoji#list-guild-emojis}

124
deno/rest/v9/guild.ts generated
View File

@@ -26,6 +26,9 @@ import type {
APIGroupDMChannel,
APIGuildOnboardingPrompt,
APIGuildOnboardingPromptOption,
APIRoleColors,
APIIncidentsData,
APIGuildChannel,
} from '../../payloads/v9/mod.ts';
import type {
_AddUndefinedToPossiblyUndefinedPropertiesOfInterface,
@@ -97,6 +100,7 @@ export type APIGuildCreateRole = RESTAPIGuildCreateRole;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild}
* @deprecated {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
*/
export interface RESTPostAPIGuildsJSONBody {
/**
@@ -184,12 +188,14 @@ export interface RESTPostAPIGuildsJSONBody {
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export type RESTPostAPIGuildsResult = APIGuild;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export interface RESTPostAPIGuildsMFAJSONBody {
/**
@@ -201,7 +207,8 @@ export interface RESTPostAPIGuildsMFAJSONBody {
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-guild-mfa-level}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export type RESTPostAPIGuildsMFAResult = RESTPostAPIGuildsMFAJSONBody;
@@ -275,6 +282,8 @@ export interface RESTPatchAPIGuildJSONBody {
icon?: string | null | undefined;
/**
* User id to transfer guild ownership to (must be owner)
*
* @deprecated
*/
owner_id?: Snowflake | undefined;
/**
@@ -341,14 +350,15 @@ export interface RESTPatchAPIGuildJSONBody {
export type RESTPatchAPIGuildResult = APIGuild;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#delete-guild}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export type RESTDeleteAPIGuildResult = never;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#get-guild-channels}
*/
export type RESTGetAPIGuildChannelsResult = APIChannel[];
export type RESTGetAPIGuildChannelsResult = APIGuildChannel[];
/**
* @see {@link https://discord.com/developers/docs/resources/guild#create-guild-channel}
@@ -532,6 +542,13 @@ export interface RESTPatchAPICurrentGuildMemberNicknameJSONBody {
nick?: string | null | undefined;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-user-nick}
* @deprecated Use {@link https://discord.com/developers/docs/resources/guild#modify-current-member | Modify Current Member} instead.
*/
export type RESTPatchAPICurrentGuildMemberNicknameResult =
_StrictRequired<RESTPatchAPICurrentGuildMemberNicknameJSONBody>;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-member}
*/
@@ -542,14 +559,24 @@ export interface RESTPatchAPICurrentGuildMemberJSONBody {
* Requires `CHANGE_NICKNAME` permission
*/
nick?: string | null | undefined;
/**
* Data URI base64 encoded banner image
*/
banner?: string | null | undefined;
/**
* Data URI base64 encoded avatar image
*/
avatar?: string | null | undefined;
/**
* Guild member bio
*/
bio?: string | null | undefined;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-user-nick}
* @deprecated Use {@link https://discord.com/developers/docs/resources/guild#modify-current-member | Modify Current Member} instead.
* @see {@link https://discord.com/developers/docs/resources/guild#modify-current-member}
*/
export type RESTPatchAPICurrentGuildMemberNicknameResult =
_StrictRequired<RESTPatchAPICurrentGuildMemberNicknameJSONBody>;
export type RESTPatchAPICurrentGuildMemberResult = APIGuildMember;
/**
* @see {@link https://discord.com/developers/docs/resources/guild#add-guild-member-role}
@@ -682,8 +709,15 @@ export interface RESTPostAPIGuildRoleJSONBody {
* RGB color value
*
* @defaultValue `0`
* @remarks `color` will still be returned by the API, but using the `colors` field is recommended when doing requests.
*/
color?: number | null | undefined;
/**
* The role's colors
*
* @defaultValue `{ "primary_color": 0, "secondary_color": null, "tertiary_color": null }`
*/
colors?: APIRoleColors | undefined;
/**
* Whether the role should be displayed separately in the sidebar
*
@@ -744,8 +778,14 @@ export interface RESTPatchAPIGuildRoleJSONBody {
permissions?: Permissions | null | undefined;
/**
* RGB color value
*
* @remarks `color` will still be returned by the API, but using the `colors` field is recommended when doing requests.
*/
color?: number | null | undefined;
/**
* The role's colors
*/
colors?: APIRoleColors | undefined;
/**
* Whether the role should be displayed separately in the sidebar
*/
@@ -904,6 +944,9 @@ export type RESTGetAPIGuildWidgetImageResult = ArrayBuffer;
export type RESTGetAPIGuildMemberVerificationResult = APIGuildMembershipScreening;
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export interface RESTPatchAPIGuildMemberVerificationJSONBody {
/**
* Whether Membership Screening is enabled
@@ -919,6 +962,9 @@ export interface RESTPatchAPIGuildMemberVerificationJSONBody {
description?: string | null | undefined;
}
/**
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
export type RESTPatchAPIGuildMemberVerificationResult = APIGuildMembershipScreening;
/**
@@ -958,38 +1004,40 @@ export type RESTPutAPIGuildOnboardingJSONBody = _AddUndefinedToPossiblyUndefined
prompts?: RESTAPIGuildOnboardingPrompt[] | undefined;
};
export type RESTAPIGuildOnboardingPrompt = _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<Omit<APIGuildOnboardingPrompt, 'guild_id' | 'id' | 'options' | 'title'>>
> &
Pick<APIGuildOnboardingPrompt, 'id' | 'title'> & {
/**
* Options available within the prompt
*/
options: RESTAPIGuildOnboardingPromptOption[];
};
export interface RESTAPIGuildOnboardingPrompt
extends _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<Omit<APIGuildOnboardingPrompt, 'guild_id' | 'id' | 'options' | 'title'>>
>,
Pick<APIGuildOnboardingPrompt, 'id' | 'title'> {
/**
* Options available within the prompt
*/
options: RESTAPIGuildOnboardingPromptOption[];
}
/**
* @deprecated Use {@link RESTAPIGuildOnboardingPrompt} instead.
*/
export type RESTAPIModifyGuildOnboardingPromptData = RESTAPIGuildOnboardingPrompt;
export type RESTAPIGuildOnboardingPromptOption = _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<Omit<APIGuildOnboardingPromptOption, 'emoji' | 'guild_id' | 'title'>>
> &
Pick<APIGuildOnboardingPromptOption, 'title'> & {
/**
* Emoji id
*/
emoji_id?: Snowflake | null | undefined;
/**
* Emoji name
*/
emoji_name?: string | null | undefined;
/**
* Whether this emoji is animated
*/
emoji_animated?: boolean | null | undefined;
};
export interface RESTAPIGuildOnboardingPromptOption
extends _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<Omit<APIGuildOnboardingPromptOption, 'emoji' | 'guild_id' | 'title'>>
>,
Pick<APIGuildOnboardingPromptOption, 'title'> {
/**
* Emoji id
*/
emoji_id?: Snowflake | null | undefined;
/**
* Emoji name
*/
emoji_name?: string | null | undefined;
/**
* Whether this emoji is animated
*/
emoji_animated?: boolean | null | undefined;
}
/**
* @deprecated Use {@link RESTAPIGuildOnboardingPromptOption} instead.
@@ -1008,9 +1056,11 @@ export interface RESTPutAPIGuildIncidentActionsJSONBody {
/**
* When invites will be enabled again
*/
invites_disabled_until?: string | undefined;
invites_disabled_until?: string | null | undefined;
/**
* When direct messages will be enabled again
*/
dms_disabled_until?: string | undefined;
dms_disabled_until?: string | null | undefined;
}
export type RESTPutAPIGuildIncidentActionsResult = APIIncidentsData;

View File

@@ -94,17 +94,18 @@ export type RESTGetAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event}
*/
export type RESTPatchAPIGuildScheduledEventJSONBody = _Nullable<
Pick<RESTPostAPIGuildScheduledEventJSONBody, 'description' | 'entity_metadata' | 'recurrence_rule'>
> &
_StrictPartial<
Omit<RESTPostAPIGuildScheduledEventJSONBody, 'description' | 'entity_metadata' | 'recurrence_rule'>
> & {
/**
* The status of the scheduled event
*/
status?: GuildScheduledEventStatus | undefined;
};
export interface RESTPatchAPIGuildScheduledEventJSONBody
extends _Nullable<
Pick<RESTPostAPIGuildScheduledEventJSONBody, 'description' | 'entity_metadata' | 'recurrence_rule'>
>,
_StrictPartial<
Omit<RESTPostAPIGuildScheduledEventJSONBody, 'description' | 'entity_metadata' | 'recurrence_rule'>
> {
/**
* The status of the scheduled event
*/
status?: GuildScheduledEventStatus | undefined;
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event}

View File

@@ -47,26 +47,29 @@ export type RESTGetAPIApplicationCommandsResult = APIApplicationCommand[];
*/
export type RESTGetAPIApplicationCommandResult = APIApplicationCommand;
export type RESTPostAPIBaseApplicationCommandsJSONBody = _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Omit<
APIApplicationCommand,
| 'application_id'
| 'contexts'
| 'default_member_permissions'
| 'description_localized'
| 'description'
| 'guild_id'
| 'id'
| 'integration_types'
| 'name_localized'
| 'type'
| 'version'
> &
Partial<
_NonNullableFields<Pick<APIApplicationCommand, 'contexts'>> &
Pick<APIApplicationCommand, 'default_member_permissions' | 'integration_types'>
>
>;
export interface RESTPostAPIBaseApplicationCommandsJSONBody
extends _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Omit<
APIApplicationCommand,
| 'application_id'
| 'contexts'
| 'default_member_permissions'
| 'description_localized'
| 'description'
| 'guild_id'
| 'id'
| 'integration_types'
| 'name_localized'
| 'type'
| 'version'
>
>,
_AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
Partial<
_NonNullableFields<Pick<APIApplicationCommand, 'contexts'>> &
Pick<APIApplicationCommand, 'default_member_permissions' | 'integration_types'>
>
> {}
/**
* @see {@link https://discord.com/developers/docs/interactions/application-commands#create-global-application-command}

42
deno/rest/v9/mod.ts generated
View File

@@ -181,9 +181,28 @@ export const Routes = {
return `/channels/${channelId}/typing` as const;
},
/**
* Route for:
* - GET `/channels/{channel.id}/messages/pins`
*/
channelMessagesPins(channelId: Snowflake) {
return `/channels/${channelId}/messages/pins` as const;
},
/**
* Route for:
* - PUT `/channels/{channel.id}/messages/pins/{message.id}`
* - DELETE `/channels/{channel.id}/messages/pins/{message.id}`
*/
channelMessagesPin(channelId: Snowflake, messageId: Snowflake) {
return `/channels/${channelId}/messages/pins/${messageId}` as const;
},
/**
* Route for:
* - GET `/channels/{channel.id}/pins`
*
* @deprecated Use {@link Routes.channelMessagesPins} instead.
*/
channelPins(channelId: Snowflake) {
return `/channels/${channelId}/pins` as const;
@@ -193,6 +212,8 @@ export const Routes = {
* Route for:
* - PUT `/channels/{channel.id}/pins/{message.id}`
* - DELETE `/channels/{channel.id}/pins/{message.id}`
*
* @deprecated Use {@link Routes.channelMessagesPin} instead.
*/
channelPin(channelId: Snowflake, messageId: Snowflake) {
return `/channels/${channelId}/pins/${messageId}` as const;
@@ -229,6 +250,8 @@ export const Routes = {
/**
* Route for:
* - POST `/guilds`
*
* @deprecated {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
*/
guilds() {
return '/guilds' as const;
@@ -238,7 +261,7 @@ export const Routes = {
* Route for:
* - GET `/guilds/{guild.id}`
* - PATCH `/guilds/{guild.id}`
* - DELETE `/guilds/{guild.id}`
* - DELETE `/guilds/{guild.id}` (**deprecated**)
*/
guild(guildId: Snowflake) {
return `/guilds/${guildId}` as const;
@@ -312,6 +335,8 @@ export const Routes = {
/**
* Route for:
* - POST `/guilds/{guild.id}/mfa`
*
* @deprecated
*/
guildMFA(guildId: Snowflake) {
return `/guilds/${guildId}/mfa` as const;
@@ -441,7 +466,7 @@ export const Routes = {
/**
* Route for:
* - GET `/guilds/templates/{template.code}`
* - POST `/guilds/templates/{template.code}`
* - POST `/guilds/templates/{template.code}` (**deprecated**)
*/
template(code: string) {
return `/guilds/templates/${code}` as const;
@@ -792,6 +817,8 @@ export const Routes = {
* Route for:
* - GET `/guilds/{guild.id}/member-verification`
* - PATCH `/guilds/{guild.id}/member-verification`
*
* @unstable https://github.com/discord/discord-api-docs/pull/2547
*/
guildMemberVerification(guildId: Snowflake) {
return `/guilds/${guildId}/member-verification` as const;
@@ -1391,6 +1418,16 @@ export const CDNRoutes = {
soundboardSound(soundId: Snowflake) {
return `/soundboard-sounds/${soundId}` as const;
},
/**
* Route for:
* - GET `/guild-tag-badges/{guild.id}/{badge}.{png|jpeg|webp}`
*
* This route supports the extensions: PNG, JPEG, WebP
*/
guildTagBadge<Format extends GuildTagBadgeFormat>(guildId: Snowflake, guildTagBadge: string, format: Format) {
return `/guild-tag-badges/${guildId}/${guildTagBadge}.${format}` as const;
},
};
for (const [key, fn] of Object.entries(CDNRoutes)) {
@@ -1437,6 +1474,7 @@ export type StickerFormat = Extract<ImageFormat, ImageFormat.GIF | ImageFormat.L
export type RoleIconFormat = Exclude<ImageFormat, ImageFormat.GIF | ImageFormat.Lottie>;
export type GuildScheduledEventCoverFormat = Exclude<ImageFormat, ImageFormat.GIF | ImageFormat.Lottie>;
export type GuildMemberBannerFormat = Exclude<ImageFormat, ImageFormat.Lottie>;
export type GuildTagBadgeFormat = Exclude<ImageFormat, ImageFormat.GIF | ImageFormat.Lottie>;
/**
* @deprecated Use {@link DefaultUserAvatarFormat} instead.

8
deno/rest/v9/poll.ts generated
View File

@@ -1,5 +1,5 @@
import type { Snowflake } from '../../globals.ts';
import type { APIMessage, APIPoll, APIPollAnswer, APIUser } from '../../v9.ts';
import type { APIBasePoll, APIBasePollAnswer, APIMessage, APIPollDefaults, APIUser } from '../../v9.ts';
/**
* @see {@link https://discord.com/developers/docs/resources/poll#get-answer-voters}
@@ -20,13 +20,11 @@ export interface RESTGetAPIPollAnswerVotersQuery {
/**
* @see {@link https://discord.com/developers/docs/resources/poll#poll-create-request-object-poll-create-request-object-structure}
*/
export interface RESTAPIPoll
extends Omit<APIPoll, 'allow_multiselect' | 'answers' | 'expiry' | 'layout_type' | 'results'>,
Partial<Pick<APIPoll, 'allow_multiselect' | 'layout_type'>> {
export interface RESTAPIPoll extends APIBasePoll, Partial<APIPollDefaults> {
/**
* Each of the answers available in the poll, up to 10
*/
answers: Omit<APIPollAnswer, 'answer_id'>[];
answers: APIBasePollAnswer[];
/**
* Number of hours the poll should be open for, up to 32 days
*

View File

@@ -7,7 +7,8 @@ import type { _StrictPartial } from '../../utils/internals.ts';
export type RESTGetAPITemplateResult = APITemplate;
/**
* @see {@link https://discord.com/developers/docs/resources/guild-template#create-guild-from-guild-template}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
* @deprecated
*/
export interface RESTPostAPITemplateCreateGuildJSONBody {
/**
@@ -23,12 +24,13 @@ export interface RESTPostAPITemplateCreateGuildJSONBody {
}
/**
* @see {@link https://discord.com/developers/docs/resources/guild-template#create-guild-from-guild-template}
* @see {@link https://discord.com/developers/docs/change-log#guild-create-deprecation}
*/
export type RESTPostAPITemplateCreateGuildResult = APIGuild;
/**
* @see {@link https://discord.com/developers/docs/resources/guild-template#get-guild-templates}
* @deprecated
*/
export type RESTGetAPIGuildTemplatesResult = APITemplate[];

View File

@@ -263,7 +263,9 @@ export interface RESTGetAPIWebhookWithTokenMessageQuery {
* @see {@link https://discord.com/developers/docs/resources/webhook#edit-webhook-message}
*/
export type RESTPatchAPIWebhookWithTokenMessageJSONBody = _AddUndefinedToPossiblyUndefinedPropertiesOfInterface<
_Nullable<Pick<RESTPostAPIWebhookWithTokenJSONBody, 'allowed_mentions' | 'components' | 'content' | 'embeds'>>
_Nullable<
Pick<RESTPostAPIWebhookWithTokenJSONBody, 'allowed_mentions' | 'components' | 'content' | 'embeds' | 'flags'>
>
> & {
/**
* Attached files to keep

12
deno/rpc/common.ts generated
View File

@@ -26,12 +26,18 @@ export interface RPCAPIMessageParsedContentOriginalMatch {
/**
* @unstable
*/
export interface RPCAPIMessageParsedContentText {
export interface RPCAPIBaseMessageParsedContentText {
type: 'text';
originalMatch: RPCAPIMessageParsedContentOriginalMatch;
content: string;
}
/**
* @unstable
*/
export interface RPCAPIMessageParsedContentText extends RPCAPIBaseMessageParsedContentText {
originalMatch: RPCAPIMessageParsedContentOriginalMatch;
}
/**
* @unstable
*/
@@ -44,7 +50,7 @@ export interface RPCAPIMessageParsedContentMention {
* Same as {@link RPCAPIMessageParsedContentMention.userId}
*/
parsedUserId: RPCAPIMessageParsedContentMention['userId'];
content: Omit<RPCAPIMessageParsedContentText, 'originalMatch'>;
content: RPCAPIBaseMessageParsedContentText;
}
/**

4
deno/rpc/v10.ts generated
View File

@@ -1,7 +1,9 @@
/* eslint-disable @typescript-eslint/no-empty-interface */
import type {
APIBaseMessageNoChannel,
APIInvite,
APIMessage,
APIMessageMentions,
APIPartialChannel,
APIPartialGuild,
APIUser,
@@ -50,7 +52,7 @@ export interface Relationship {
/**
* @unstable
*/
export interface RPCAPIMessage extends Omit<APIMessage, 'channel_id'> {
export interface RPCAPIMessage extends APIBaseMessageNoChannel, APIMessageMentions {
/**
* The nickname of the user who sent the message
*/

4
deno/rpc/v9.ts generated
View File

@@ -1,5 +1,5 @@
import type { Snowflake } from '../globals.ts';
import type { APIMessage, APIUser } from '../v9.ts';
import type { APIBaseMessageNoChannel, APIMessageMentions, APIUser } from '../v9.ts';
import type { RelationshipType, RPCAPIMessageParsedContentMention, RPCAPIMessageParsedContentText } from './common.ts';
export * from './common.ts';
@@ -25,7 +25,7 @@ export interface Relationship {
/**
* @unstable
*/
export interface RPCAPIMessage extends Omit<APIMessage, 'channel_id'> {
export interface RPCAPIMessage extends APIBaseMessageNoChannel, APIMessageMentions {
/**
* The nickname of the user who sent the message
*/

2
deno/voice/mod.ts generated
View File

@@ -1,4 +1,4 @@
// This file exports all the types available in the recommended voice gateway version
// Thereby, things MAY break in the future. Try sticking to imports from a specific version
export * from './v4.ts';
export * from './v8.ts';

62
deno/voice/v4.ts generated
View File

@@ -45,13 +45,63 @@ export enum VoiceOpcodes {
*/
Resumed,
/**
* A client has connected to the voice channel
* One or more clients have connected to the voice channel
*/
ClientConnect = 12,
ClientsConnect = 11,
/**
* Previously for when a client has connected to the voice channel, now unused
*
* @deprecated Not used
*/
ClientConnect,
/**
* A client has disconnected from the voice channel
*/
ClientDisconnect,
/**
* A downgrade from the DAVE protocol is upcoming
*/
DavePrepareTransition = 21,
/**
* Execute a previously announced protocol transition
*/
DaveExecuteTransition,
/**
* Acknowledge readiness previously announced transition
*/
DaveTransitionReady,
/**
* A DAVE protocol version or group change is upcoming
*/
DavePrepareEpoch,
/**
* Credential and public key for MLS external sender
*/
DaveMlsExternalSender,
/**
* MLS Key Package for pending group member
*/
DaveMlsKeyPackage,
/**
* MLS Proposals to be appended or revoked
*/
DaveMlsProposals,
/**
* MLS Commit with optional MLS Welcome messages
*/
DaveMlsCommitWelcome,
/**
* MLS Commit to be processed for upcoming transition
*/
DaveMlsAnnounceCommitTransition,
/**
* MLS Welcome to group for upcoming transition
*/
DaveMlsWelcome,
/**
* Flag invalid commit or welcome, request re-add
*/
DaveMlsInvalidCommitWelcome,
}
/**
@@ -110,4 +160,12 @@ export enum VoiceCloseCodes {
* You sent a malformed request
*/
BadRequest = 4_020,
/**
* Disconnect due to rate limit exceeded. Should not reconnect
*/
RateLimited,
/**
* Disconnect all clients due to call terminated (channel deleted, voice server changed, etc.). Should not reconnect
*/
CallTerminated,
}

706
deno/voice/v8.ts generated Normal file
View File

@@ -0,0 +1,706 @@
import type { Snowflake } from "../globals";
export const VoiceGatewayVersion = '8';
/**
* @see {@link https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-opcodes}
*/
export enum VoiceOpcodes {
/**
* Begin a voice websocket connection
*/
Identify,
/**
* Select the voice protocol
*/
SelectProtocol,
/**
* Complete the websocket handshake
*/
Ready,
/**
* Keep the websocket connection alive
*/
Heartbeat,
/**
* Describe the session
*/
SessionDescription,
/**
* Indicate which users are speaking
*/
Speaking,
/**
* Sent to acknowledge a received client heartbeat
*/
HeartbeatAck,
/**
* Resume a connection
*/
Resume,
/**
* Time to wait between sending heartbeats in milliseconds
*/
Hello,
/**
* Acknowledge a successful session resume
*/
Resumed,
/**
* One or more clients have connected to the voice channel
*/
ClientsConnect = 11,
/**
* A client has disconnected from the voice channel
*/
ClientDisconnect = 13,
/**
* A downgrade from the DAVE protocol is upcoming
*/
DavePrepareTransition = 21,
/**
* Execute a previously announced protocol transition
*/
DaveExecuteTransition,
/**
* Acknowledge readiness previously announced transition
*/
DaveTransitionReady,
/**
* A DAVE protocol version or group change is upcoming
*/
DavePrepareEpoch,
/**
* Credential and public key for MLS external sender
*/
DaveMlsExternalSender,
/**
* MLS Key Package for pending group member
*/
DaveMlsKeyPackage,
/**
* MLS Proposals to be appended or revoked
*/
DaveMlsProposals,
/**
* MLS Commit with optional MLS Welcome messages
*/
DaveMlsCommitWelcome,
/**
* MLS Commit to be processed for upcoming transition
*/
DaveMlsAnnounceCommitTransition,
/**
* MLS Welcome to group for upcoming transition
*/
DaveMlsWelcome,
/**
* Flag invalid commit or welcome, request re-add
*/
DaveMlsInvalidCommitWelcome,
}
/**
* @see {@link https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-close-event-codes}
*/
export enum VoiceCloseCodes {
/**
* You sent an invalid opcode
*/
UnknownOpcode = 4_001,
/**
* You sent a invalid payload in your identifying to the Gateway
*/
FailedToDecode,
/**
* You sent a payload before identifying with the Gateway
*/
NotAuthenticated,
/**
* The token you sent in your identify payload is incorrect
*/
AuthenticationFailed,
/**
* You sent more than one identify payload. Stahp
*/
AlreadyAuthenticated,
/**
* Your session is no longer valid
*/
SessionNoLongerValid,
/**
* Your session has timed out
*/
SessionTimeout = 4_009,
/**
* We can't find the server you're trying to connect to
*/
ServerNotFound = 4_011,
/**
* We didn't recognize the protocol you sent
*/
UnknownProtocol,
/**
* Either the channel was deleted, you were kicked, or the main gateway session was dropped. Should not reconnect
*/
Disconnected = 4_014,
/**
* The server crashed. Our bad! Try resuming
*/
VoiceServerCrashed,
/**
* We didn't recognize your encryption
*/
UnknownEncryptionMode,
/**
* You sent a malformed request
*/
BadRequest = 4_020,
/**
* Disconnect due to rate limit exceeded. Should not reconnect
*/
RateLimited,
/**
* Disconnect all clients due to call terminated (channel deleted, voice server changed, etc.). Should not reconnect
*/
CallTerminated,
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#transport-encryption-modes}
*/
export enum VoiceEncryptionMode {
/**
* AEAD AES256-GCM (RTP Size)
*/
AeadAes256GcmRtpSize = 'aead_aes256_gcm_rtpsize',
/**
* AEAD XChaCha20 Poly1305 (RTP Size)
*/
AeadXChaCha20Poly1305RtpSize = 'aead_xchacha20_poly1305_rtpsize',
/**
* XSalsa20 Poly1305 Lite (RTP Size)
*
* @deprecated This encryption mode has been discontinued.
*/
XSalsa20Poly1305LiteRtpSize = 'xsalsa20_poly1305_lite_rtpsize',
/**
* AEAD AES256-GCM
*
* @deprecated This encryption mode has been discontinued.
*/
AeadAes256Gcm = 'aead_aes256_gcm',
/**
* XSalsa20 Poly1305
*
* @deprecated This encryption mode has been discontinued.
*/
XSalsa20Poly1305 = 'xsalsa20_poly1305',
/**
* XSalsa20 Poly1305 Suffix
*
* @deprecated This encryption mode has been discontinued.
*/
XSalsa20Poly1305Suffix = 'xsalsa20_poly1305_suffix',
/**
* XSalsa20 Poly1305 Lite
*
* @deprecated This encryption mode has been discontinued.
*/
XSalsa20Poly1305Lite = 'xsalsa20_poly1305_lite',
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#speaking}
*/
export enum VoiceSpeakingFlags {
/**
* Normal transmission of voice audio
*/
Microphone = 1 << 0,
/**
* Transmission of context audio for video, no speaking indicator
*/
Soundshare = 1 << 1,
/**
* Priority speaker, lowering audio of other speakers
*/
Priority = 1 << 2,
}
export type VoiceSendPayload =
| VoiceDaveMlsInvalidCommitWelcome
| VoiceDaveTransitionReady
| VoiceHeartbeat
| VoiceIdentify
| VoiceResume
| VoiceSelectProtocol
| VoiceSpeakingSend;
export type VoiceReceivePayload =
| VoiceClientDisconnect
| VoiceClientsConnect
| VoiceDaveExecuteTransition
| VoiceDavePrepareEpoch
| VoiceDavePrepareTransition
| VoiceHeartbeatAck
| VoiceHello
| VoiceReady
| VoiceResumed
| VoiceSessionDescription
| VoiceSpeaking;
// #region Server Payloads
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#heartbeating}
*/
export type VoiceHello = _DataPayload<VoiceOpcodes.Hello, VoiceHelloData>;
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#heartbeating}
*/
export interface VoiceHelloData {
/**
* Voice gateway version
*
* @see {@link https://discord.com/developers/docs/topics/voice-connections#voice-gateway-versioning-gateway-versions}
*/
v: number;
/**
* The interval (in milliseconds) the client should heartbeat with
*/
heartbeat_interval: number;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-websocket-connection}
*/
export type VoiceReady = _DataPayload<VoiceOpcodes.Ready, VoiceReadyData>;
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-websocket-connection}
*/
export interface VoiceReadyData {
/**
* SSRC identifier
*/
ssrc: number;
/**
* UDP IP
*/
ip: string;
/**
* UDP port
*/
port: number;
/**
* Supported encryption modes
*
* @see {@link https://discord.com/developers/docs/topics/voice-connections#transport-encryption-modes}
*/
modes: VoiceEncryptionMode[];
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#heartbeating}
*/
export type VoiceHeartbeatAck = _DataPayload<VoiceOpcodes.HeartbeatAck, VoiceHeartbeatAckData>;
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#heartbeating}
*/
export interface VoiceHeartbeatAckData {
/**
* The integer nonce
*/
t: number;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#transport-encryption-and-sending-voice}
*/
export type VoiceSessionDescription = _DataPayload<VoiceOpcodes.SessionDescription, VoiceSessionDescriptionData>;
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#transport-encryption-and-sending-voice}
*/
export interface VoiceSessionDescriptionData {
/**
* The selected mode
*/
mode: VoiceEncryptionMode;
/**
* The secret key
*/
secret_key: number[];
/**
* The selected DAVE protocol version
*
* @see {@link https://daveprotocol.com/#select_protocol_ack-4}
*/
dave_protocol_version: number;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#resuming-voice-connection}
*/
export type VoiceResumed = _DataPayload<VoiceOpcodes.Resumed, null>;
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#speaking}
*/
export type VoiceSpeaking = _DataPayload<VoiceOpcodes.Speaking, VoiceSpeakingData>;
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#speaking}
*/
export interface VoiceSpeakingData {
/**
* The speaking mode flags
*/
speaking: VoiceSpeakingFlags;
/**
* SSRC identifier
*/
ssrc: number;
/**
* User id
*/
user_id: Snowflake;
}
/**
* @see {@link https://daveprotocol.com/#clients_connect-11}
*/
export type VoiceClientsConnect = _DataPayload<VoiceOpcodes.ClientsConnect, VoiceClientsConnectData>;
/**
* @see {@link https://daveprotocol.com/#clients_connect-11}
*/
export interface VoiceClientsConnectData {
/**
* The connected user ids
*/
user_ids: Snowflake[];
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections}
*/
export type VoiceClientDisconnect = _DataPayload<VoiceOpcodes.ClientDisconnect, VoiceClientDisconnectData>;
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections}
*/
export interface VoiceClientDisconnectData {
/**
* The disconnected user id
*/
user_id: Snowflake;
}
/**
* @see {@link https://daveprotocol.com/#dave_protocol_prepare_transition-21}
*/
export type VoiceDavePrepareTransition = _DataPayload<VoiceOpcodes.DavePrepareTransition, VoiceDavePrepareTransitionData>;
/**
* @see {@link https://daveprotocol.com/#dave_protocol_prepare_transition-21}
*/
export interface VoiceDavePrepareTransitionData {
/**
* The protocol version
*/
protocol_version: number;
/**
* The transition id
*/
transition_id: number;
}
/**
* @see {@link https://daveprotocol.com/#dave_protocol_execute_transition-22}
*/
export type VoiceDaveExecuteTransition = _DataPayload<VoiceOpcodes.DaveExecuteTransition, VoiceDaveExecuteTransitionData>;
/**
* @see {@link https://daveprotocol.com/#dave_protocol_execute_transition-22}
*/
export interface VoiceDaveExecuteTransitionData {
/**
* The transition id
*/
transition_id: number;
}
/**
* @see {@link https://daveprotocol.com/#dave_mls_external_sender_package-25}
*/
export type VoiceDaveMlsExternalSender = VoiceBinaryPayload;
/**
* @see {@link https://daveprotocol.com/#dave_mls_proposals-27}
*/
export type VoiceDaveMlsProposals = VoiceBinaryPayload;
/**
* @see {@link https://daveprotocol.com/#dave_mls_announce_commit_transition-29}
*/
export type VoiceDaveMlsAnnounceCommitTransition = VoiceBinaryPayload;
/**
* @see {@link https://daveprotocol.com/#dave_mls_welcome-30}
*/
export type VoiceDaveMlsWelcome = VoiceBinaryPayload;
// #endregion Server Payloads
// #region Sendable Payloads
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-websocket-connection}
*/
export interface VoiceIdentify {
op: VoiceOpcodes.Identify;
d: VoiceIdentifyData;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-websocket-connection}
*/
export interface VoiceIdentifyData {
/**
* The id of the server to connect to
*/
server_id: Snowflake;
/**
* The id of the user to connect as
*/
user_id: Snowflake;
/**
* Voice state session id
*/
session_id: string;
/**
* Voice connection token
*/
token: string;
/**
* The maximum DAVE protocol version supported
*/
max_dave_protocol_version?: number;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-websocket-connection}
*/
export interface VoiceHeartbeat {
op: VoiceOpcodes.Heartbeat;
d: VoiceHeartbeatData;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-websocket-connection}
*/
export interface VoiceHeartbeatData {
/**
* The integer nonce
*/
t: number;
/**
* The last sequence number recieved
*/
seq_ack: number;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-udp-connection}
*/
export interface VoiceSelectProtocol {
op: VoiceOpcodes.SelectProtocol;
d: VoiceSelectProtocolData;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-udp-connection}
*/
export interface VoiceSelectProtocolData {
/**
* Voice protocol
*/
protocol: string;
/**
* Data associated with the protocol
*/
data: VoiceUDPProtocolData;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-udp-connection}
*/
export interface VoiceUDPProtocolData {
/**
* External address
*/
address: string;
/**
* External UDP port
*/
port: number;
/**
* Selected mode
*
* @see {@link https://discord.com/developers/docs/topics/voice-connections#transport-encryption-modes}
*/
mode: VoiceEncryptionMode;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#resuming-voice-connection}
*/
export interface VoiceResume {
op: VoiceOpcodes.Resume;
d: VoiceResumeData;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#resuming-voice-connection}
*/
export interface VoiceResumeData {
/**
* The id of the server to connect to
*/
server_id: Snowflake;
/**
* Voice state session id
*/
session_id: string;
/**
* Voice connection token
*/
token: string;
/**
* Last recieved sequence number
*/
seq_ack: number;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#speaking}
*/
export interface VoiceSpeakingSend {
op: VoiceOpcodes.Speaking;
d: VoiceSpeakingSendData;
}
/**
* @see {@link https://discord.com/developers/docs/topics/voice-connections#speaking}
*/
export interface VoiceSpeakingSendData {
/**
* The speaking mode flags
*/
speaking: VoiceSpeakingFlags;
/**
* Voice delay
*/
delay: number;
/**
* SSRC identifier
*/
ssrc: number;
}
/**
* @see {@link https://daveprotocol.com/#dave_protocol_ready_for_transition-23}
*/
export interface VoiceDaveTransitionReady {
op: VoiceOpcodes.DaveTransitionReady;
d: VoiceDaveTransitionReadyData;
}
/**
* @see {@link https://daveprotocol.com/#dave_protocol_ready_for_transition-23}
*/
export interface VoiceDaveTransitionReadyData {
/**
* The transition id
*/
transition_id: number;
}
/**
* @see {@link https://daveprotocol.com/#dave_protocol_prepare_epoch-24}
*/
export interface VoiceDavePrepareEpoch {
op: VoiceOpcodes.DavePrepareEpoch;
d: VoiceDavePrepareEpochData;
}
/**
* @see {@link https://daveprotocol.com/#dave_protocol_prepare_epoch-24}
*/
export interface VoiceDavePrepareEpochData {
/**
* The protocol version
*/
protocol_version: number;
/**
* The epoch id
*/
epoch: number;
}
/**
* @see {@link https://daveprotocol.com/#dave_mls_invalid_commit_welcome-31}
*/
export interface VoiceDaveMlsInvalidCommitWelcome {
op: VoiceOpcodes.DaveMlsInvalidCommitWelcome;
d: VoiceDaveMlsInvalidCommitWelcomeData;
}
/**
* @see {@link https://daveprotocol.com/#dave_mls_invalid_commit_welcome-31}
*/
export interface VoiceDaveMlsInvalidCommitWelcomeData {
/**
* The transition id
*/
transition_id: number;
}
/**
* @see {@link https://daveprotocol.com/#dave_mls_key_package-26}
*/
export type VoiceDaveMlsKeyPackage = VoiceBinaryPayload;
/**
* @see {@link https://daveprotocol.com/#dave_mls_commit_welcome-28}
*/
export type VoiceDaveMlsCommitWelcome = VoiceBinaryPayload;
// #endregion
// #region Shared
export interface _BasePayload {
/**
* Opcode for the payload
*/
op: VoiceOpcodes;
/**
* Event data
*/
d?: unknown;
/**
* Sequence number, used for resuming sessions and heartbeats
*/
seq?: number;
}
export interface _DataPayload<Op extends VoiceOpcodes, D = unknown> extends _BasePayload {
op: Op;
d: D;
}
export type VoiceBinaryPayload = ArrayBuffer;
// #endregion Shared

View File

@@ -1,4 +1,5 @@
import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
import type { TSESTree, TSESLint } from '@typescript-eslint/utils';
import { AST_NODE_TYPES, ESLintUtils } from '@typescript-eslint/utils';
import common from 'eslint-config-neon/common';
import node from 'eslint-config-neon/node';
import prettier from 'eslint-config-neon/prettier';
@@ -6,15 +7,10 @@ import ts from 'eslint-config-neon/typescript';
import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript';
import merge from 'lodash.merge';
import * as tsutils from 'tsutils';
import * as typescript from 'typescript';
import typescript from 'typescript';
import { config } from 'typescript-eslint';
/**
* @param {import('@typescript-eslint/utils').TSESTree.TSPropertySignature} eslNode
* @param {string[]} interfaceEndings
* @returns {boolean}
*/
function shouldRun(eslNode, interfaceEndings) {
function shouldRun(eslNode: TSESTree.TSPropertySignature, interfaceEndings: string[]): boolean {
// The first parent is the TSInterfaceBody, the second is the TSInterfaceDeclaration
const interfaceNode = eslNode.parent?.parent;
if (!(interfaceNode && 'id' in interfaceNode && interfaceNode.id?.type === AST_NODE_TYPES.Identifier)) {
@@ -32,22 +28,11 @@ function shouldRun(eslNode, interfaceEndings) {
const REST_TYPE_NAME_REGEX =
/^REST(?:Get|Patch|Post|Put|Delete)[\dA-Za-z]+(?:JSONBody|FormDataBody|URLEncodedData|Result|Query)$/;
/**
* @typedef {[{ interfaceEndings: string[] }]} Options
*/
type Options = [{ interfaceEndings: string[] }];
/** @type {typeof ESLintUtils.RuleCreator.withoutDocs<Options, 'missingOptional'>} */
const MissingOptionalRuleCreator = ESLintUtils.RuleCreator.withoutDocs;
/** @type {typeof ESLintUtils.RuleCreator.withoutDocs<Options, 'missingUndefined'>} */
const MissingUndefinedRuleCreator = ESLintUtils.RuleCreator.withoutDocs;
/** @type {typeof ESLintUtils.RuleCreator.withoutDocs<[{ whitelist: string[] }], 'invalidName'>} */
const RestTypeNameConventionRuleCreator = ESLintUtils.RuleCreator.withoutDocs;
const localPlugin = {
const localPlugin: TSESLint.FlatConfig.Plugin = {
rules: {
'explicitly-optional-undefined-properties': MissingOptionalRuleCreator({
'explicitly-optional-undefined-properties': ESLintUtils.RuleCreator.withoutDocs<Options, 'missingOptional'>({
create: (context) => {
const { interfaceEndings } = context.options[0];
return {
@@ -101,7 +86,7 @@ const localPlugin = {
},
defaultOptions: [{ interfaceEndings: [] }],
}),
'explicit-undefined-on-optional-properties': MissingUndefinedRuleCreator({
'explicit-undefined-on-optional-properties': ESLintUtils.RuleCreator.withoutDocs<Options, 'missingUndefined'>({
create: (context) => {
const { interfaceEndings } = context.options[0];
return {
@@ -119,9 +104,15 @@ const localPlugin = {
}
const { typeAnnotation } = eslNode.typeAnnotation;
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
switch (typeAnnotation.type) {
case AST_NODE_TYPES.TSUnionType: {
if (typeAnnotation.types.some((t) => t.type === AST_NODE_TYPES.TSUndefinedKeyword)) {
if (
typeAnnotation.types.some(
(tNode) => tNode.type === AST_NODE_TYPES.TSUndefinedKeyword,
)
) {
return;
}
@@ -136,13 +127,7 @@ const localPlugin = {
context.report({
node: eslNode,
messageId: 'missingUndefined',
fix: (fixer) =>
fixer.insertTextAfter(
/** @type {Exclude<typeof eslNode.typeAnnotation, undefined>} */ (
eslNode.typeAnnotation
),
' | undefined',
),
fix: (fixer) => fixer.insertTextAfter(eslNode.typeAnnotation!, ' | undefined'),
});
},
};
@@ -169,17 +154,15 @@ const localPlugin = {
},
defaultOptions: [{ interfaceEndings: [] }],
}),
'rest-type-naming-convention': RestTypeNameConventionRuleCreator({
'rest-type-naming-convention': ESLintUtils.RuleCreator.withoutDocs<[{ whitelist: string[] }], 'invalidName'>({
create: (context) => {
const { whitelist } = context.options[0];
const whitelistSet = new Set(whitelist);
return {
'TSTypeAliasDeclaration, TSInterfaceDeclaration': (_node) => {
const node = /** @type {TSESTree.TSTypeAliasDeclaration | TSESTree.TSInterfaceDeclaration} */ (
_node
);
'TSTypeAliasDeclaration, TSInterfaceDeclaration': (
node: TSESTree.TSInterfaceDeclaration | TSESTree.TSTypeAliasDeclaration,
) => {
if (node.id.type !== AST_NODE_TYPES.Identifier) {
return;
}
@@ -267,6 +250,8 @@ export default config([
'djs/**/*',
'.yarn/*',
'_generated_/**/*',
],
},
commonRuleset,

View File

@@ -3,7 +3,6 @@
*/
import type { Snowflake } from '../globals';
import type { GatewayPresenceUpdate } from '../payloads/v10/gateway';
import type {
APIApplication,
APIApplicationCommandPermission,
@@ -16,7 +15,6 @@ import type {
APIGuildMember,
APIGuildScheduledEvent,
APIInteraction,
APIMessage,
APIRole,
APIStageInstance,
APISticker,
@@ -25,10 +23,9 @@ import type {
APIUnavailableGuild,
APIUser,
GatewayActivity,
GatewayPresenceUpdate as RawGatewayPresenceUpdate,
GatewayThreadListSync as RawGatewayThreadListSync,
GatewayPresenceUpdate,
GatewayThreadListSync,
GatewayThreadMembersUpdate as RawGatewayThreadMembersUpdate,
APIVoiceState,
InviteTargetType,
PresenceUpdateStatus,
AutoModerationRuleTriggerType,
@@ -39,6 +36,17 @@ import type {
APISoundboardSound,
GuildChannelType,
ThreadChannelType,
APIBaseGuild,
APIBaseGuildMember,
APIBaseVoiceState,
APIBaseVoiceGuildMember,
APIGuildMemberJoined,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
APIGuildMemberUser,
GatewayGuildMembersChunkPresence,
APIBaseMessage,
APIVoiceState,
} from '../payloads/v10/index';
import type { ReactionType } from '../rest/v10/index';
import type { _Nullable } from '../utils/internals';
@@ -278,6 +286,7 @@ export enum GatewayDispatchEvents {
MessageReactionRemoveEmoji = 'MESSAGE_REACTION_REMOVE_EMOJI',
MessageUpdate = 'MESSAGE_UPDATE',
PresenceUpdate = 'PRESENCE_UPDATE',
RateLimited = 'RATE_LIMITED',
Ready = 'READY',
Resumed = 'RESUMED',
StageInstanceCreate = 'STAGE_INSTANCE_CREATE',
@@ -366,6 +375,7 @@ export type GatewayDispatchPayload =
| GatewayMessageReactionRemoveEmojiDispatch
| GatewayMessageUpdateDispatch
| GatewayPresenceUpdateDispatch
| GatewayRateLimitedDispatch
| GatewayReadyDispatch
| GatewayResumedDispatch
| GatewaySoundboardSoundsDispatch
@@ -789,9 +799,7 @@ export type GatewayEntitlementModifyDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#entitlement-create}
*/
export type GatewayEntitlementCreateDispatchData = Omit<GatewayEntitlementModifyDispatchData, 'ends_at'> & {
ends_at: GatewayEntitlementModifyDispatchData['ends_at'] | null;
};
export type GatewayEntitlementCreateDispatchData = GatewayEntitlementModifyDispatchData;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#entitlement-create}
@@ -873,7 +881,7 @@ export interface GatewayGuildCreateDispatchData extends APIGuild {
*
* @see {@link https://discord.com/developers/docs/resources/voice#voice-state-object}
*/
voice_states: Omit<APIVoiceState, 'guild_id'>[];
voice_states: APIBaseVoiceState[];
/**
* Users in the guild
*
@@ -953,7 +961,7 @@ export type GatewayGuildDeleteDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-delete}
*/
export interface GatewayGuildDeleteDispatchData extends Omit<APIUnavailableGuild, 'unavailable'> {
export interface GatewayGuildDeleteDispatchData extends APIBaseGuild {
/**
* `true` if this guild is unavailable due to an outage
*
@@ -1127,15 +1135,18 @@ export type GatewayGuildMemberUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-member-update}
*/
export type GatewayGuildMemberUpdateDispatchData = _Nullable<Pick<APIGuildMember, 'joined_at'>> &
Omit<APIGuildMember, 'deaf' | 'flags' | 'joined_at' | 'mute' | 'user'> &
Partial<Pick<APIGuildMember, 'deaf' | 'flags' | 'mute'>> &
Required<Pick<APIGuildMember, 'avatar' | 'banner' | 'user'>> & {
/**
* The id of the guild
*/
guild_id: Snowflake;
};
export interface GatewayGuildMemberUpdateDispatchData
extends APIGuildMemberJoined,
APIBaseGuildMember,
Partial<APIBaseVoiceGuildMember>,
Partial<APIFlaggedGuildMember>,
Required<APIGuildMemberAvatar>,
Required<APIGuildMemberUser> {
/**
* The id of the guild
*/
guild_id: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk}
@@ -1145,11 +1156,6 @@ export type GatewayGuildMembersChunkDispatch = _DataPayload<
GatewayGuildMembersChunkDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#update-presence}
*/
export type GatewayGuildMembersChunkPresence = Omit<RawGatewayPresenceUpdate, 'guild_id'>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk}
*/
@@ -1556,6 +1562,10 @@ export interface GatewayInviteCreateDispatchData {
* How many times the invite has been used (always will be `0`)
*/
uses: 0;
/**
* The expiration date of this invite.
*/
expires_at: string | null;
}
/**
@@ -1597,7 +1607,7 @@ export type GatewayMessageCreateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-create}
*/
export type GatewayMessageCreateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
export interface GatewayMessageCreateDispatchData extends GatewayMessageEventExtraFields, APIBaseMessage {}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-update}
@@ -1610,7 +1620,24 @@ export type GatewayMessageUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-update}
*/
export type GatewayMessageUpdateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
export interface GatewayMessageUpdateDispatchData extends GatewayMessageEventExtraFields, APIBaseMessage {}
export interface APIGuildMemberNoUser
extends APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
NonNullable<APIGuildMemberJoined>,
APIBaseVoiceGuildMember {}
export interface APIUserWithMember extends APIUser {
/**
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMemberNoUser;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-create-message-create-extra-fields}
@@ -1628,17 +1655,13 @@ export interface GatewayMessageEventExtraFields {
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: Omit<APIGuildMember, 'user'>;
member?: APIGuildMemberNoUser;
/**
* Users specifically mentioned in the message
*
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
mentions: APIUserWithMember[];
}
/**
@@ -1696,25 +1719,74 @@ export interface GatewayMessageDeleteBulkDispatchData {
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-add}
*/
export type GatewayMessageReactionAddDispatch = GatewayMessageReactionData<GatewayDispatchEvents.MessageReactionAdd>;
export interface GatewayMessageReactionAddDispatchData extends GatewayMessageReactionRemoveDispatchData {
/**
* The member who reacted if this happened in a guild
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
/**
* The id of the user that posted the message that was reacted to
*/
message_author_id?: Snowflake;
/**
* Colors used for super-reaction animation in "#rrggbb" format
*/
burst_colors?: string[];
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-add}
*/
export type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d'];
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatch = GatewayMessageReactionData<
GatewayDispatchEvents.MessageReactionRemove,
'burst_colors' | 'member' | 'message_author_id'
export type GatewayMessageReactionAddDispatch = _DataPayload<
GatewayDispatchEvents.MessageReactionAdd,
GatewayMessageReactionAddDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d'];
export interface GatewayMessageReactionRemoveDispatchData {
/**
* The id of the user
*/
user_id: Snowflake;
/**
* The id of the channel
*/
channel_id: Snowflake;
/**
* The id of the message
*/
message_id: Snowflake;
/**
* The id of the guild
*/
guild_id?: Snowflake;
/**
* The emoji used to react
*
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
*/
emoji: APIEmoji;
/**
* True if this is a super-reaction
*/
burst: boolean;
/**
* The type of reaction
*/
type: ReactionType;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatch = _DataPayload<
GatewayDispatchEvents.MessageReactionRemove,
GatewayMessageReactionRemoveDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-all}
@@ -1758,7 +1830,7 @@ export type GatewayPresenceUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#presence-update}
*/
export type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate;
export type GatewayPresenceUpdateDispatchData = GatewayPresenceUpdate;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#stage-instance-create}
@@ -1810,7 +1882,7 @@ export type GatewayThreadListSyncDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#thread-list-sync}
*/
export type GatewayThreadListSyncDispatchData = RawGatewayThreadListSync;
export type GatewayThreadListSyncDispatchData = GatewayThreadListSync;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#thread-members-update}
@@ -2147,6 +2219,73 @@ export interface GatewayMessagePollVoteDispatchData {
answer_id: number;
}
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedDispatch<
Opcode extends keyof GatewayOpcodeRateLimitMetadataMap = keyof GatewayOpcodeRateLimitMetadataMap,
> = _DataPayload<GatewayDispatchEvents.RateLimited, GatewayRateLimitedDispatchData<Opcode>>;
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedRequestGuildMembersDispatch =
GatewayRateLimitedDispatch<GatewayOpcodes.RequestGuildMembers>;
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export interface GatewayRateLimitedDispatchData<
Opcode extends keyof GatewayOpcodeRateLimitMetadataMap = keyof GatewayOpcodeRateLimitMetadataMap,
> {
/**
* {@link GatewayOpcodes | Gateway opcode} of the event that was rate limited
*/
opcode: Opcode;
/**
* The number of seconds to wait before submitting another request
*/
retry_after: number;
/**
* Metadata for the event that was rate limited
*/
meta: GatewayOpcodeRateLimitMetadataMap[Opcode];
}
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedRequestGuildMembersDispatchData =
GatewayRateLimitedDispatchData<GatewayOpcodes.RequestGuildMembers>;
/**
* Map of gateway opcodes to their rate limit metadata types
*
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited-rate-limit-metadata-for-opcode-structure}
*/
export interface GatewayOpcodeRateLimitMetadataMap {
[GatewayOpcodes.RequestGuildMembers]: GatewayRequestGuildMemberRateLimitMetadata;
}
/**
* Types of metadata that can be received in a {@link GatewayRateLimitedDispatchData.meta} field
*/
export type GatewayRateLimitedMetadata = GatewayOpcodeRateLimitMetadataMap[keyof GatewayOpcodeRateLimitMetadataMap];
/**
* Rate limit metadata for the {@link GatewayOpcodes.RequestGuildMembers} opcode
*/
export interface GatewayRequestGuildMemberRateLimitMetadata {
/**
* Id of the guild members were requested for
*/
guild_id: Snowflake;
/**
* Nonce used to identify the {@link GatewayGuildMembersChunkDispatch} response
*/
nonce?: string;
}
// #endregion Dispatch Payloads
// #region Sendable Payloads
@@ -2415,7 +2554,7 @@ export type GatewayActivityUpdateData = Pick<GatewayActivity, 'name' | 'state' |
// #endregion Sendable Payloads
// #region Shared
export interface _BasePayload {
export interface _BaseBasePayload {
/**
* Opcode for the payload
*/
@@ -2424,6 +2563,9 @@ export interface _BasePayload {
* Event data
*/
d?: unknown;
}
export interface _BasePayload {
/**
* Sequence number, used for resuming sessions and heartbeats
*/
@@ -2434,10 +2576,10 @@ export interface _BasePayload {
t?: string;
}
export type _NonDispatchPayload = Omit<_BasePayload, 's' | 't'> & {
export interface _NonDispatchPayload extends _BaseBasePayload {
t: null;
s: null;
};
}
export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown> extends _BasePayload {
op: GatewayOpcodes.Dispatch;
@@ -2445,57 +2587,10 @@ export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown>
d: D;
}
// This is not used internally anymore, just remains to be non-breaking
export type GatewayMessageReactionData<E extends GatewayDispatchEvents, O extends string = never> = _DataPayload<
E,
Omit<
{
/**
* The id of the user
*/
user_id: Snowflake;
/**
* The id of the channel
*/
channel_id: Snowflake;
/**
* The id of the message
*/
message_id: Snowflake;
/**
* The id of the guild
*/
guild_id?: Snowflake;
/**
* The member who reacted if this happened in a guild
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
/**
* The emoji used to react
*
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
*/
emoji: APIEmoji;
/**
* The id of the user that posted the message that was reacted to
*/
message_author_id?: Snowflake;
/**
* True if this is a super-reaction
*/
burst: boolean;
/**
* Colors used for super-reaction animation in "#rrggbb" format
*/
burst_colors: string[];
/**
* The type of reaction
*/
type: ReactionType;
},
O
>
Omit<GatewayMessageReactionAddDispatchData, O>
>;
export interface GatewayMessageReactionRemoveData {

View File

@@ -3,7 +3,6 @@
*/
import type { Snowflake } from '../globals';
import type { GatewayPresenceUpdate } from '../payloads/v9/gateway';
import type {
APIApplication,
APIApplicationCommandPermission,
@@ -16,7 +15,6 @@ import type {
APIGuildMember,
APIGuildScheduledEvent,
APIInteraction,
APIMessage,
APIRole,
APIStageInstance,
APISticker,
@@ -25,10 +23,9 @@ import type {
APIUnavailableGuild,
APIUser,
GatewayActivity,
GatewayPresenceUpdate as RawGatewayPresenceUpdate,
GatewayThreadListSync as RawGatewayThreadListSync,
GatewayPresenceUpdate,
GatewayThreadListSync,
GatewayThreadMembersUpdate as RawGatewayThreadMembersUpdate,
APIVoiceState,
InviteTargetType,
PresenceUpdateStatus,
AutoModerationRuleTriggerType,
@@ -39,6 +36,17 @@ import type {
GuildChannelType,
ThreadChannelType,
APIEntitlement,
APIBaseGuild,
APIBaseGuildMember,
APIBaseVoiceState,
APIBaseVoiceGuildMember,
APIFlaggedGuildMember,
APIGuildMemberUser,
APIGuildMemberAvatar,
GatewayGuildMembersChunkPresence,
APIBaseMessage,
APIGuildMemberJoined,
APIVoiceState,
} from '../payloads/v9/index';
import type { ReactionType } from '../rest/v9/index';
import type { _Nullable } from '../utils/internals';
@@ -277,6 +285,7 @@ export enum GatewayDispatchEvents {
MessageReactionRemoveEmoji = 'MESSAGE_REACTION_REMOVE_EMOJI',
MessageUpdate = 'MESSAGE_UPDATE',
PresenceUpdate = 'PRESENCE_UPDATE',
RateLimited = 'RATE_LIMITED',
Ready = 'READY',
Resumed = 'RESUMED',
StageInstanceCreate = 'STAGE_INSTANCE_CREATE',
@@ -365,6 +374,7 @@ export type GatewayDispatchPayload =
| GatewayMessageReactionRemoveEmojiDispatch
| GatewayMessageUpdateDispatch
| GatewayPresenceUpdateDispatch
| GatewayRateLimitedDispatch
| GatewayReadyDispatch
| GatewayResumedDispatch
| GatewaySoundboardSoundsDispatch
@@ -788,9 +798,7 @@ export type GatewayEntitlementModifyDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#entitlement-create}
*/
export type GatewayEntitlementCreateDispatchData = Omit<GatewayEntitlementModifyDispatchData, 'ends_at'> & {
ends_at: GatewayEntitlementModifyDispatchData['ends_at'] | null;
};
export type GatewayEntitlementCreateDispatchData = GatewayEntitlementModifyDispatchData;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#entitlement-create}
@@ -872,7 +880,7 @@ export interface GatewayGuildCreateDispatchData extends APIGuild {
*
* @see {@link https://discord.com/developers/docs/resources/voice#voice-state-object}
*/
voice_states: Omit<APIVoiceState, 'guild_id'>[];
voice_states: APIBaseVoiceState[];
/**
* Users in the guild
*
@@ -952,7 +960,7 @@ export type GatewayGuildDeleteDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-delete}
*/
export interface GatewayGuildDeleteDispatchData extends Omit<APIUnavailableGuild, 'unavailable'> {
export interface GatewayGuildDeleteDispatchData extends APIBaseGuild {
/**
* `true` if this guild is unavailable due to an outage
*
@@ -1126,15 +1134,18 @@ export type GatewayGuildMemberUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-member-update}
*/
export type GatewayGuildMemberUpdateDispatchData = _Nullable<Pick<APIGuildMember, 'joined_at'>> &
Omit<APIGuildMember, 'deaf' | 'flags' | 'joined_at' | 'mute' | 'user'> &
Partial<Pick<APIGuildMember, 'deaf' | 'flags' | 'mute'>> &
Required<Pick<APIGuildMember, 'avatar' | 'banner' | 'user'>> & {
/**
* The id of the guild
*/
guild_id: Snowflake;
};
export interface GatewayGuildMemberUpdateDispatchData
extends APIGuildMemberJoined,
APIBaseGuildMember,
Partial<APIBaseVoiceGuildMember>,
Partial<APIFlaggedGuildMember>,
Required<APIGuildMemberUser>,
Required<APIGuildMemberAvatar> {
/**
* The id of the guild
*/
guild_id: Snowflake;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk}
@@ -1144,11 +1155,6 @@ export type GatewayGuildMembersChunkDispatch = _DataPayload<
GatewayGuildMembersChunkDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#update-presence}
*/
export type GatewayGuildMembersChunkPresence = Omit<RawGatewayPresenceUpdate, 'guild_id'>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk}
*/
@@ -1555,6 +1561,10 @@ export interface GatewayInviteCreateDispatchData {
* How many times the invite has been used (always will be `0`)
*/
uses: 0;
/**
* The expiration date of this invite.
*/
expires_at: string | null;
}
/**
@@ -1596,7 +1606,7 @@ export type GatewayMessageCreateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-create}
*/
export type GatewayMessageCreateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
export interface GatewayMessageCreateDispatchData extends GatewayMessageEventExtraFields, APIBaseMessage {}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-update}
@@ -1609,7 +1619,24 @@ export type GatewayMessageUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-update}
*/
export type GatewayMessageUpdateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
export interface GatewayMessageUpdateDispatchData extends GatewayMessageEventExtraFields, APIBaseMessage {}
export interface APIGuildMemberNoUser
extends APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
NonNullable<APIGuildMemberJoined>,
APIBaseVoiceGuildMember {}
export interface APIUserWithMember extends APIUser {
/**
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMemberNoUser;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-create-message-create-extra-fields}
@@ -1627,17 +1654,13 @@ export interface GatewayMessageEventExtraFields {
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: Omit<APIGuildMember, 'user'>;
member?: APIGuildMemberNoUser;
/**
* Users specifically mentioned in the message
*
* The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events
* from text-based guild channels
*
* @see {@link https://discord.com/developers/docs/resources/user#user-object}
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];
mentions: APIUserWithMember[];
}
/**
@@ -1695,25 +1718,74 @@ export interface GatewayMessageDeleteBulkDispatchData {
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-add}
*/
export type GatewayMessageReactionAddDispatch = GatewayMessageReactionData<GatewayDispatchEvents.MessageReactionAdd>;
export interface GatewayMessageReactionAddDispatchData extends GatewayMessageReactionRemoveDispatchData {
/**
* The member who reacted if this happened in a guild
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
/**
* The id of the user that posted the message that was reacted to
*/
message_author_id?: Snowflake;
/**
* Colors used for super-reaction animation in "#rrggbb" format
*/
burst_colors?: string[];
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-add}
*/
export type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d'];
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatch = GatewayMessageReactionData<
GatewayDispatchEvents.MessageReactionRemove,
'burst_colors' | 'member' | 'message_author_id'
export type GatewayMessageReactionAddDispatch = _DataPayload<
GatewayDispatchEvents.MessageReactionAdd,
GatewayMessageReactionAddDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d'];
export interface GatewayMessageReactionRemoveDispatchData {
/**
* The id of the user
*/
user_id: Snowflake;
/**
* The id of the channel
*/
channel_id: Snowflake;
/**
* The id of the message
*/
message_id: Snowflake;
/**
* The id of the guild
*/
guild_id?: Snowflake;
/**
* The emoji used to react
*
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
*/
emoji: APIEmoji;
/**
* True if this is a super-reaction
*/
burst: boolean;
/**
* The type of reaction
*/
type: ReactionType;
}
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove}
*/
export type GatewayMessageReactionRemoveDispatch = _DataPayload<
GatewayDispatchEvents.MessageReactionRemove,
GatewayMessageReactionRemoveDispatchData
>;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-all}
@@ -1757,7 +1829,7 @@ export type GatewayPresenceUpdateDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#presence-update}
*/
export type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate;
export type GatewayPresenceUpdateDispatchData = GatewayPresenceUpdate;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#stage-instance-create}
@@ -1809,7 +1881,7 @@ export type GatewayThreadListSyncDispatch = _DataPayload<
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#thread-list-sync}
*/
export type GatewayThreadListSyncDispatchData = RawGatewayThreadListSync;
export type GatewayThreadListSyncDispatchData = GatewayThreadListSync;
/**
* @see {@link https://discord.com/developers/docs/topics/gateway-events#thread-members-update}
@@ -2146,6 +2218,73 @@ export interface GatewayMessagePollVoteDispatchData {
answer_id: number;
}
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedDispatch<
Opcode extends keyof GatewayOpcodeRateLimitMetadataMap = keyof GatewayOpcodeRateLimitMetadataMap,
> = _DataPayload<GatewayDispatchEvents.RateLimited, GatewayRateLimitedDispatchData<Opcode>>;
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedRequestGuildMembersDispatch =
GatewayRateLimitedDispatch<GatewayOpcodes.RequestGuildMembers>;
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export interface GatewayRateLimitedDispatchData<
Opcode extends keyof GatewayOpcodeRateLimitMetadataMap = keyof GatewayOpcodeRateLimitMetadataMap,
> {
/**
* {@link GatewayOpcodes | Gateway opcode} of the event that was rate limited
*/
opcode: Opcode;
/**
* The number of seconds to wait before submitting another request
*/
retry_after: number;
/**
* Metadata for the event that was rate limited
*/
meta: GatewayOpcodeRateLimitMetadataMap[Opcode];
}
/**
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited}
*/
export type GatewayRateLimitedRequestGuildMembersDispatchData =
GatewayRateLimitedDispatchData<GatewayOpcodes.RequestGuildMembers>;
/**
* Map of gateway opcodes to their rate limit metadata types
*
* @see {@link https://discord.com/developers/docs/events/gateway-events#rate-limited-rate-limit-metadata-for-opcode-structure}
*/
export interface GatewayOpcodeRateLimitMetadataMap {
[GatewayOpcodes.RequestGuildMembers]: GatewayRequestGuildMemberRateLimitMetadata;
}
/**
* Types of metadata that can be received in a {@link GatewayRateLimitedDispatchData.meta} field
*/
export type GatewayRateLimitedMetadata = GatewayOpcodeRateLimitMetadataMap[keyof GatewayOpcodeRateLimitMetadataMap];
/**
* Rate limit metadata for the {@link GatewayOpcodes.RequestGuildMembers} opcode
*/
export interface GatewayRequestGuildMemberRateLimitMetadata {
/**
* Id of the guild members were requested for
*/
guild_id: Snowflake;
/**
* Nonce used to identify the {@link GatewayGuildMembersChunkDispatch} response
*/
nonce?: string;
}
// #endregion Dispatch Payloads
// #region Sendable Payloads
@@ -2414,7 +2553,8 @@ export type GatewayActivityUpdateData = Pick<GatewayActivity, 'name' | 'state' |
// #endregion Sendable Payloads
// #region Shared
export interface _BasePayload {
export interface _BaseBasePayload {
/**
* Opcode for the payload
*/
@@ -2423,6 +2563,8 @@ export interface _BasePayload {
* Event data
*/
d?: unknown;
}
export interface _BasePayload extends _BaseBasePayload {
/**
* Sequence number, used for resuming sessions and heartbeats
*/
@@ -2433,10 +2575,10 @@ export interface _BasePayload {
t?: string;
}
export type _NonDispatchPayload = Omit<_BasePayload, 's' | 't'> & {
export interface _NonDispatchPayload extends _BaseBasePayload {
t: null;
s: null;
};
}
export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown> extends _BasePayload {
op: GatewayOpcodes.Dispatch;
@@ -2444,57 +2586,10 @@ export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown>
d: D;
}
// This is not used internally anymore, just remains to be non-breaking
export type GatewayMessageReactionData<E extends GatewayDispatchEvents, O extends string = never> = _DataPayload<
E,
Omit<
{
/**
* The id of the user
*/
user_id: Snowflake;
/**
* The id of the channel
*/
channel_id: Snowflake;
/**
* The id of the message
*/
message_id: Snowflake;
/**
* The id of the guild
*/
guild_id?: Snowflake;
/**
* The member who reacted if this happened in a guild
*
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
member?: APIGuildMember;
/**
* The emoji used to react
*
* @see {@link https://discord.com/developers/docs/resources/emoji#emoji-object}
*/
emoji: APIEmoji;
/**
* The id of the user that posted the message that was reacted to
*/
message_author_id?: Snowflake;
/**
* True if this is a super-reaction
*/
burst: boolean;
/**
* Colors used for super-reaction animation in "#rrggbb" format
*/
burst_colors?: string[];
/**
* The type of reaction
*/
type: ReactionType;
},
O
>
Omit<GatewayMessageReactionAddDispatchData, O>
>;
export interface GatewayMessageReactionRemoveData {

View File

@@ -76,8 +76,8 @@ export const FormattingPatterns = {
*
* The `timestamp` and `style` group properties are present on the `exec` result of this expression
*/
// eslint-disable-next-line prefer-named-capture-group
Timestamp: /<t:(?<timestamp>-?\d{1,13})(:(?<style>[DFRTdft]))?>/,
// eslint-disable-next-line prefer-named-capture-group, unicorn/better-regex
Timestamp: /<t:(?<timestamp>-?\d{1,13})(:(?<style>[DFRSTdfst]))?>/,
/**
* Regular expression for matching strictly default styled timestamps
*

View File

@@ -1,6 +1,6 @@
{
"name": "discord-api-types",
"version": "0.38.9",
"version": "0.38.33",
"description": "Discord API typings that are kept up to date for use in bot library creation.",
"homepage": "https://discord-api-types.dev",
"workspaces": [
@@ -96,7 +96,8 @@
"scripts": {
"build:ci": "tsc --noEmit --incremental false",
"build:deno": "node ./scripts/deno.mjs",
"build:node": "tsc && run-p 'esm:*'",
"build:generated": "tsx ./scripts/generate-prettier-routes-interface.ts",
"build:node": "yarn build:generated && tsc && run-p 'esm:*'",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
"ci:pr": "run-s changelog lint build:deno && node ./scripts/bump-website-version.mjs",
"clean:deno": "rimraf deno/",
@@ -113,7 +114,7 @@
"lint": "prettier --write . && eslint --format=pretty --fix --ext mjs,ts \"{gateway,payloads,rest,rpc,voice,utils}/**/*.ts\" \"{globals,v*}.ts\" \"scripts/**/*.mjs\"",
"postinstallDev": "is-ci || husky",
"prepack": "run-s clean test:lint build:node",
"postpack": "run-s clean:node build:deno",
"postpack": "run-s clean:node build:deno && git checkout -- './deno/**/*.ts' './rest/**/*.ts'",
"test:lint": "prettier --check . && eslint --format=pretty --ext mjs,ts \"{gateway,payloads,rest,rpc,voice,utils}/**/*.ts\" \"{globals,v*}.ts\" \"scripts/**/*.mjs\"",
"test:types": "tsc -p tests"
},
@@ -126,12 +127,13 @@
"author": "Vlad Frangu <me@vladfrangu.dev>",
"license": "MIT",
"files": [
"_generated_/**/*.{js,js.map,d.ts,d.ts.map,mjs}",
"{gateway,payloads,rest,rpc,voice,utils}/**/*.{js,js.map,d.ts,d.ts.map,mjs}",
"{globals,v*}.{js,js.map,d.ts,d.ts.map,mjs}"
],
"devDependencies": {
"@commitlint/cli": "^19.8.1",
"@commitlint/config-angular": "^19.8.1",
"@commitlint/cli": "^20.0.0",
"@commitlint/config-angular": "^20.0.0",
"@favware/npm-deprecate": "^2.0.0",
"@octokit/action": "^8.0.2",
"@octokit/webhooks-types": "^7.6.1",
@@ -144,7 +146,7 @@
"conventional-recommended-bump": "^11.1.0",
"eslint": "^9.28.0",
"eslint-config-neon": "^0.2.7",
"eslint-formatter-pretty": "^6.0.1",
"eslint-formatter-pretty": "^7.0.0",
"eslint-import-resolver-typescript": "^4.4.2",
"gen-esm-wrapper": "^1.1.3",
"husky": "^9.1.7",
@@ -155,8 +157,9 @@
"prettier": "^3.5.3",
"pretty-quick": "^4.1.1",
"rimraf": "^6.0.1",
"ts-morph": "^27.0.0",
"tsutils": "^3.21.0",
"tsx": "^4.19.4",
"tsx": "^4.20.3",
"typescript": "^5.8.3",
"typescript-eslint": "^8.33.0"
},
@@ -204,9 +207,9 @@
]
}
},
"packageManager": "yarn@4.9.1",
"packageManager": "yarn@4.10.3",
"volta": {
"node": "24.1.0",
"yarn": "4.9.1"
"node": "24.11.0",
"yarn": "4.10.3"
}
}

View File

@@ -288,6 +288,18 @@ export const PermissionFlagsBits = {
* Applies to channel types: Text, Voice, Stage
*/
UseExternalApps: 1n << 50n,
/**
* Allows pinning and unpinning messages
*
* Applies to channel types: Text
*/
PinMessages: 1n << 51n,
/**
* @unstable Allows for bypassing slowmode restrictions. Not (yet) documented.
*
* Applies to text-based and thread-based channel types.
*/
BypassSlowmode: 1n << 52n,
} as const;
/**

View File

@@ -5,7 +5,7 @@ import type { ApplicationCommandOptionType } from './shared';
export interface APIApplicationCommandChannelOption
extends APIApplicationCommandOptionBase<ApplicationCommandOptionType.Channel> {
channel_types?: Exclude<ChannelType, ChannelType.DM | ChannelType.GroupDM>[];
channel_types?: Exclude<ChannelType, ChannelType.DM | ChannelType.GroupDM | ChannelType.GuildDirectory>[];
}
export type APIApplicationCommandInteractionDataChannelOption = APIInteractionDataOptionBase<

View File

@@ -1,5 +1,5 @@
import type { Snowflake } from '../../../../globals';
import type { APIMessage } from '../../channel';
import type { APIMessage } from '../../message';
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands';
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIUserInteractionDataResolved } from '../base';
import type { APIBaseApplicationCommandInteractionData } from './internals';

View File

@@ -1,15 +1,15 @@
import type { Permissions, Snowflake } from '../../../globals';
import type { APIRole, ApplicationIntegrationType, InteractionContextType, Locale } from '../../../v10';
import type { APIChannel, APIPartialChannel, APIThreadChannel, ChannelType, ThreadChannelType } from '../channel';
import type {
APIAttachment,
APIChannel,
APIMessage,
APIPartialChannel,
APIThreadChannel,
ChannelType,
ThreadChannelType,
} from '../channel';
import type { APIGuildMember, APIPartialInteractionGuild } from '../guild';
APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMember,
APIGuildMemberAvatar,
APIGuildMemberJoined,
APIPartialInteractionGuild,
} from '../guild';
import type { APIAttachment, APIMessage } from '../message';
import type { APIEntitlement } from '../monetization';
import type { APIUser } from '../user';
import type { InteractionType } from './responses';
@@ -253,7 +253,11 @@ export type APIInteractionDataResolvedChannel =
/**
* @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object}
*/
export interface APIInteractionDataResolvedGuildMember extends Omit<APIGuildMember, 'deaf' | 'mute' | 'user'> {
export interface APIInteractionDataResolvedGuildMember
extends APIBaseGuildMember,
APIFlaggedGuildMember,
APIGuildMemberAvatar,
APIGuildMemberJoined {
permissions: Permissions;
}

View File

@@ -1,6 +1,6 @@
import type { Snowflake } from '../../../globals';
import type { ComponentType } from '../channel';
import type { APIBaseInteraction, InteractionType } from '../interactions';
import type { ComponentType } from '../message';
import type {
APIDMInteractionWrapper,
APIGuildInteractionWrapper,

View File

@@ -1,27 +1,80 @@
import type { APIActionRowComponent, APIComponentInModalActionRow } from '../channel';
import type {
APIBaseInteraction,
APIDMInteractionWrapper,
APIGuildInteractionWrapper,
APIInteractionDataResolved,
ComponentType,
InteractionType,
} from '../index';
import type { APIBaseComponent } from '../message';
export interface ModalSubmitComponent {
type: ComponentType;
export interface APIBaseModalSubmitComponent<T extends ComponentType> extends APIBaseComponent<T> {
custom_id: string;
}
export interface APIModalSubmitTextInputComponent extends APIBaseModalSubmitComponent<ComponentType.TextInput> {
value: string;
}
export interface ModalSubmitActionRowComponent
extends Omit<APIActionRowComponent<APIComponentInModalActionRow>, 'components'> {
components: ModalSubmitComponent[];
export interface APIModalSubmitStringSelectComponent extends APIBaseModalSubmitComponent<ComponentType.StringSelect> {
values: string[];
}
export interface APIModalSubmitUserSelectComponent extends APIBaseModalSubmitComponent<ComponentType.UserSelect> {
values: string[];
}
export interface APIModalSubmitRoleSelectComponent extends APIBaseModalSubmitComponent<ComponentType.RoleSelect> {
values: string[];
}
export interface APIModalSubmitMentionableSelectComponent
extends APIBaseModalSubmitComponent<ComponentType.MentionableSelect> {
values: string[];
}
export interface APIModalSubmitChannelSelectComponent extends APIBaseModalSubmitComponent<ComponentType.ChannelSelect> {
values: string[];
}
export interface APIModalSubmitFileUploadComponent extends APIBaseModalSubmitComponent<ComponentType.FileUpload> {
values: string[];
}
export type ModalSubmitComponent =
| APIModalSubmitChannelSelectComponent
| APIModalSubmitFileUploadComponent
| APIModalSubmitMentionableSelectComponent
| APIModalSubmitRoleSelectComponent
| APIModalSubmitStringSelectComponent
| APIModalSubmitTextInputComponent
| APIModalSubmitUserSelectComponent;
export interface ModalSubmitActionRowComponent extends APIBaseComponent<ComponentType.ActionRow> {
components: APIModalSubmitTextInputComponent[];
}
export interface ModalSubmitTextDisplayComponent extends APIBaseComponent<ComponentType.TextDisplay> {}
export interface ModalSubmitLabelComponent extends APIBaseComponent<ComponentType.Label> {
component: ModalSubmitComponent;
}
export type APIModalSubmissionComponent =
| ModalSubmitActionRowComponent
| ModalSubmitLabelComponent
| ModalSubmitTextDisplayComponent;
/**
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-modal-submit-data-structure}
*/
export interface APIModalSubmission {
/**
* Data for users, members, channels, and roles in the modal's auto-populated select menus
*
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-resolved-data-structure}
*/
resolved?: APIInteractionDataResolved;
/**
* A developer-defined identifier for the component, max 100 characters
*/
@@ -29,7 +82,7 @@ export interface APIModalSubmission {
/**
* A list of child components
*/
components: ModalSubmitActionRowComponent[];
components: APIModalSubmissionComponent[];
}
/**

View File

@@ -1,5 +1,10 @@
import type { RESTPostAPIWebhookWithTokenJSONBody } from '../../../v10';
import type { APIActionRowComponent, APIComponentInModalActionRow } from '../channel';
import type {
APIActionRowComponent,
APIComponentInModalActionRow,
APILabelComponent,
APITextDisplayComponent,
} from '../message';
import type { APIApplicationCommandOptionChoice } from './applicationCommands';
/**
@@ -126,6 +131,11 @@ export interface APICommandAutocompleteInteractionResponseCallbackData {
choices?: APIApplicationCommandOptionChoice[];
}
export type APIModalInteractionResponseCallbackComponent =
| APIActionRowComponent<APIComponentInModalActionRow>
| APILabelComponent
| APITextDisplayComponent;
/**
* @see {@link https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-modal}
*/
@@ -140,6 +150,8 @@ export interface APIModalInteractionResponseCallbackData {
title: string;
/**
* Between 1 and 5 (inclusive) components that make up the modal
*
* @remarks Using action rows inside modals is deprecated.
*/
components: APIActionRowComponent<APIComponentInModalActionRow>[];
components: APIModalInteractionResponseCallbackComponent[];
}

View File

@@ -111,9 +111,13 @@ export interface APIApplication {
*/
approximate_guild_count?: number;
/**
* Approximate count of users that have installed the app
* Approximate count of users that have installed the app (authorized with `application.commands` as a scope)
*/
approximate_user_install_count?: number;
/**
* Approximate count of users that have OAuth2 authorizations for the app
*/
approximate_user_authorization_count?: number;
/**
* Array of redirect URIs for the application
*/

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