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,187 @@
1
+ import type { Client } from "../Client";
2
+ import { Endpoints } from "../rest";
3
+ import type {
4
+ JSONApplicationCommand,
5
+ JSONApplicationCommandOption,
6
+ JSONApplicationCommandPermission,
7
+ JSONGuildApplicationCommandPermissions,
8
+ RawApplicationCommand,
9
+ RawGuildApplicationCommandPermissions,
10
+ } from "../types";
11
+ import type { ApplicationCommandTypes, Locale } from "../constants";
12
+ import { Base } from ".";
13
+
14
+ /** https://discord.com/developers/docs/interactions/application-commands */
15
+ export class ApplicationCommand extends Base {
16
+ protected override raw: RawApplicationCommand;
17
+ type?: ApplicationCommandTypes;
18
+ applicationId: string;
19
+ guildId?: string;
20
+ name: string;
21
+ nameLocalizations?: Partial<Record<Locale, string>> | null;
22
+ description: string;
23
+ descriptionLocalizations?: Partial<Record<Locale, string>> | null;
24
+ options?: Array<JSONApplicationCommandOption>;
25
+ defaultMemberPermissions: string | null;
26
+ dmPermission?: boolean;
27
+ defaultPermission?: boolean | null;
28
+ nsfw?: boolean;
29
+ version: string;
30
+
31
+ constructor(data: RawApplicationCommand, client: Client) {
32
+ super(data.id, client);
33
+
34
+ this.raw = data;
35
+ this.applicationId = data.application_id;
36
+ this.name = data.name;
37
+ this.description = data.description;
38
+ this.defaultMemberPermissions = data.default_member_permissions;
39
+ this.version = data.version;
40
+
41
+ this.patch(data);
42
+ }
43
+
44
+ protected override patch(data: RawApplicationCommand): void {
45
+ if (data.type !== undefined) this.type = data.type;
46
+ if (data.guild_id !== undefined) this.guildId = data.guild_id;
47
+ if (data.name_localizations !== undefined)
48
+ this.nameLocalizations = data.name_localizations;
49
+ if (data.description_localizations !== undefined)
50
+ this.descriptionLocalizations = data.description_localizations;
51
+ if (data.options !== undefined) this.options = data.options;
52
+ if (data.dm_permission !== undefined)
53
+ this.dmPermission = data.dm_permission;
54
+ if (data.default_permission !== undefined)
55
+ this.defaultPermission = data.default_permission;
56
+ if (data.nsfw !== undefined) this.nsfw = data.nsfw;
57
+ }
58
+
59
+ /** https://discord.com/developers/docs/interactions/application-commands#delete-guild-application-command */
60
+ delete(): void {
61
+ this.guildId !== undefined
62
+ ? this.client.rest.delete(
63
+ Endpoints.applicationGuildCommand(
64
+ this.applicationId,
65
+ this.guildId,
66
+ this.id
67
+ )
68
+ )
69
+ : this.client.rest.delete(
70
+ Endpoints.applicationCommand(this.applicationId, this.id)
71
+ );
72
+ }
73
+
74
+ /** https://discord.com/developers/docs/interactions/application-commands#edit-global-application-command */
75
+ async edit(options: {
76
+ name?: string;
77
+ nameLocalizations?: Partial<Record<Locale, string>> | null;
78
+ description?: string;
79
+ descriptionLocalizations?: Partial<Record<Locale, string>> | null;
80
+ options?: Array<JSONApplicationCommandOption>;
81
+ defaultMemberPermissions?: string | null;
82
+ defaultPermission?: boolean | null;
83
+ dmPermission?: boolean;
84
+ nsfw?: boolean;
85
+ }): Promise<ApplicationCommand> {
86
+ return new ApplicationCommand(
87
+ this.guildId !== undefined
88
+ ? await this.client.rest.patch<RawApplicationCommand>(
89
+ Endpoints.applicationGuildCommand(this.id, this.guildId, this.id),
90
+ {
91
+ json: this.client.util.applicationCommandToRaw(options),
92
+ }
93
+ )
94
+ : await this.client.rest.patch<RawApplicationCommand>(
95
+ Endpoints.applicationCommand(this.applicationId, this.id),
96
+ {
97
+ json: this.client.util.applicationCommandToRaw(options),
98
+ }
99
+ ),
100
+ this.client
101
+ );
102
+ }
103
+
104
+ /** https://discord.com/developers/docs/interactions/application-commands#edit-application-command-permissions */
105
+ async editPermissions(options: {
106
+ permissions: Array<JSONApplicationCommandPermission>;
107
+ }): Promise<JSONGuildApplicationCommandPermissions> {
108
+ if (!this.guildId)
109
+ throw new Error(
110
+ "[disgroove] Cannot edit the permissions of a global application command"
111
+ );
112
+
113
+ return this.client.rest
114
+ .put<RawGuildApplicationCommandPermissions>(
115
+ Endpoints.applicationCommandPermissions(
116
+ this.applicationId,
117
+ this.guildId,
118
+ this.id
119
+ ),
120
+ {
121
+ json: {
122
+ permissions: options.permissions,
123
+ },
124
+ }
125
+ )
126
+ .then((response) => ({
127
+ id: response.id,
128
+ applicationId: response.application_id,
129
+ guildId: response.guild_id,
130
+ permissions: response.permissions.map((permission) => ({
131
+ id: permission.id,
132
+ type: permission.type,
133
+ permission: permission.permission,
134
+ })),
135
+ }));
136
+ }
137
+
138
+ /** https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions */
139
+ async getPermissions(): Promise<JSONGuildApplicationCommandPermissions> {
140
+ if (!this.guildId)
141
+ throw new Error(
142
+ "[disgroove] Cannot get the permissions of a global application command"
143
+ );
144
+
145
+ return this.client.rest
146
+ .get<RawGuildApplicationCommandPermissions>(
147
+ Endpoints.applicationCommandPermissions(
148
+ this.applicationId,
149
+ this.guildId,
150
+ this.id
151
+ )
152
+ )
153
+ .then((response) => ({
154
+ id: response.id,
155
+ applicationId: response.application_id,
156
+ guildId: response.guild_id,
157
+ permissions: response.permissions.map((permission) => ({
158
+ id: permission.id,
159
+ type: permission.type,
160
+ permission: permission.permission,
161
+ })),
162
+ }));
163
+ }
164
+
165
+ override toRaw(): RawApplicationCommand {
166
+ return this.raw;
167
+ }
168
+
169
+ override toJSON(): JSONApplicationCommand {
170
+ return {
171
+ ...super.toJSON(),
172
+ type: this.type,
173
+ applicationId: this.applicationId,
174
+ guildId: this.guildId,
175
+ name: this.name,
176
+ nameLocalizations: this.nameLocalizations,
177
+ description: this.description,
178
+ descriptionLocalizations: this.descriptionLocalizations,
179
+ options: this.options,
180
+ defaultMemberPermissions: this.defaultMemberPermissions,
181
+ dmPermission: this.dmPermission,
182
+ defaultPermission: this.defaultPermission,
183
+ nsfw: this.nsfw,
184
+ version: this.version,
185
+ };
186
+ }
187
+ }
@@ -0,0 +1,112 @@
1
+ import {
2
+ ApplicationCommand,
3
+ AutoModerationRule,
4
+ Channel,
5
+ GuildScheduledEvent,
6
+ Integration,
7
+ User,
8
+ Webhook,
9
+ } from ".";
10
+ import type { Client } from "../Client";
11
+ import type { JSONAuditLog, JSONAuditLogEntry, RawAuditLog } from "../types";
12
+
13
+ /** https://discord.com/developers/docs/resources/audit-log */
14
+ export class AuditLog {
15
+ private client: Client;
16
+ private raw: RawAuditLog;
17
+ applicationCommands: Array<ApplicationCommand>;
18
+ auditLogEntries: Array<JSONAuditLogEntry>;
19
+ autoModerationRules: Array<AutoModerationRule>;
20
+ guildScheduledEvents: Array<GuildScheduledEvent>;
21
+ integrations: Array<Integration>;
22
+ threads: Array<Channel>;
23
+ users: Array<User>;
24
+ webhooks: Array<Webhook>;
25
+
26
+ constructor(data: RawAuditLog, client: Client) {
27
+ this.client = client;
28
+ this.raw = data;
29
+ this.applicationCommands = data.application_commands.map(
30
+ (applicationCommand) =>
31
+ new ApplicationCommand(applicationCommand, this.client)
32
+ );
33
+ this.auditLogEntries = data.audit_log_entries.map((auditLogEntry) => ({
34
+ targetId: auditLogEntry.target_id,
35
+ changes: auditLogEntry.changes?.map((change) => ({
36
+ newValue: change.new_value,
37
+ oldValue: change.old_value,
38
+ key: change.key,
39
+ })),
40
+ userId: auditLogEntry.user_id,
41
+ id: auditLogEntry.id,
42
+ actionType: auditLogEntry.action_type,
43
+ options:
44
+ auditLogEntry.options !== undefined
45
+ ? {
46
+ applicationId: auditLogEntry.options.application_id,
47
+ autoModerationRuleName:
48
+ auditLogEntry.options.auto_moderation_rule_name,
49
+ autoModerationRuleTriggerType:
50
+ auditLogEntry.options.auto_moderation_rule_trigger_type,
51
+ channelId: auditLogEntry.options.channel_id,
52
+ count: auditLogEntry.options.count,
53
+ deleteMemberDays: auditLogEntry.options.delete_member_days,
54
+ id: auditLogEntry.options.id,
55
+ membersRemoved: auditLogEntry.options.members_removed,
56
+ messageId: auditLogEntry.options.message_id,
57
+ roleName: auditLogEntry.options.role_name,
58
+ type: auditLogEntry.options.type,
59
+ integrationType: auditLogEntry.options.integration_type,
60
+ }
61
+ : undefined,
62
+ reason: auditLogEntry.reason,
63
+ }));
64
+ this.autoModerationRules = data.auto_moderation_rules.map(
65
+ (autoModerationRule) =>
66
+ new AutoModerationRule(autoModerationRule, this.client)
67
+ );
68
+ this.guildScheduledEvents = data.guild_scheduled_events.map(
69
+ (guildScheduledEvent) =>
70
+ new GuildScheduledEvent(guildScheduledEvent, this.client)
71
+ );
72
+ this.integrations = data.integrations.map(
73
+ (integration) => new Integration(integration, this.client)
74
+ );
75
+ this.threads = data.threads.map(
76
+ (thread) => new Channel(thread, this.client)
77
+ );
78
+ this.users = data.users.map((user) => new User(user, this.client));
79
+ this.webhooks = data.webhooks.map(
80
+ (webhook) => new Webhook(webhook, this.client)
81
+ );
82
+ }
83
+
84
+ toString(): string {
85
+ return `[${this.constructor.name}]`;
86
+ }
87
+
88
+ toRaw(): RawAuditLog {
89
+ return this.raw;
90
+ }
91
+
92
+ toJSON(): JSONAuditLog {
93
+ return {
94
+ applicationCommands: this.applicationCommands.map((applicationCommand) =>
95
+ applicationCommand.toJSON()
96
+ ),
97
+ auditLogEntries: this.auditLogEntries,
98
+ autoModerationRules: this.autoModerationRules.map((autoModerationRule) =>
99
+ autoModerationRule.toJSON()
100
+ ),
101
+ guildScheduledEvents: this.guildScheduledEvents.map(
102
+ (guildScheduledEvent) => guildScheduledEvent.toJSON()
103
+ ),
104
+ integrations: this.integrations.map((integration) =>
105
+ integration.toJSON()
106
+ ),
107
+ threads: this.threads.map((thread) => thread.toJSON()),
108
+ users: this.users.map((user) => user.toJSON()),
109
+ webhooks: this.webhooks.map((webhook) => webhook.toJSON()),
110
+ };
111
+ }
112
+ }
@@ -0,0 +1,127 @@
1
+ import type { Client } from "../Client";
2
+ import { Endpoints } from "../rest";
3
+ import type {
4
+ JSONAutoModerationAction,
5
+ JSONAutoModerationRule,
6
+ JSONTriggerMetadata,
7
+ RawAutoModerationRule,
8
+ } from "../types";
9
+ import { Base } from ".";
10
+ import type { EventTypes, TriggerTypes } from "../constants";
11
+
12
+ /** https://discord.com/developers/docs/resources/auto-moderation */
13
+ export class AutoModerationRule extends Base {
14
+ protected override raw: RawAutoModerationRule;
15
+ guildId: string;
16
+ name: string;
17
+ creatorId: string;
18
+ eventType: EventTypes;
19
+ triggerType: TriggerTypes;
20
+ triggerMetadata: JSONTriggerMetadata;
21
+ actions: Array<JSONAutoModerationAction>;
22
+ enabled: boolean;
23
+ exemptRoles: Array<string>;
24
+ exemptChannels: Array<string>;
25
+
26
+ constructor(data: RawAutoModerationRule, client: Client) {
27
+ super(data.id, client);
28
+
29
+ this.raw = data;
30
+ this.guildId = data.guild_id;
31
+ this.name = data.name;
32
+ this.creatorId = data.creator_id;
33
+ this.eventType = data.event_type;
34
+ this.triggerType = data.trigger_type;
35
+ this.triggerMetadata = {
36
+ keywordFilter: data.trigger_metadata.keyword_filter,
37
+ regexPatterns: data.trigger_metadata.regex_patterns,
38
+ presets: data.trigger_metadata.presets,
39
+ allowList: data.trigger_metadata.allow_list,
40
+ mentionTotalLimit: data.trigger_metadata.mention_total_limit,
41
+ mentionRaidProtection: data.trigger_metadata.mention_raid_protection,
42
+ };
43
+ this.actions = data.actions.map((action) => ({
44
+ type: action.type,
45
+ metadata: {
46
+ channelId: action.metadata.channel_id,
47
+ durationSeconds: action.metadata.duration_seconds,
48
+ customMessage: action.metadata.custom_message,
49
+ },
50
+ }));
51
+ this.enabled = data.enabled;
52
+ this.exemptRoles = data.exempt_roles;
53
+ this.exemptChannels = data.exempt_channels;
54
+ }
55
+
56
+ /** https://discord.com/developers/docs/resources/auto-moderation#delete-auto-moderation-rule */
57
+ delete(reason?: string): void {
58
+ this.client.rest.delete(
59
+ Endpoints.guildAutoModerationRule(this.guildId, this.id),
60
+ {
61
+ reason,
62
+ }
63
+ );
64
+ }
65
+
66
+ /** https://discord.com/developers/docs/resources/auto-moderation#modify-auto-moderation-rule */
67
+ async edit(
68
+ options: {
69
+ name?: string;
70
+ eventType?: EventTypes;
71
+ triggerType?: TriggerTypes;
72
+ triggerMetadata?: JSONTriggerMetadata;
73
+ actions?: Array<JSONAutoModerationAction>;
74
+ enabled?: boolean;
75
+ exemptRoles?: Array<string>;
76
+ exemptChannels?: Array<string>;
77
+ },
78
+ reason?: string
79
+ ): Promise<AutoModerationRule> {
80
+ return new AutoModerationRule(
81
+ await this.client.rest.patch<RawAutoModerationRule>(
82
+ Endpoints.guildAutoModerationRule(this.guildId, this.id),
83
+ {
84
+ json: {
85
+ name: options.name,
86
+ event_type: options.eventType,
87
+ trigger_type: options.triggerType,
88
+ trigger_metadata: options.triggerMetadata,
89
+ actions: options.actions?.map((action) => ({
90
+ type: action.type,
91
+ metadata: {
92
+ channelId: action.metadata.channelId,
93
+ durationSeconds: action.metadata.durationSeconds,
94
+ customMessage: action.metadata.customMessage,
95
+ },
96
+ })),
97
+ enabled: options.enabled,
98
+ exempt_roles: options.exemptRoles,
99
+ exempt_channels: options.exemptChannels,
100
+ },
101
+ reason,
102
+ }
103
+ ),
104
+ this.client
105
+ );
106
+ }
107
+
108
+ override toRaw(): RawAutoModerationRule {
109
+ return this.raw;
110
+ }
111
+
112
+ override toJSON(): JSONAutoModerationRule {
113
+ return {
114
+ ...super.toJSON(),
115
+ guildId: this.guildId,
116
+ name: this.name,
117
+ creatorId: this.creatorId,
118
+ eventType: this.eventType,
119
+ triggerType: this.triggerType,
120
+ triggerMetadata: this.triggerMetadata,
121
+ actions: this.actions,
122
+ enabled: this.enabled,
123
+ exemptRoles: this.exemptRoles,
124
+ exemptChannels: this.exemptChannels,
125
+ };
126
+ }
127
+ }
@@ -0,0 +1,39 @@
1
+ import type { Client } from "../Client";
2
+
3
+ export abstract class Base {
4
+ protected client: Client;
5
+ protected raw: {
6
+ id: string;
7
+ };
8
+ id: string;
9
+
10
+ constructor(id: string, client: Client) {
11
+ this.client = client;
12
+ this.raw = {
13
+ id,
14
+ };
15
+ this.id = id;
16
+ }
17
+
18
+ protected patch(data: unknown): void {}
19
+
20
+ toString(): string {
21
+ return `[${this.constructor.name}]`;
22
+ }
23
+
24
+ toRaw(): {
25
+ id: string;
26
+ } {
27
+ return {
28
+ id: this.id,
29
+ };
30
+ }
31
+
32
+ toJSON(): {
33
+ id: string;
34
+ } {
35
+ return {
36
+ id: this.id,
37
+ };
38
+ }
39
+ }