disgroove 1.3.1 → 1.3.3-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/Client.d.ts +234 -0
  3. package/dist/lib/Client.js +256 -0
  4. package/dist/lib/Client.js.map +1 -0
  5. package/dist/lib/constants.d.ts +1084 -0
  6. package/dist/lib/constants.js +1163 -0
  7. package/dist/lib/constants.js.map +1 -0
  8. package/dist/lib/gateway/Shard.d.ts +25 -0
  9. package/dist/lib/gateway/Shard.js +522 -0
  10. package/dist/lib/gateway/Shard.js.map +1 -0
  11. package/dist/lib/gateway/ShardsManager.d.ts +5 -0
  12. package/dist/lib/gateway/ShardsManager.js +13 -0
  13. package/dist/lib/gateway/ShardsManager.js.map +1 -0
  14. package/dist/lib/gateway/index.d.ts +2 -0
  15. package/dist/lib/gateway/index.js +19 -0
  16. package/dist/lib/gateway/index.js.map +1 -0
  17. package/dist/lib/index.d.ts +7 -0
  18. package/dist/lib/index.js +24 -0
  19. package/dist/lib/index.js.map +1 -0
  20. package/dist/lib/rest/CDN.d.ts +21 -0
  21. package/dist/lib/rest/CDN.js +46 -0
  22. package/dist/lib/rest/CDN.js.map +1 -0
  23. package/dist/lib/rest/Endpoints.d.ts +94 -0
  24. package/dist/lib/rest/Endpoints.js +211 -0
  25. package/dist/lib/rest/Endpoints.js.map +1 -0
  26. package/dist/lib/rest/REST.d.ts +22 -0
  27. package/dist/lib/rest/REST.js +35 -0
  28. package/dist/lib/rest/REST.js.map +1 -0
  29. package/dist/lib/rest/RequestsManager.d.ts +17 -0
  30. package/dist/lib/rest/RequestsManager.js +124 -0
  31. package/dist/lib/rest/RequestsManager.js.map +1 -0
  32. package/dist/lib/rest/index.d.ts +4 -0
  33. package/dist/lib/rest/index.js +34 -0
  34. package/dist/lib/rest/index.js.map +1 -0
  35. package/dist/lib/structures/Application.d.ts +174 -0
  36. package/dist/lib/structures/Application.js +328 -0
  37. package/dist/lib/structures/Application.js.map +1 -0
  38. package/dist/lib/structures/ApplicationCommand.d.ts +45 -0
  39. package/dist/lib/structures/ApplicationCommand.js +127 -0
  40. package/dist/lib/structures/ApplicationCommand.js.map +1 -0
  41. package/dist/lib/structures/AuditLog.d.ts +20 -0
  42. package/dist/lib/structures/AuditLog.js +76 -0
  43. package/dist/lib/structures/AuditLog.js.map +1 -0
  44. package/dist/lib/structures/AutoModerationRule.d.ts +34 -0
  45. package/dist/lib/structures/AutoModerationRule.js +96 -0
  46. package/dist/lib/structures/AutoModerationRule.js.map +1 -0
  47. package/dist/lib/structures/Base.d.ts +17 -0
  48. package/dist/lib/structures/Base.js +31 -0
  49. package/dist/lib/structures/Base.js.map +1 -0
  50. package/dist/lib/structures/Channel.d.ts +253 -0
  51. package/dist/lib/structures/Channel.js +591 -0
  52. package/dist/lib/structures/Channel.js.map +1 -0
  53. package/dist/lib/structures/ClientApplication.d.ts +150 -0
  54. package/dist/lib/structures/ClientApplication.js +241 -0
  55. package/dist/lib/structures/ClientApplication.js.map +1 -0
  56. package/dist/lib/structures/Emoji.d.ts +28 -0
  57. package/dist/lib/structures/Emoji.js +79 -0
  58. package/dist/lib/structures/Emoji.js.map +1 -0
  59. package/dist/lib/structures/Entitlement.d.ts +24 -0
  60. package/dist/lib/structures/Entitlement.js +68 -0
  61. package/dist/lib/structures/Entitlement.js.map +1 -0
  62. package/dist/lib/structures/Guild.d.ts +462 -0
  63. package/dist/lib/structures/Guild.js +1095 -0
  64. package/dist/lib/structures/Guild.js.map +1 -0
  65. package/dist/lib/structures/GuildMember.d.ts +50 -0
  66. package/dist/lib/structures/GuildMember.js +149 -0
  67. package/dist/lib/structures/GuildMember.js.map +1 -0
  68. package/dist/lib/structures/GuildScheduledEvent.d.ts +49 -0
  69. package/dist/lib/structures/GuildScheduledEvent.js +118 -0
  70. package/dist/lib/structures/GuildScheduledEvent.js.map +1 -0
  71. package/dist/lib/structures/GuildTemplate.d.ts +32 -0
  72. package/dist/lib/structures/GuildTemplate.js +76 -0
  73. package/dist/lib/structures/GuildTemplate.js.map +1 -0
  74. package/dist/lib/structures/Integration.d.ts +30 -0
  75. package/dist/lib/structures/Integration.js +102 -0
  76. package/dist/lib/structures/Integration.js.map +1 -0
  77. package/dist/lib/structures/Interaction.d.ts +76 -0
  78. package/dist/lib/structures/Interaction.js +345 -0
  79. package/dist/lib/structures/Interaction.js.map +1 -0
  80. package/dist/lib/structures/Invite.d.ts +28 -0
  81. package/dist/lib/structures/Invite.js +86 -0
  82. package/dist/lib/structures/Invite.js.map +1 -0
  83. package/dist/lib/structures/Message.d.ts +84 -0
  84. package/dist/lib/structures/Message.js +300 -0
  85. package/dist/lib/structures/Message.js.map +1 -0
  86. package/dist/lib/structures/Role.d.ts +37 -0
  87. package/dist/lib/structures/Role.js +90 -0
  88. package/dist/lib/structures/Role.js.map +1 -0
  89. package/dist/lib/structures/SKU.d.ts +23 -0
  90. package/dist/lib/structures/SKU.js +63 -0
  91. package/dist/lib/structures/SKU.js.map +1 -0
  92. package/dist/lib/structures/StageInstance.d.ts +24 -0
  93. package/dist/lib/structures/StageInstance.js +57 -0
  94. package/dist/lib/structures/StageInstance.js.map +1 -0
  95. package/dist/lib/structures/Sticker.d.ts +31 -0
  96. package/dist/lib/structures/Sticker.js +86 -0
  97. package/dist/lib/structures/Sticker.js.map +1 -0
  98. package/dist/lib/structures/Team.d.ts +14 -0
  99. package/dist/lib/structures/Team.js +39 -0
  100. package/dist/lib/structures/Team.js.map +1 -0
  101. package/dist/lib/structures/TestEntitlement.d.ts +23 -0
  102. package/dist/lib/structures/TestEntitlement.js +61 -0
  103. package/dist/lib/structures/TestEntitlement.js.map +1 -0
  104. package/dist/lib/structures/UnavailableGuild.d.ts +11 -0
  105. package/dist/lib/structures/UnavailableGuild.js +25 -0
  106. package/dist/lib/structures/UnavailableGuild.js.map +1 -0
  107. package/dist/lib/structures/User.d.ts +63 -0
  108. package/dist/lib/structures/User.js +177 -0
  109. package/dist/lib/structures/User.js.map +1 -0
  110. package/dist/lib/structures/VoiceState.d.ts +26 -0
  111. package/dist/lib/structures/VoiceState.js +70 -0
  112. package/dist/lib/structures/VoiceState.js.map +1 -0
  113. package/dist/lib/structures/Webhook.d.ts +84 -0
  114. package/dist/lib/structures/Webhook.js +239 -0
  115. package/dist/lib/structures/Webhook.js.map +1 -0
  116. package/dist/lib/structures/index.d.ts +27 -0
  117. package/dist/lib/structures/index.js +44 -0
  118. package/dist/lib/structures/index.js.map +1 -0
  119. package/dist/lib/types/application-command.d.ts +102 -0
  120. package/dist/lib/types/application-command.js +3 -0
  121. package/dist/lib/types/application-command.js.map +1 -0
  122. package/dist/lib/types/application-role-connection-metadata.d.ts +18 -0
  123. package/dist/lib/types/application-role-connection-metadata.js +3 -0
  124. package/dist/lib/types/application-role-connection-metadata.js.map +1 -0
  125. package/dist/lib/types/application.d.ts +66 -0
  126. package/dist/lib/types/application.js +3 -0
  127. package/dist/lib/types/application.js.map +1 -0
  128. package/dist/lib/types/audit-log.d.ts +82 -0
  129. package/dist/lib/types/audit-log.js +3 -0
  130. package/dist/lib/types/audit-log.js.map +1 -0
  131. package/dist/lib/types/auto-moderation.d.ts +65 -0
  132. package/dist/lib/types/auto-moderation.js +3 -0
  133. package/dist/lib/types/auto-moderation.js.map +1 -0
  134. package/dist/lib/types/channel.d.ts +456 -0
  135. package/dist/lib/types/channel.js +3 -0
  136. package/dist/lib/types/channel.js.map +1 -0
  137. package/dist/lib/types/emoji.d.ts +22 -0
  138. package/dist/lib/types/emoji.js +3 -0
  139. package/dist/lib/types/emoji.js.map +1 -0
  140. package/dist/lib/types/entitlements.d.ts +32 -0
  141. package/dist/lib/types/entitlements.js +3 -0
  142. package/dist/lib/types/entitlements.js.map +1 -0
  143. package/dist/lib/types/gateway-events.d.ts +805 -0
  144. package/dist/lib/types/gateway-events.js +3 -0
  145. package/dist/lib/types/gateway-events.js.map +1 -0
  146. package/dist/lib/types/guild-scheduled-event.d.ts +57 -0
  147. package/dist/lib/types/guild-scheduled-event.js +3 -0
  148. package/dist/lib/types/guild-scheduled-event.js.map +1 -0
  149. package/dist/lib/types/guild-template.d.ts +28 -0
  150. package/dist/lib/types/guild-template.js +3 -0
  151. package/dist/lib/types/guild-template.js.map +1 -0
  152. package/dist/lib/types/guild.d.ts +333 -0
  153. package/dist/lib/types/guild.js +3 -0
  154. package/dist/lib/types/guild.js.map +1 -0
  155. package/dist/lib/types/index.d.ts +23 -0
  156. package/dist/lib/types/index.js +40 -0
  157. package/dist/lib/types/index.js.map +1 -0
  158. package/dist/lib/types/interaction.d.ts +170 -0
  159. package/dist/lib/types/interaction.js +3 -0
  160. package/dist/lib/types/interaction.js.map +1 -0
  161. package/dist/lib/types/invite.d.ts +59 -0
  162. package/dist/lib/types/invite.js +3 -0
  163. package/dist/lib/types/invite.js.map +1 -0
  164. package/dist/lib/types/message-components.d.ts +100 -0
  165. package/dist/lib/types/message-components.js +3 -0
  166. package/dist/lib/types/message-components.js.map +1 -0
  167. package/dist/lib/types/role.d.ts +47 -0
  168. package/dist/lib/types/role.js +3 -0
  169. package/dist/lib/types/role.js.map +1 -0
  170. package/dist/lib/types/sku.d.ts +30 -0
  171. package/dist/lib/types/sku.js +3 -0
  172. package/dist/lib/types/sku.js.map +1 -0
  173. package/dist/lib/types/stage-instance.d.ts +20 -0
  174. package/dist/lib/types/stage-instance.js +3 -0
  175. package/dist/lib/types/stage-instance.js.map +1 -0
  176. package/dist/lib/types/sticker.d.ts +61 -0
  177. package/dist/lib/types/sticker.js +3 -0
  178. package/dist/lib/types/sticker.js.map +1 -0
  179. package/dist/lib/types/team.d.ts +30 -0
  180. package/dist/lib/types/team.js +3 -0
  181. package/dist/lib/types/team.js.map +1 -0
  182. package/dist/lib/types/user.d.ts +77 -0
  183. package/dist/lib/types/user.js +3 -0
  184. package/dist/lib/types/user.js.map +1 -0
  185. package/dist/lib/types/voice.d.ts +47 -0
  186. package/dist/lib/types/voice.js +3 -0
  187. package/dist/lib/types/voice.js.map +1 -0
  188. package/dist/lib/types/webhook.d.ts +31 -0
  189. package/dist/lib/types/webhook.js +3 -0
  190. package/dist/lib/types/webhook.js.map +1 -0
  191. package/dist/lib/utils/Util.d.ts +15 -0
  192. package/dist/lib/utils/Util.js +543 -0
  193. package/dist/lib/utils/Util.js.map +1 -0
  194. package/dist/lib/utils/errors.d.ts +12 -0
  195. package/dist/lib/utils/errors.js +25 -0
  196. package/dist/lib/utils/errors.js.map +1 -0
  197. package/dist/lib/utils/index.d.ts +2 -0
  198. package/dist/lib/utils/index.js +19 -0
  199. package/dist/lib/utils/index.js.map +1 -0
  200. package/dist/package.json +1 -1
  201. package/lib/Client.ts +616 -0
  202. package/lib/constants.ts +1173 -0
  203. package/lib/gateway/Shard.ts +704 -0
  204. package/lib/gateway/ShardsManager.ts +11 -0
  205. package/lib/gateway/index.ts +2 -0
  206. package/lib/index.ts +7 -0
  207. package/lib/rest/CDN.ts +56 -0
  208. package/lib/rest/Endpoints.ts +241 -0
  209. package/lib/rest/REST.ts +45 -0
  210. package/lib/rest/RequestsManager.ts +134 -0
  211. package/lib/rest/index.ts +4 -0
  212. package/lib/structures/Application.ts +599 -0
  213. package/lib/structures/ApplicationCommand.ts +187 -0
  214. package/lib/structures/AuditLog.ts +112 -0
  215. package/lib/structures/AutoModerationRule.ts +127 -0
  216. package/lib/structures/Base.ts +39 -0
  217. package/lib/structures/Channel.ts +921 -0
  218. package/lib/structures/ClientApplication.ts +515 -0
  219. package/lib/structures/Emoji.ts +95 -0
  220. package/lib/structures/Entitlement.ts +65 -0
  221. package/lib/structures/Guild.ts +1842 -0
  222. package/lib/structures/GuildMember.ts +193 -0
  223. package/lib/structures/GuildScheduledEvent.ts +164 -0
  224. package/lib/structures/GuildTemplate.ts +103 -0
  225. package/lib/structures/Integration.ts +136 -0
  226. package/lib/structures/Interaction.ts +506 -0
  227. package/lib/structures/Invite.ts +108 -0
  228. package/lib/structures/Message.ts +421 -0
  229. package/lib/structures/Role.ts +116 -0
  230. package/lib/structures/SKU.ts +63 -0
  231. package/lib/structures/StageInstance.ts +74 -0
  232. package/lib/structures/Sticker.ts +100 -0
  233. package/lib/structures/Team.ts +41 -0
  234. package/lib/structures/TestEntitlement.ts +78 -0
  235. package/lib/structures/UnavailableGuild.ts +27 -0
  236. package/lib/structures/User.ts +233 -0
  237. package/lib/structures/VoiceState.ts +72 -0
  238. package/lib/structures/Webhook.ts +341 -0
  239. package/lib/structures/index.ts +27 -0
  240. package/lib/types/application-command.ts +118 -0
  241. package/lib/types/application-role-connection-metadata.ts +23 -0
  242. package/lib/types/application.ts +77 -0
  243. package/lib/types/audit-log.ts +105 -0
  244. package/lib/types/auto-moderation.ts +78 -0
  245. package/lib/types/channel.ts +534 -0
  246. package/lib/types/emoji.ts +24 -0
  247. package/lib/types/entitlements.ts +34 -0
  248. package/lib/types/gateway-events.ts +970 -0
  249. package/lib/types/guild-scheduled-event.ts +67 -0
  250. package/lib/types/guild-template.ts +30 -0
  251. package/lib/types/guild.ts +388 -0
  252. package/lib/types/index.ts +23 -0
  253. package/lib/types/interaction.ts +224 -0
  254. package/lib/types/invite.ts +78 -0
  255. package/lib/types/message-components.ts +127 -0
  256. package/lib/types/role.ts +51 -0
  257. package/lib/types/sku.ts +32 -0
  258. package/lib/types/stage-instance.ts +22 -0
  259. package/lib/types/sticker.ts +67 -0
  260. package/lib/types/team.ts +34 -0
  261. package/lib/types/user.ts +93 -0
  262. package/lib/types/voice.ts +51 -0
  263. package/lib/types/webhook.ts +40 -0
  264. package/lib/utils/Util.ts +600 -0
  265. package/lib/utils/errors.ts +23 -0
  266. package/lib/utils/index.ts +2 -0
  267. package/package.json +1 -1
@@ -0,0 +1,515 @@
1
+ import {
2
+ Base,
3
+ ApplicationCommand,
4
+ Application,
5
+ SKU,
6
+ Entitlement,
7
+ TestEntitlement,
8
+ } from ".";
9
+ import type {
10
+ JSONGuildApplicationCommandPermissions,
11
+ RawApplication,
12
+ RawGuildApplicationCommandPermissions,
13
+ RawApplicationCommand,
14
+ JSONApplication,
15
+ JSONApplicationRoleConnectionMetadata,
16
+ RawApplicationRoleConnectionMetadata,
17
+ RawEntitlement,
18
+ RawSKU,
19
+ JSONInstallParams,
20
+ JSONApplicationCommandOption,
21
+ } from "../types";
22
+ import type { Client } from "../Client";
23
+ import { Endpoints } from "../rest";
24
+ import type {
25
+ ApplicationCommandTypes,
26
+ ApplicationFlags,
27
+ Locale,
28
+ } from "../constants";
29
+
30
+ export class ClientApplication extends Base {
31
+ protected override raw: Pick<RawApplication, "id" | "flags">;
32
+ flags?: ApplicationFlags;
33
+
34
+ constructor(data: Pick<RawApplication, "id" | "flags">, client: Client) {
35
+ super(data.id, client);
36
+
37
+ this.raw = data;
38
+
39
+ this.patch(data);
40
+ }
41
+
42
+ protected override patch(data: Pick<RawApplication, "id" | "flags">) {
43
+ if (data.flags !== undefined) this.flags = data.flags;
44
+ }
45
+
46
+ /** https://discord.com/developers/docs/interactions/application-commands#create-global-application-command */
47
+ async createGlobalApplicationCommand(options: {
48
+ name: string;
49
+ nameLocalizations?: Partial<Record<Locale, string>> | null;
50
+ description?: string;
51
+ descriptionLocalizations?: Partial<Record<Locale, string>> | null;
52
+ options?: Array<JSONApplicationCommandOption>;
53
+ defaultMemberPermissions?: string | null;
54
+ dmPermission?: boolean;
55
+ defaultPermission?: boolean | null;
56
+ type?: ApplicationCommandTypes;
57
+ nsfw?: boolean;
58
+ }): Promise<ApplicationCommand> {
59
+ return new ApplicationCommand(
60
+ await this.client.rest.post<RawApplicationCommand>(
61
+ Endpoints.applicationCommands(this.id),
62
+ {
63
+ json: this.client.util.applicationCommandToRaw(options),
64
+ }
65
+ ),
66
+ this.client
67
+ );
68
+ }
69
+
70
+ /** https://discord.com/developers/docs/interactions/application-commands#create-guild-application-command */
71
+ async createGuildApplicationCommand(
72
+ guildId: string,
73
+ options: {
74
+ name?: string;
75
+ nameLocalizations?: Partial<Record<Locale, string>> | null;
76
+ description?: string;
77
+ descriptionLocalizations?: Partial<Record<Locale, string>> | null;
78
+ options?: Array<JSONApplicationCommandOption>;
79
+ defaultMemberPermissions?: string | null;
80
+ dmPermission?: boolean;
81
+ defaultPermission?: boolean | null;
82
+ type?: ApplicationCommandTypes;
83
+ nsfw?: boolean;
84
+ }
85
+ ): Promise<ApplicationCommand> {
86
+ return new ApplicationCommand(
87
+ await this.client.rest.post<RawApplicationCommand>(
88
+ Endpoints.applicationGuildCommands(this.id, guildId),
89
+ {
90
+ json: this.client.util.applicationCommandToRaw(options),
91
+ }
92
+ ),
93
+ this.client
94
+ );
95
+ }
96
+
97
+ /** https://discord.com/developers/docs/monetization/entitlements#create-test-entitlement */
98
+ async createTestEntitlement(options: {
99
+ skuId: string;
100
+ ownerId: string;
101
+ ownerType: number;
102
+ }): Promise<TestEntitlement> {
103
+ return new TestEntitlement(
104
+ await this.client.rest.post<
105
+ Omit<RawEntitlement, "starts_at" | "ends_at" | "subscription_id">
106
+ >(Endpoints.applicationEntitlements(this.id), {
107
+ json: {
108
+ sku_id: options.skuId,
109
+ owner_id: options.ownerId,
110
+ owner_type: options.ownerType,
111
+ },
112
+ }),
113
+ this.client
114
+ );
115
+ }
116
+
117
+ /** https://discord.com/developers/docs/interactions/application-commands#delete-global-application-command */
118
+ deleteGlobalApplicationCommand(commandId: string): void {
119
+ this.client.rest.delete(Endpoints.applicationCommand(this.id, commandId));
120
+ }
121
+
122
+ /** https://discord.com/developers/docs/interactions/application-commands#delete-guild-application-command */
123
+ deleteGuildApplicationCommand(guildId: string, commandId: string): void {
124
+ this.client.rest.delete(
125
+ Endpoints.applicationGuildCommand(this.id, guildId, commandId)
126
+ );
127
+ }
128
+
129
+ /** https://discord.com/developers/docs/monetization/entitlements#delete-test-entitlement */
130
+ deleteTestEntitlement(entitlementId: string): void {
131
+ this.client.rest.delete(
132
+ Endpoints.applicationEntitlement(this.id, entitlementId)
133
+ );
134
+ }
135
+
136
+ /** https://discord.com/developers/docs/resources/application#edit-current-application */
137
+ async edit(options: {
138
+ customInstallURL?: string;
139
+ description?: string;
140
+ roleConnectionsVerificationURL?: string;
141
+ installParams?: JSONInstallParams;
142
+ flags?: ApplicationFlags;
143
+ icon?: string;
144
+ coverImage?: string;
145
+ interactionsEndpointURL?: string;
146
+ tags?: Array<string>;
147
+ }): Promise<Application> {
148
+ return new Application(
149
+ await this.client.rest.patch<RawApplication>(
150
+ Endpoints.applicationCurrentUser(),
151
+ {
152
+ json: {
153
+ custom_install_url: options.customInstallURL,
154
+ description: options.description,
155
+ role_connections_verification_url:
156
+ options.roleConnectionsVerificationURL,
157
+ install_params: options.installParams,
158
+ flags: options.flags,
159
+ icon: options.icon,
160
+ cover_image: options.coverImage,
161
+ interactions_endpoint_url: options.interactionsEndpointURL,
162
+ tags: options.tags,
163
+ },
164
+ }
165
+ ),
166
+ this.client
167
+ );
168
+ }
169
+
170
+ /** https://discord.com/developers/docs/interactions/application-commands#edit-application-command-permissions */
171
+ async editApplicationCommandPermissions(
172
+ guildId: string,
173
+ commandId: string,
174
+ options: {
175
+ permissions: Array<JSONGuildApplicationCommandPermissions>;
176
+ }
177
+ ): Promise<JSONGuildApplicationCommandPermissions> {
178
+ return this.client.rest
179
+ .put<RawGuildApplicationCommandPermissions>(
180
+ Endpoints.applicationCommandPermissions(this.id, guildId, commandId),
181
+ {
182
+ json: {
183
+ permissions: options.permissions.map((option) => ({
184
+ id: option.id,
185
+ application_id: option.applicationId,
186
+ guild_id: option.guildId,
187
+ permissions: option.permissions.map((permission) => ({
188
+ id: permission.id,
189
+ type: permission.type,
190
+ permission: permission.permission,
191
+ })),
192
+ })),
193
+ },
194
+ }
195
+ )
196
+ .then((response) => ({
197
+ id: response.id,
198
+ applicationId: response.application_id,
199
+ guildId: response.guild_id,
200
+ permissions: response.permissions.map((permission) => ({
201
+ id: permission.id,
202
+ type: permission.type,
203
+ permission: permission.permission,
204
+ })),
205
+ }));
206
+ }
207
+
208
+ /** https://discord.com/developers/docs/interactions/application-commands#edit-global-application-command */
209
+ async editGlobalApplicationCommand(
210
+ commandId: string,
211
+ options: {
212
+ name?: string;
213
+ nameLocalizations?: Partial<Record<Locale, string>> | null;
214
+ description?: string;
215
+ descriptionLocalizations?: Partial<Record<Locale, string>> | null;
216
+ options?: Array<JSONApplicationCommandOption>;
217
+ defaultMemberPermissions?: string | null;
218
+ defaultPermission?: boolean | null;
219
+ dmPermission?: boolean;
220
+ nsfw?: boolean;
221
+ }
222
+ ): Promise<ApplicationCommand> {
223
+ return new ApplicationCommand(
224
+ await this.client.rest.patch<RawApplicationCommand>(
225
+ Endpoints.applicationCommand(this.id, commandId),
226
+ {
227
+ json: this.client.util.applicationCommandToRaw(options),
228
+ }
229
+ ),
230
+ this.client
231
+ );
232
+ }
233
+
234
+ /** https://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command */
235
+ async editGuildApplicationCommand(
236
+ guildId: string,
237
+ commandId: string,
238
+ options: {
239
+ name?: string;
240
+ nameLocalizations?: Partial<Record<Locale, string>> | null;
241
+ description?: string;
242
+ descriptionLocalizations?: Partial<Record<Locale, string>> | null;
243
+ options?: Array<JSONApplicationCommandOption>;
244
+ defaultMemberPermissions?: string | null;
245
+ defaultPermission?: boolean | null;
246
+ dmPermission?: boolean;
247
+ nsfw?: boolean;
248
+ }
249
+ ): Promise<ApplicationCommand> {
250
+ return new ApplicationCommand(
251
+ await this.client.rest.patch<RawApplicationCommand>(
252
+ Endpoints.applicationGuildCommand(this.id, guildId, commandId),
253
+ {
254
+ json: this.client.util.applicationCommandToRaw(options),
255
+ }
256
+ ),
257
+ this.client
258
+ );
259
+ }
260
+
261
+ /** https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions */
262
+ async getApplicationCommandPermissions(
263
+ guildId: string,
264
+ commandId: string
265
+ ): Promise<Array<JSONGuildApplicationCommandPermissions>> {
266
+ return this.client.rest
267
+ .get<Array<RawGuildApplicationCommandPermissions>>(
268
+ Endpoints.applicationCommandPermissions(this.id, guildId, commandId)
269
+ )
270
+ .then((response) =>
271
+ response.map((permissions: RawGuildApplicationCommandPermissions) => ({
272
+ id: permissions.id,
273
+ applicationId: permissions.application_id,
274
+ guildId: permissions.guild_id,
275
+ permissions: permissions.permissions.map((permission) => ({
276
+ id: permission.id,
277
+ type: permission.type,
278
+ permission: permission.permission,
279
+ })),
280
+ }))
281
+ );
282
+ }
283
+
284
+ /** https://discord.com/developers/docs/monetization/entitlements#list-entitlements */
285
+ async getEntitlements(options?: {
286
+ userId?: string;
287
+ skuIds?: Array<string>;
288
+ before?: string;
289
+ after?: string;
290
+ limit?: number;
291
+ guildId?: string;
292
+ excludeEnded?: boolean;
293
+ }): Promise<Array<Entitlement>> {
294
+ return this.client.rest
295
+ .get<Array<RawEntitlement>>(Endpoints.applicationEntitlements(this.id), {
296
+ query: {
297
+ user_id: options?.userId,
298
+ sku_ids: options?.skuIds,
299
+ before: options?.before,
300
+ after: options?.after,
301
+ limit: options?.limit,
302
+ guild_id: options?.guildId,
303
+ exclude_ended: options?.excludeEnded,
304
+ },
305
+ })
306
+ .then((response) =>
307
+ response.map((data) => new Entitlement(data, this.client))
308
+ );
309
+ }
310
+
311
+ /** https://discord.com/developers/docs/interactions/application-commands#get-global-application-command */
312
+ async getGlobalApplicationCommand(
313
+ commandId: string
314
+ ): Promise<ApplicationCommand> {
315
+ return new ApplicationCommand(
316
+ await this.client.rest.get<RawApplicationCommand>(
317
+ Endpoints.applicationCommand(this.id, commandId)
318
+ ),
319
+ this.client
320
+ );
321
+ }
322
+
323
+ /** https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands */
324
+ async getGlobalApplicationCommands(options: {
325
+ withLocalizations?: boolean;
326
+ }): Promise<Array<ApplicationCommand>> {
327
+ return this.client.rest
328
+ .get<Array<RawApplicationCommand>>(
329
+ Endpoints.applicationCommands(this.id),
330
+ {
331
+ query: {
332
+ with_localizations: options.withLocalizations,
333
+ },
334
+ }
335
+ )
336
+ .then((response) =>
337
+ response.map((data) => new ApplicationCommand(data, this.client))
338
+ );
339
+ }
340
+
341
+ /** https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command */
342
+ async getGuildApplicationCommand(
343
+ guildId: string,
344
+ commandId: string
345
+ ): Promise<ApplicationCommand> {
346
+ return new ApplicationCommand(
347
+ await this.client.rest.get<RawApplicationCommand>(
348
+ Endpoints.applicationGuildCommand(this.id, guildId, commandId)
349
+ ),
350
+ this.client
351
+ );
352
+ }
353
+
354
+ /** https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands */
355
+ async getGuildApplicationCommands(
356
+ guildId: string,
357
+ options?: {
358
+ withLocalizations?: boolean;
359
+ }
360
+ ): Promise<Array<ApplicationCommand>> {
361
+ return this.client.rest
362
+ .get<Array<RawApplicationCommand>>(
363
+ Endpoints.applicationGuildCommands(this.id, guildId),
364
+ {
365
+ query: {
366
+ with_localizations: options?.withLocalizations,
367
+ },
368
+ }
369
+ )
370
+ .then((response) =>
371
+ response.map((data) => new ApplicationCommand(data, this.client))
372
+ );
373
+ }
374
+
375
+ /** https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command-permissions */
376
+ async getGuildApplicationCommandPermissions(
377
+ guildId: string
378
+ ): Promise<Array<JSONGuildApplicationCommandPermissions>> {
379
+ return this.client.rest
380
+ .get<Array<RawGuildApplicationCommandPermissions>>(
381
+ Endpoints.guildApplicationCommandsPermissions(this.id, guildId)
382
+ )
383
+ .then((response) =>
384
+ response.map((permissions: RawGuildApplicationCommandPermissions) => ({
385
+ id: permissions.id,
386
+ applicationId: permissions.application_id,
387
+ guildId: permissions.guild_id,
388
+ permissions: permissions.permissions.map((permission) => ({
389
+ id: permission.id,
390
+ type: permission.type,
391
+ permission: permission.permission,
392
+ })),
393
+ }))
394
+ );
395
+ }
396
+
397
+ /** https://discord.com/developers/docs/resources/application-role-connection-metadata#get-application-role-connection-metadata-records */
398
+ async getApplicationRoleConnectionMetadataRecords(): Promise<
399
+ Array<JSONApplicationRoleConnectionMetadata>
400
+ > {
401
+ return this.client.rest
402
+ .get<Array<RawApplicationRoleConnectionMetadata>>(
403
+ Endpoints.applicationRoleConnectionMetadata(this.id)
404
+ )
405
+ .then((response) =>
406
+ response.map((data) => ({
407
+ type: data.type,
408
+ key: data.key,
409
+ name: data.name,
410
+ nameLocalizations: data.name_localizations,
411
+ description: data.description,
412
+ descriptionLocalizations: data.description_localizations,
413
+ }))
414
+ );
415
+ }
416
+
417
+ /** https://discord.com/developers/docs/monetization/skus#list-skus */
418
+ async getSKUs(): Promise<Array<SKU>> {
419
+ return this.client.rest
420
+ .get<Array<RawSKU>>(Endpoints.applicationSKUs(this.id))
421
+ .then((response) => response.map((data) => new SKU(data, this.client)));
422
+ }
423
+
424
+ /** https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands */
425
+ async setGlobalApplicationCommands(
426
+ commands: Array<{
427
+ id?: string;
428
+ name: string;
429
+ nameLocalizations?: Partial<Record<Locale, string>> | null;
430
+ description?: string;
431
+ descriptionLocalizations?: Partial<Record<Locale, string>> | null;
432
+ options?: Array<JSONApplicationCommandOption>;
433
+ defaultMemberPermissions?: string | null;
434
+ dmPermission?: boolean;
435
+ defaultPermission?: boolean | null;
436
+ type?: ApplicationCommandTypes;
437
+ nsfw?: boolean;
438
+ }>
439
+ ): Promise<Array<ApplicationCommand>> {
440
+ return this.client.rest
441
+ .put<Array<RawApplicationCommand>>(
442
+ Endpoints.applicationCommands(this.id),
443
+ {
444
+ json: commands.map((command) =>
445
+ this.client.util.applicationCommandToRaw(command)
446
+ ),
447
+ }
448
+ )
449
+ .then((response) =>
450
+ response.map((data) => new ApplicationCommand(data, this.client))
451
+ );
452
+ }
453
+
454
+ /** https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands */
455
+ async setGuildApplicationCommands(
456
+ guildId: string,
457
+ commands: Array<{
458
+ id?: string;
459
+ name?: string;
460
+ nameLocalizations?: Partial<Record<Locale, string>> | null;
461
+ description?: string;
462
+ descriptionLocalizations?: Partial<Record<Locale, string>> | null;
463
+ options?: Array<JSONApplicationCommandOption>;
464
+ defaultMemberPermissions?: string | null;
465
+ dmPermission?: boolean;
466
+ defaultPermission?: boolean | null;
467
+ type: ApplicationCommandTypes;
468
+ nsfw?: boolean;
469
+ }>
470
+ ): Promise<Array<ApplicationCommand>> {
471
+ return this.client.rest
472
+ .put<Array<RawApplicationCommand>>(
473
+ Endpoints.applicationGuildCommands(this.id, guildId),
474
+ {
475
+ json: commands.map((command) =>
476
+ this.client.util.applicationCommandToRaw(command)
477
+ ),
478
+ }
479
+ )
480
+ .then((response) =>
481
+ response.map((data) => new ApplicationCommand(data, this.client))
482
+ );
483
+ }
484
+
485
+ /** https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records */
486
+ async updateApplicationRoleConnectionMetadataRecords(): Promise<
487
+ Array<JSONApplicationRoleConnectionMetadata>
488
+ > {
489
+ return this.client.rest
490
+ .put<Array<RawApplicationRoleConnectionMetadata>>(
491
+ Endpoints.applicationRoleConnectionMetadata(this.id)
492
+ )
493
+ .then((response) =>
494
+ response.map((data) => ({
495
+ type: data.type,
496
+ key: data.key,
497
+ name: data.name,
498
+ nameLocalizations: data.name_localizations,
499
+ description: data.description,
500
+ descriptionLocalizations: data.description_localizations,
501
+ }))
502
+ );
503
+ }
504
+
505
+ override toRaw(): Pick<RawApplication, "id" | "flags"> {
506
+ return this.raw;
507
+ }
508
+
509
+ override toJSON(): Pick<JSONApplication, "id" | "flags"> {
510
+ return {
511
+ ...super.toJSON(),
512
+ flags: this.flags,
513
+ };
514
+ }
515
+ }
@@ -0,0 +1,95 @@
1
+ import { User } from ".";
2
+ import type { Client } from "../Client";
3
+ import { Endpoints } from "../rest";
4
+ import type { JSONEmoji, RawEmoji } from "../types";
5
+
6
+ /** https://discord.com/developers/docs/resources/emoji */
7
+ export class Emoji {
8
+ private client: Client;
9
+ private raw: RawEmoji;
10
+ id: string | null;
11
+ name: string | null;
12
+ roles?: Array<string>;
13
+ user?: User;
14
+ requireColons?: boolean;
15
+ managed?: boolean;
16
+ animated?: boolean;
17
+ available?: boolean;
18
+
19
+ constructor(data: RawEmoji, client: Client) {
20
+ this.client = client;
21
+ this.raw = data;
22
+ this.id = data.id;
23
+ this.name = data.name;
24
+
25
+ this.patch(data);
26
+ }
27
+
28
+ private patch(data: RawEmoji) {
29
+ if (data.roles !== undefined) this.roles = data.roles;
30
+ if (data.user !== undefined) this.user = new User(data.user, this.client);
31
+ if (data.require_colons !== undefined)
32
+ this.requireColons = data.require_colons;
33
+ if (data.managed !== undefined) this.managed = data.managed;
34
+ if (data.animated !== undefined) this.animated = data.animated;
35
+ if (data.available !== undefined) this.available = data.available;
36
+ }
37
+
38
+ /** https://discord.com/developers/docs/resources/emoji#delete-guild-emoji */
39
+ delete(guildId: string, reason?: string): void {
40
+ if (!this.id)
41
+ throw new Error("[disgroove] Cannot delete a default Discord emoji");
42
+
43
+ this.client.rest.delete(Endpoints.guildEmoji(guildId, this.id), {
44
+ reason,
45
+ });
46
+ }
47
+
48
+ /** https://discord.com/developers/docs/resources/emoji#modify-guild-emoji */
49
+ async edit(
50
+ guildId: string,
51
+ options: {
52
+ name?: string;
53
+ roles?: Array<string> | null;
54
+ },
55
+ reason?: string
56
+ ): Promise<Emoji> {
57
+ if (!this.id)
58
+ throw new Error("[disgroove] Cannot edit a default Discord emoji");
59
+
60
+ return new Emoji(
61
+ await this.client.rest.patch<RawEmoji>(
62
+ Endpoints.guildEmoji(guildId, this.id),
63
+ {
64
+ json: {
65
+ name: options.name,
66
+ roles: options.roles,
67
+ },
68
+ reason,
69
+ }
70
+ ),
71
+ this.client
72
+ );
73
+ }
74
+
75
+ toString(): string {
76
+ return `[${this.constructor.name}]`;
77
+ }
78
+
79
+ toRaw(): RawEmoji {
80
+ return this.raw;
81
+ }
82
+
83
+ toJSON(): JSONEmoji {
84
+ return {
85
+ id: this.id,
86
+ name: this.name,
87
+ roles: this.roles,
88
+ user: this.user?.toJSON(),
89
+ requireColons: this.requireColons,
90
+ managed: this.managed,
91
+ animated: this.animated,
92
+ available: this.available,
93
+ };
94
+ }
95
+ }
@@ -0,0 +1,65 @@
1
+ import type { Client } from "../Client";
2
+ import type { JSONEntitlement, RawEntitlement } from "../types";
3
+ import { Base } from ".";
4
+ import type { EntitlementTypes } from "../constants";
5
+
6
+ /** https://discord.com/developers/docs/monetization/entitlements */
7
+ export class Entitlement extends Base {
8
+ protected override raw: RawEntitlement;
9
+ skuId: string;
10
+ applicationId: string;
11
+ userId?: string;
12
+ promotionId?: string | null; // Undocumented
13
+ type: EntitlementTypes;
14
+ deleted: boolean;
15
+ giftCodeFlags?: number; // Undocumented
16
+ consumed?: boolean; // Undocumented
17
+ startsAt?: string;
18
+ endsAt?: string;
19
+ guildId?: string;
20
+ subscriptionId?: string; // Undocumented
21
+
22
+ constructor(data: RawEntitlement, client: Client) {
23
+ super(data.id, client);
24
+
25
+ this.raw = data;
26
+ this.skuId = data.sku_id;
27
+ this.applicationId = data.application_id;
28
+ this.type = data.type;
29
+ this.deleted = data.deleted;
30
+ }
31
+
32
+ protected override patch(data: RawEntitlement): void {
33
+ if (data.user_id !== undefined) this.userId = data.user_id;
34
+ if (data.promotion_id !== undefined) this.promotionId = data.promotion_id;
35
+ if (data.gift_code_flags !== undefined)
36
+ this.giftCodeFlags = data.gift_code_flags;
37
+ if (data.consumed !== undefined) this.consumed = data.consumed;
38
+ if (data.starts_at !== undefined) this.startsAt = data.starts_at;
39
+ if (data.ends_at !== undefined) this.endsAt = data.ends_at;
40
+ if (data.guild_id !== undefined) this.guildId = data.guild_id;
41
+ if (data.subscription_id !== undefined) this.subscriptionId;
42
+ }
43
+
44
+ override toRaw(): RawEntitlement {
45
+ return this.raw;
46
+ }
47
+
48
+ override toJSON(): JSONEntitlement {
49
+ return {
50
+ id: this.id,
51
+ skuId: this.skuId,
52
+ applicationId: this.applicationId,
53
+ userId: this.userId,
54
+ promotionId: this.promotionId,
55
+ type: this.type,
56
+ deleted: this.deleted,
57
+ giftCodeFlags: this.giftCodeFlags,
58
+ consumed: this.consumed,
59
+ startsAt: this.startsAt,
60
+ endsAt: this.endsAt,
61
+ guildId: this.guildId,
62
+ subscriptionId: this.subscriptionId,
63
+ };
64
+ }
65
+ }