@ovencord/discord.js 14.16.3

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 (332) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +148 -0
  3. package/package.json +73 -0
  4. package/src/client/Client.ts +967 -0
  5. package/src/client/actions/Action.ts +141 -0
  6. package/src/client/actions/ActionsManager.ts +138 -0
  7. package/src/client/actions/ChannelCreate.ts +21 -0
  8. package/src/client/actions/ChannelDelete.ts +20 -0
  9. package/src/client/actions/ChannelUpdate.ts +38 -0
  10. package/src/client/actions/GuildChannelsPositionUpdate.ts +17 -0
  11. package/src/client/actions/GuildEmojiCreate.ts +17 -0
  12. package/src/client/actions/GuildEmojiDelete.ts +16 -0
  13. package/src/client/actions/GuildEmojiUpdate.ts +17 -0
  14. package/src/client/actions/GuildEmojisUpdate.ts +30 -0
  15. package/src/client/actions/GuildMemberRemove.ts +29 -0
  16. package/src/client/actions/GuildMemberUpdate.ts +41 -0
  17. package/src/client/actions/GuildRoleCreate.ts +23 -0
  18. package/src/client/actions/GuildRoleDelete.ts +26 -0
  19. package/src/client/actions/GuildRolesPositionUpdate.ts +17 -0
  20. package/src/client/actions/GuildScheduledEventDelete.ts +28 -0
  21. package/src/client/actions/GuildScheduledEventUserAdd.ts +29 -0
  22. package/src/client/actions/GuildScheduledEventUserRemove.ts +29 -0
  23. package/src/client/actions/GuildSoundboardSoundDelete.ts +26 -0
  24. package/src/client/actions/GuildStickerCreate.ts +17 -0
  25. package/src/client/actions/GuildStickerDelete.ts +16 -0
  26. package/src/client/actions/GuildStickerUpdate.ts +17 -0
  27. package/src/client/actions/GuildStickersUpdate.ts +30 -0
  28. package/src/client/actions/GuildUpdate.ts +30 -0
  29. package/src/client/actions/InteractionCreate.ts +104 -0
  30. package/src/client/actions/MessageCreate.ts +38 -0
  31. package/src/client/actions/MessageDelete.ts +29 -0
  32. package/src/client/actions/MessageDeleteBulk.ts +45 -0
  33. package/src/client/actions/MessagePollVoteAdd.ts +37 -0
  34. package/src/client/actions/MessagePollVoteRemove.ts +35 -0
  35. package/src/client/actions/MessageReactionAdd.ts +68 -0
  36. package/src/client/actions/MessageReactionRemove.ts +47 -0
  37. package/src/client/actions/MessageReactionRemoveAll.ts +30 -0
  38. package/src/client/actions/MessageReactionRemoveEmoji.ts +25 -0
  39. package/src/client/actions/MessageUpdate.ts +22 -0
  40. package/src/client/actions/StageInstanceCreate.ts +25 -0
  41. package/src/client/actions/StageInstanceDelete.ts +28 -0
  42. package/src/client/actions/StageInstanceUpdate.ts +27 -0
  43. package/src/client/actions/ThreadCreate.ts +22 -0
  44. package/src/client/actions/ThreadMembersUpdate.ts +45 -0
  45. package/src/client/actions/TypingStart.ts +26 -0
  46. package/src/client/actions/UserUpdate.ts +33 -0
  47. package/src/client/voice/ClientVoiceManager.ts +46 -0
  48. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.ts +19 -0
  49. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.ts +17 -0
  50. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.ts +18 -0
  51. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.ts +21 -0
  52. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.ts +20 -0
  53. package/src/client/websocket/handlers/CHANNEL_CREATE.ts +4 -0
  54. package/src/client/websocket/handlers/CHANNEL_DELETE.ts +4 -0
  55. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.ts +22 -0
  56. package/src/client/websocket/handlers/CHANNEL_UPDATE.ts +16 -0
  57. package/src/client/websocket/handlers/ENTITLEMENT_CREATE.ts +14 -0
  58. package/src/client/websocket/handlers/ENTITLEMENT_DELETE.ts +18 -0
  59. package/src/client/websocket/handlers/ENTITLEMENT_UPDATE.ts +16 -0
  60. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.ts +19 -0
  61. package/src/client/websocket/handlers/GUILD_BAN_ADD.ts +15 -0
  62. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.ts +20 -0
  63. package/src/client/websocket/handlers/GUILD_CREATE.ts +34 -0
  64. package/src/client/websocket/handlers/GUILD_DELETE.ts +36 -0
  65. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.ts +4 -0
  66. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.ts +15 -0
  67. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.ts +40 -0
  68. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.ts +17 -0
  69. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.ts +4 -0
  70. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.ts +4 -0
  71. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.ts +4 -0
  72. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.ts +4 -0
  73. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.ts +21 -0
  74. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.ts +17 -0
  75. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.ts +4 -0
  76. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.ts +19 -0
  77. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.ts +4 -0
  78. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.ts +4 -0
  79. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.ts +24 -0
  80. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.ts +18 -0
  81. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.ts +4 -0
  82. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.ts +20 -0
  83. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.ts +4 -0
  84. package/src/client/websocket/handlers/GUILD_UPDATE.ts +4 -0
  85. package/src/client/websocket/handlers/INTERACTION_CREATE.ts +4 -0
  86. package/src/client/websocket/handlers/INVITE_CREATE.ts +20 -0
  87. package/src/client/websocket/handlers/INVITE_DELETE.ts +23 -0
  88. package/src/client/websocket/handlers/MESSAGE_CREATE.ts +4 -0
  89. package/src/client/websocket/handlers/MESSAGE_DELETE.ts +4 -0
  90. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.ts +4 -0
  91. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.ts +4 -0
  92. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.ts +4 -0
  93. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.ts +4 -0
  94. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.ts +4 -0
  95. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.ts +4 -0
  96. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.ts +4 -0
  97. package/src/client/websocket/handlers/MESSAGE_UPDATE.ts +16 -0
  98. package/src/client/websocket/handlers/PRESENCE_UPDATE.ts +42 -0
  99. package/src/client/websocket/handlers/RATE_LIMITED.ts +23 -0
  100. package/src/client/websocket/handlers/READY.ts +29 -0
  101. package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.ts +24 -0
  102. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.ts +4 -0
  103. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.ts +4 -0
  104. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.ts +4 -0
  105. package/src/client/websocket/handlers/SUBSCRIPTION_CREATE.ts +14 -0
  106. package/src/client/websocket/handlers/SUBSCRIPTION_DELETE.ts +16 -0
  107. package/src/client/websocket/handlers/SUBSCRIPTION_UPDATE.ts +16 -0
  108. package/src/client/websocket/handlers/THREAD_CREATE.ts +4 -0
  109. package/src/client/websocket/handlers/THREAD_DELETE.ts +17 -0
  110. package/src/client/websocket/handlers/THREAD_LIST_SYNC.ts +50 -0
  111. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.ts +4 -0
  112. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.ts +25 -0
  113. package/src/client/websocket/handlers/THREAD_UPDATE.ts +16 -0
  114. package/src/client/websocket/handlers/TYPING_START.ts +4 -0
  115. package/src/client/websocket/handlers/USER_UPDATE.ts +4 -0
  116. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.ts +16 -0
  117. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.ts +5 -0
  118. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.ts +37 -0
  119. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.ts +16 -0
  120. package/src/client/websocket/handlers/index.ts +74 -0
  121. package/src/errors/DJSError.ts +50 -0
  122. package/src/errors/ErrorCodes.ts +277 -0
  123. package/src/errors/Messages.ts +155 -0
  124. package/src/errors/index.ts +6 -0
  125. package/src/index.ts +241 -0
  126. package/src/managers/ApplicationCommandManager.ts +303 -0
  127. package/src/managers/ApplicationCommandPermissionsManager.ts +453 -0
  128. package/src/managers/ApplicationEmojiManager.ts +149 -0
  129. package/src/managers/AutoModerationRuleManager.ts +307 -0
  130. package/src/managers/BaseManager.ts +13 -0
  131. package/src/managers/CachedManager.ts +56 -0
  132. package/src/managers/CategoryChannelChildManager.ts +81 -0
  133. package/src/managers/ChannelManager.ts +194 -0
  134. package/src/managers/DMMessageManager.ts +15 -0
  135. package/src/managers/DataManager.ts +38 -0
  136. package/src/managers/EntitlementManager.ts +182 -0
  137. package/src/managers/GuildApplicationCommandManager.ts +29 -0
  138. package/src/managers/GuildBanManager.ts +221 -0
  139. package/src/managers/GuildChannelManager.ts +552 -0
  140. package/src/managers/GuildEmojiManager.ts +262 -0
  141. package/src/managers/GuildEmojiRoleManager.ts +134 -0
  142. package/src/managers/GuildForumThreadManager.ts +84 -0
  143. package/src/managers/GuildInviteManager.ts +236 -0
  144. package/src/managers/GuildManager.ts +265 -0
  145. package/src/managers/GuildMemberManager.ts +619 -0
  146. package/src/managers/GuildMemberRoleManager.ts +230 -0
  147. package/src/managers/GuildMessageManager.ts +31 -0
  148. package/src/managers/GuildScheduledEventManager.ts +330 -0
  149. package/src/managers/GuildSoundboardSoundManager.ts +157 -0
  150. package/src/managers/GuildStickerManager.ts +192 -0
  151. package/src/managers/GuildTextThreadManager.ts +91 -0
  152. package/src/managers/MessageManager.ts +352 -0
  153. package/src/managers/PartialGroupDMMessageManager.ts +15 -0
  154. package/src/managers/PermissionOverwriteManager.ts +174 -0
  155. package/src/managers/PollAnswerVoterManager.ts +59 -0
  156. package/src/managers/PresenceManager.ts +60 -0
  157. package/src/managers/ReactionManager.ts +72 -0
  158. package/src/managers/ReactionUserManager.ts +82 -0
  159. package/src/managers/RoleManager.ts +432 -0
  160. package/src/managers/StageInstanceManager.ts +166 -0
  161. package/src/managers/SubscriptionManager.ts +83 -0
  162. package/src/managers/ThreadManager.ts +210 -0
  163. package/src/managers/ThreadMemberManager.ts +194 -0
  164. package/src/managers/UserManager.ts +139 -0
  165. package/src/managers/VoiceStateManager.ts +61 -0
  166. package/src/sharding/Shard.ts +513 -0
  167. package/src/sharding/ShardClientUtil.ts +293 -0
  168. package/src/sharding/ShardingManager.ts +374 -0
  169. package/src/structures/ActionRow.ts +31 -0
  170. package/src/structures/AnnouncementChannel.ts +25 -0
  171. package/src/structures/AnonymousGuild.ts +110 -0
  172. package/src/structures/ApplicationCommand.ts +675 -0
  173. package/src/structures/ApplicationEmoji.ts +189 -0
  174. package/src/structures/ApplicationRoleConnectionMetadata.ts +54 -0
  175. package/src/structures/Attachment.ts +189 -0
  176. package/src/structures/AuthorizingIntegrationOwners.ts +63 -0
  177. package/src/structures/AutoModerationActionExecution.ts +138 -0
  178. package/src/structures/AutoModerationRule.ts +325 -0
  179. package/src/structures/AutocompleteInteraction.ts +115 -0
  180. package/src/structures/Base.ts +37 -0
  181. package/src/structures/BaseChannel.ts +188 -0
  182. package/src/structures/BaseGuild.ts +134 -0
  183. package/src/structures/BaseGuildEmoji.ts +113 -0
  184. package/src/structures/BaseGuildTextChannel.ts +230 -0
  185. package/src/structures/BaseGuildVoiceChannel.ts +270 -0
  186. package/src/structures/BaseInteraction.ts +393 -0
  187. package/src/structures/BaseInvite.ts +192 -0
  188. package/src/structures/BaseSelectMenuComponent.ts +58 -0
  189. package/src/structures/ButtonComponent.ts +68 -0
  190. package/src/structures/ButtonInteraction.ts +8 -0
  191. package/src/structures/CategoryChannel.ts +46 -0
  192. package/src/structures/ChannelSelectMenuComponent.ts +18 -0
  193. package/src/structures/ChannelSelectMenuInteraction.ts +34 -0
  194. package/src/structures/ChatInputCommandInteraction.ts +43 -0
  195. package/src/structures/ClientApplication.ts +470 -0
  196. package/src/structures/ClientPresence.ts +87 -0
  197. package/src/structures/ClientUser.ts +219 -0
  198. package/src/structures/CommandInteraction.ts +193 -0
  199. package/src/structures/CommandInteractionOptionResolver.ts +336 -0
  200. package/src/structures/Component.ts +59 -0
  201. package/src/structures/ContainerComponent.ts +63 -0
  202. package/src/structures/ContextMenuCommandInteraction.ts +68 -0
  203. package/src/structures/DMChannel.ts +148 -0
  204. package/src/structures/DirectoryChannel.ts +40 -0
  205. package/src/structures/Embed.ts +251 -0
  206. package/src/structures/Emoji.ts +61 -0
  207. package/src/structures/Entitlement.ts +206 -0
  208. package/src/structures/FileComponent.ts +41 -0
  209. package/src/structures/ForumChannel.ts +31 -0
  210. package/src/structures/GroupDMInvite.ts +34 -0
  211. package/src/structures/Guild.ts +1605 -0
  212. package/src/structures/GuildAuditLogs.ts +99 -0
  213. package/src/structures/GuildAuditLogsEntry.ts +557 -0
  214. package/src/structures/GuildBan.ts +65 -0
  215. package/src/structures/GuildChannel.ts +515 -0
  216. package/src/structures/GuildEmoji.ts +159 -0
  217. package/src/structures/GuildInvite.ts +233 -0
  218. package/src/structures/GuildMember.ts +643 -0
  219. package/src/structures/GuildOnboarding.ts +73 -0
  220. package/src/structures/GuildOnboardingPrompt.ts +93 -0
  221. package/src/structures/GuildOnboardingPromptOption.ts +100 -0
  222. package/src/structures/GuildPreview.ts +218 -0
  223. package/src/structures/GuildPreviewEmoji.ts +28 -0
  224. package/src/structures/GuildScheduledEvent.ts +593 -0
  225. package/src/structures/GuildTemplate.ts +229 -0
  226. package/src/structures/Integration.ts +257 -0
  227. package/src/structures/IntegrationApplication.ts +84 -0
  228. package/src/structures/InteractionCallback.ts +86 -0
  229. package/src/structures/InteractionCallbackResource.ts +57 -0
  230. package/src/structures/InteractionCallbackResponse.ts +35 -0
  231. package/src/structures/InteractionCollector.ts +260 -0
  232. package/src/structures/InteractionWebhook.ts +65 -0
  233. package/src/structures/InviteGuild.ts +22 -0
  234. package/src/structures/LabelComponent.ts +51 -0
  235. package/src/structures/MediaChannel.ts +8 -0
  236. package/src/structures/MediaGalleryComponent.ts +31 -0
  237. package/src/structures/MediaGalleryItem.ts +54 -0
  238. package/src/structures/MentionableSelectMenuComponent.ts +8 -0
  239. package/src/structures/MentionableSelectMenuInteraction.ts +76 -0
  240. package/src/structures/Message.ts +1202 -0
  241. package/src/structures/MessageCollector.ts +155 -0
  242. package/src/structures/MessageComponentInteraction.ts +132 -0
  243. package/src/structures/MessageContextMenuCommandInteraction.ts +18 -0
  244. package/src/structures/MessageMentions.ts +327 -0
  245. package/src/structures/MessagePayload.ts +325 -0
  246. package/src/structures/MessageReaction.ts +219 -0
  247. package/src/structures/ModalComponentResolver.ts +237 -0
  248. package/src/structures/ModalSubmitInteraction.ts +260 -0
  249. package/src/structures/OAuth2Guild.ts +30 -0
  250. package/src/structures/PartialGroupDMChannel.ts +151 -0
  251. package/src/structures/PermissionOverwrites.ts +222 -0
  252. package/src/structures/Poll.ts +195 -0
  253. package/src/structures/PollAnswer.ts +100 -0
  254. package/src/structures/Presence.ts +448 -0
  255. package/src/structures/PrimaryEntryPointCommandInteraction.ts +8 -0
  256. package/src/structures/ReactionCollector.ts +245 -0
  257. package/src/structures/ReactionEmoji.ts +30 -0
  258. package/src/structures/Role.ts +543 -0
  259. package/src/structures/RoleSelectMenuComponent.ts +8 -0
  260. package/src/structures/RoleSelectMenuInteraction.ts +34 -0
  261. package/src/structures/SKU.ts +62 -0
  262. package/src/structures/SectionComponent.ts +44 -0
  263. package/src/structures/SeparatorComponent.ts +29 -0
  264. package/src/structures/SoundboardSound.ts +176 -0
  265. package/src/structures/StageChannel.ts +118 -0
  266. package/src/structures/StageInstance.ts +173 -0
  267. package/src/structures/Sticker.ts +300 -0
  268. package/src/structures/StickerPack.ts +111 -0
  269. package/src/structures/StringSelectMenuComponent.ts +18 -0
  270. package/src/structures/StringSelectMenuInteraction.ts +21 -0
  271. package/src/structures/Subscription.ts +138 -0
  272. package/src/structures/Team.ts +131 -0
  273. package/src/structures/TeamMember.ts +77 -0
  274. package/src/structures/TextChannel.ts +33 -0
  275. package/src/structures/TextDisplayComponent.ts +18 -0
  276. package/src/structures/TextInputComponent.ts +28 -0
  277. package/src/structures/ThreadChannel.ts +680 -0
  278. package/src/structures/ThreadMember.ts +125 -0
  279. package/src/structures/ThreadOnlyChannel.ts +276 -0
  280. package/src/structures/ThumbnailComponent.ts +51 -0
  281. package/src/structures/Typing.ts +81 -0
  282. package/src/structures/UnfurledMediaItem.ts +33 -0
  283. package/src/structures/User.ts +511 -0
  284. package/src/structures/UserContextMenuCommandInteraction.ts +28 -0
  285. package/src/structures/UserSelectMenuComponent.ts +8 -0
  286. package/src/structures/UserSelectMenuInteraction.ts +54 -0
  287. package/src/structures/VoiceChannel.ts +119 -0
  288. package/src/structures/VoiceChannelEffect.ts +92 -0
  289. package/src/structures/VoiceRegion.ts +52 -0
  290. package/src/structures/VoiceState.ts +346 -0
  291. package/src/structures/Webhook.ts +526 -0
  292. package/src/structures/WelcomeChannel.ts +67 -0
  293. package/src/structures/WelcomeScreen.ts +53 -0
  294. package/src/structures/Widget.ts +110 -0
  295. package/src/structures/WidgetMember.ts +124 -0
  296. package/src/structures/interfaces/Application.ts +179 -0
  297. package/src/structures/interfaces/Collector.ts +372 -0
  298. package/src/structures/interfaces/InteractionResponses.ts +384 -0
  299. package/src/structures/interfaces/TextBasedChannel.ts +430 -0
  300. package/src/util/APITypes.ts +690 -0
  301. package/src/util/ActivityFlagsBitField.ts +26 -0
  302. package/src/util/ApplicationFlagsBitField.ts +43 -0
  303. package/src/util/AttachmentFlagsBitField.ts +26 -0
  304. package/src/util/BitField.ts +178 -0
  305. package/src/util/ChannelFlagsBitField.ts +43 -0
  306. package/src/util/Channels.ts +165 -0
  307. package/src/util/Colors.ts +72 -0
  308. package/src/util/Components.ts +285 -0
  309. package/src/util/Constants.ts +251 -0
  310. package/src/util/DataResolver.ts +146 -0
  311. package/src/util/Enums.ts +10 -0
  312. package/src/util/Events.ts +178 -0
  313. package/src/util/GuildMemberFlagsBitField.ts +43 -0
  314. package/src/util/IntentsBitField.ts +35 -0
  315. package/src/util/InviteFlagsBitField.ts +26 -0
  316. package/src/util/Invites.ts +27 -0
  317. package/src/util/LimitedCollection.ts +73 -0
  318. package/src/util/MessageFlagsBitField.ts +43 -0
  319. package/src/util/Options.ts +215 -0
  320. package/src/util/Partials.ts +50 -0
  321. package/src/util/PermissionsBitField.ts +113 -0
  322. package/src/util/RoleFlagsBitField.ts +26 -0
  323. package/src/util/SKUFlagsBitField.ts +26 -0
  324. package/src/util/ShardEvents.ts +26 -0
  325. package/src/util/Status.ts +16 -0
  326. package/src/util/Sweepers.ts +532 -0
  327. package/src/util/Symbols.ts +1 -0
  328. package/src/util/SystemChannelFlagsBitField.ts +45 -0
  329. package/src/util/ThreadMemberFlagsBitField.ts +33 -0
  330. package/src/util/Transformers.ts +123 -0
  331. package/src/util/UserFlagsBitField.ts +33 -0
  332. package/src/util/Util.ts +519 -0
@@ -0,0 +1,38 @@
1
+
2
+ import { DiscordjsError, ErrorCodes } from '../errors/index.js';
3
+ import { BaseManager } from './BaseManager.js';
4
+
5
+ /**
6
+ * Manages the API methods of a data model along with a collection of instances.
7
+ *
8
+ * @extends {BaseManager}
9
+ * @abstract
10
+ */
11
+ export abstract class DataManager extends BaseManager {
12
+ public holds: any;
13
+
14
+ constructor(client: any, holds: any) {
15
+ super(client);
16
+ this.holds = holds;
17
+ }
18
+
19
+ get cache(): any {
20
+ throw new DiscordjsError(ErrorCodes.NotImplemented, 'get cache', this.constructor.name);
21
+ }
22
+
23
+ resolve(idOrInstance: any): any {
24
+ if (idOrInstance instanceof this.holds) return idOrInstance;
25
+ if (typeof idOrInstance === 'string') return this.cache.get(idOrInstance) ?? null;
26
+ return null;
27
+ }
28
+
29
+ resolveId(idOrInstance: any): any {
30
+ if (idOrInstance instanceof this.holds) return (idOrInstance as any).id;
31
+ if (typeof idOrInstance === 'string') return idOrInstance;
32
+ return null;
33
+ }
34
+
35
+ override valueOf(): any {
36
+ return this.cache;
37
+ }
38
+ }
@@ -0,0 +1,182 @@
1
+ import { Collection } from '@ovencord/collection';
2
+ import { makeURLSearchParams } from '@ovencord/rest';
3
+ import { Routes, EntitlementOwnerType } from 'discord-api-types/v10';
4
+ import { ErrorCodes, DiscordjsTypeError } from '../errors/index.js';
5
+ import { Entitlement } from '../structures/Entitlement.js';
6
+ import { resolveSKUId } from '../util/Util.js';
7
+ import { CachedManager } from './CachedManager.js';
8
+
9
+ /**
10
+ * Manages API methods for entitlements and stores their cache.
11
+ *
12
+ * @extends {CachedManager}
13
+ */
14
+ export class EntitlementManager extends CachedManager {
15
+ public client: any;
16
+ constructor(client, iterable) {
17
+ super(client, Entitlement, iterable);
18
+ }
19
+
20
+ /**
21
+ * The cache of this manager
22
+ *
23
+ * @type {Collection<Snowflake, Entitlement>}
24
+ * @name EntitlementManager#cache
25
+ */
26
+
27
+ /**
28
+ * Data that resolves to give an Entitlement object. This can be:
29
+ * - An Entitlement object
30
+ * - A Snowflake
31
+ *
32
+ * @typedef {Entitlement|Snowflake} EntitlementResolvable
33
+ */
34
+
35
+ /**
36
+ * Data that resolves to give a SKU object. This can be:
37
+ * - A SKU object
38
+ * - A Snowflake
39
+ *
40
+ * @typedef {SKU|Snowflake} SKUResolvable
41
+ */
42
+
43
+ /**
44
+ * Options used to fetch an entitlement
45
+ *
46
+ * @typedef {BaseFetchOptions} FetchEntitlementOptions
47
+ * @property {EntitlementResolvable} entitlement The entitlement to fetch
48
+ */
49
+
50
+ /**
51
+ * Options used to fetch entitlements
52
+ *
53
+ * @typedef {Object} FetchEntitlementsOptions
54
+ * @property {number} [limit] The maximum number of entitlements to fetch
55
+ * @property {GuildResolvable} [guild] The guild to fetch entitlements for
56
+ * @property {UserResolvable} [user] The user to fetch entitlements for
57
+ * @property {SKUResolvable[]} [skus] The SKUs to fetch entitlements for
58
+ * @property {boolean} [excludeEnded] Whether to exclude ended entitlements
59
+ * @property {boolean} [excludeDeleted] Whether to exclude deleted entitlements
60
+ * @property {boolean} [cache=true] Whether to cache the fetched entitlements
61
+ * @property {Snowflake} [before] Consider only entitlements before this entitlement id
62
+ * @property {Snowflake} [after] Consider only entitlements after this entitlement id
63
+ * <warn>If both `before` and `after` are provided, only `before` is respected</warn>
64
+ */
65
+
66
+ /**
67
+ * Fetches entitlements for this application
68
+ *
69
+ * @param {EntitlementResolvable|FetchEntitlementOptions|FetchEntitlementsOptions} [options]
70
+ * Options for fetching the entitlements
71
+ * @returns {Promise<Entitlement|Collection<Snowflake, Entitlement>>}
72
+ */
73
+ async fetch(options) {
74
+ if (!options) return this._fetchMany(options);
75
+ const { entitlement, cache, force } = options;
76
+ const resolvedEntitlement = this.resolveId(entitlement ?? options);
77
+
78
+ if (resolvedEntitlement) {
79
+ return this._fetchSingle({ entitlement: resolvedEntitlement, cache, force });
80
+ }
81
+
82
+ return this._fetchMany(options);
83
+ }
84
+
85
+ async _fetchSingle({ entitlement, cache, force = false }) {
86
+ if (!force) {
87
+ const existing = this.cache.get(entitlement);
88
+
89
+ if (existing) {
90
+ return existing;
91
+ }
92
+ }
93
+
94
+ const data = await this.client.rest.get(Routes.entitlement(this.client.application.id, entitlement));
95
+ return this._add(data, cache);
96
+ }
97
+
98
+ async _fetchMany({ limit, guild, user, skus, excludeEnded, excludeDeleted, cache, before, after } = {}) {
99
+ const query = makeURLSearchParams({
100
+ limit,
101
+ guild_id: guild && this.client.guilds.resolveId(guild),
102
+ user_id: user && this.client.users.resolveId(user),
103
+ sku_ids: skus?.map(sku => resolveSKUId(sku)).join(','),
104
+ exclude_ended: excludeEnded,
105
+ exclude_deleted: excludeDeleted,
106
+ before,
107
+ after,
108
+ });
109
+
110
+ const entitlements = await this.client.rest.get(Routes.entitlements(this.client.application.id), { query });
111
+
112
+ return entitlements.reduce(
113
+ (coll, entitlement) => coll.set(entitlement.id, this._add(entitlement, cache)),
114
+ new Collection(),
115
+ );
116
+ }
117
+
118
+ /**
119
+ * Options used to create a test entitlement
120
+ * <info>Either `guild` or `user` must be provided, but not both</info>
121
+ *
122
+ * @typedef {Object} EntitlementCreateOptions
123
+ * @property {SKUResolvable} sku The id of the SKU to create the entitlement for
124
+ * @property {GuildResolvable} [guild] The guild to create the entitlement for
125
+ * @property {UserResolvable} [user] The user to create the entitlement for
126
+ */
127
+
128
+ /**
129
+ * Creates a test entitlement
130
+ *
131
+ * @param {EntitlementCreateOptions} options Options for creating the test entitlement
132
+ * @returns {Promise<Entitlement>}
133
+ */
134
+ async createTest({ sku, guild, user }) {
135
+ const skuId = resolveSKUId(sku);
136
+ if (!skuId) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'sku', 'SKUResolvable');
137
+
138
+ if ((guild && user) || (!guild && !user)) {
139
+ throw new DiscordjsTypeError(ErrorCodes.EntitlementCreateInvalidOwner);
140
+ }
141
+
142
+ const resolved = guild ? this.client.guilds.resolveId(guild) : this.client.users.resolveId(user);
143
+ if (!resolved) {
144
+ const name = guild ? 'guild' : 'user';
145
+ const type = guild ? 'GuildResolvable' : 'UserResolvable';
146
+ throw new DiscordjsTypeError(ErrorCodes.InvalidType, name, type);
147
+ }
148
+
149
+ const entitlement = await this.client.rest.post(Routes.entitlements(this.client.application.id), {
150
+ body: {
151
+ sku_id: skuId,
152
+ owner_id: resolved,
153
+ owner_type: guild ? EntitlementOwnerType.Guild : EntitlementOwnerType.User,
154
+ },
155
+ });
156
+ return new Entitlement(this.client, entitlement);
157
+ }
158
+
159
+ /**
160
+ * Deletes a test entitlement
161
+ *
162
+ * @param {EntitlementResolvable} entitlement The entitlement to delete
163
+ * @returns {Promise<void>}
164
+ */
165
+ async deleteTest(entitlement) {
166
+ const resolved = this.resolveId(entitlement);
167
+ if (!resolved) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'entitlement', 'EntitlementResolvable');
168
+
169
+ await this.client.rest.delete(Routes.entitlement(this.client.application.id, resolved));
170
+ }
171
+
172
+ /**
173
+ * Marks an entitlement as consumed
174
+ * <info>Only available for One-Time Purchase consumable SKUs.</info>
175
+ *
176
+ * @param {Snowflake} entitlementId The id of the entitlement to consume
177
+ * @returns {Promise<void>}
178
+ */
179
+ async consume(entitlementId) {
180
+ await this.client.rest.post(Routes.consumeEntitlement(this.client.application.id, entitlementId));
181
+ }
182
+ }
@@ -0,0 +1,29 @@
1
+ import { ApplicationCommandManager } from './ApplicationCommandManager.js';
2
+ import { ApplicationCommandPermissionsManager } from './ApplicationCommandPermissionsManager.js';
3
+
4
+ /**
5
+ * An extension for guild-specific application commands.
6
+ *
7
+ * @extends {ApplicationCommandManager}
8
+ */
9
+ export class GuildApplicationCommandManager extends ApplicationCommandManager {
10
+ public guild: any;
11
+ public permissions: any;
12
+ constructor(guild, iterable) {
13
+ super(guild.client, iterable);
14
+
15
+ /**
16
+ * The guild that this manager belongs to
17
+ *
18
+ * @type {Guild}
19
+ */
20
+ this.guild = guild;
21
+
22
+ /**
23
+ * The manager for permissions of arbitrary commands on this guild
24
+ *
25
+ * @type {ApplicationCommandPermissionsManager}
26
+ */
27
+ this.permissions = new ApplicationCommandPermissionsManager(this);
28
+ }
29
+ }
@@ -0,0 +1,221 @@
1
+ import { Collection } from '@ovencord/collection';
2
+ import { makeURLSearchParams } from '@ovencord/rest';
3
+ import { Routes } from 'discord-api-types/v10';
4
+ import { DiscordjsTypeError, DiscordjsError, ErrorCodes } from '../errors/index.js';
5
+ import { GuildBan } from '../structures/GuildBan.js';
6
+ import { CachedManager } from './CachedManager.js';
7
+
8
+ /**
9
+ * Manages API methods for guild bans and stores their cache.
10
+ *
11
+ * @extends {CachedManager}
12
+ */
13
+ export class GuildBanManager extends CachedManager {
14
+ public guild: any;
15
+ constructor(guild, iterable) {
16
+ super(guild.client, GuildBan, iterable);
17
+
18
+ /**
19
+ * The guild this Manager belongs to
20
+ *
21
+ * @type {Guild}
22
+ */
23
+ this.guild = guild;
24
+ }
25
+
26
+ /**
27
+ * The cache of this Manager
28
+ *
29
+ * @type {Collection<Snowflake, GuildBan>}
30
+ * @name GuildBanManager#cache
31
+ */
32
+
33
+ _add(data, cache) {
34
+ return super._add(data, cache, { id: data.user.id, extras: [this.guild] });
35
+ }
36
+
37
+ /**
38
+ * Data that resolves to give a GuildBan object. This can be:
39
+ * - A GuildBan object
40
+ * - A User resolvable
41
+ *
42
+ * @typedef {GuildBan|UserResolvable} GuildBanResolvable
43
+ */
44
+
45
+ /**
46
+ * Resolves a GuildBanResolvable to a GuildBan object.
47
+ *
48
+ * @param {GuildBanResolvable} ban The ban that is in the guild
49
+ * @returns {?GuildBan}
50
+ */
51
+ resolve(ban) {
52
+ return super.resolve(ban) ?? super.resolve(this.client.users.resolveId(ban));
53
+ }
54
+
55
+ /**
56
+ * Options used to fetch a single ban from a guild.
57
+ *
58
+ * @typedef {BaseFetchOptions} FetchBanOptions
59
+ * @property {UserResolvable} user The ban to fetch
60
+ */
61
+
62
+ /**
63
+ * Options used to fetch multiple bans from a guild.
64
+ *
65
+ * @typedef {Object} FetchBansOptions
66
+ * @property {number} [limit] The maximum number of bans to return
67
+ * @property {Snowflake} [before] Consider only bans before this id
68
+ * @property {Snowflake} [after] Consider only bans after this id
69
+ * @property {boolean} [cache] Whether to cache the fetched bans
70
+ */
71
+
72
+ /**
73
+ * Fetches ban(s) from Discord.
74
+ *
75
+ * @param {UserResolvable|FetchBanOptions|FetchBansOptions} [options] Options for fetching guild ban(s)
76
+ * @returns {Promise<GuildBan|Collection<Snowflake, GuildBan>>}
77
+ * @example
78
+ * // Fetch multiple bans from a guild
79
+ * guild.bans.fetch()
80
+ * .then(console.log)
81
+ * .catch(console.error);
82
+ * @example
83
+ * // Fetch a maximum of 5 bans from a guild without caching
84
+ * guild.bans.fetch({ limit: 5, cache: false })
85
+ * .then(console.log)
86
+ * .catch(console.error);
87
+ * @example
88
+ * // Fetch a single ban
89
+ * guild.bans.fetch('351871113346809860')
90
+ * .then(console.log)
91
+ * .catch(console.error);
92
+ * @example
93
+ * // Fetch a single ban without checking cache
94
+ * guild.bans.fetch({ user, force: true })
95
+ * .then(console.log)
96
+ * .catch(console.error)
97
+ * @example
98
+ * // Fetch a single ban without caching
99
+ * guild.bans.fetch({ user, cache: false })
100
+ * .then(console.log)
101
+ * .catch(console.error);
102
+ */
103
+ async fetch(options) {
104
+ if (!options) return this._fetchMany();
105
+ const { user, cache, force, limit, before, after } = options;
106
+ const resolvedUser = this.client.users.resolveId(user ?? options);
107
+ if (resolvedUser) return this._fetchSingle({ user: resolvedUser, cache, force });
108
+
109
+ if (!before && !after && !limit && cache === undefined) {
110
+ throw new DiscordjsError(ErrorCodes.FetchBanResolveId);
111
+ }
112
+
113
+ return this._fetchMany(options);
114
+ }
115
+
116
+ async _fetchSingle({ user, cache, force = false }) {
117
+ if (!force) {
118
+ const existing = this.cache.get(user);
119
+ if (existing && !existing.partial) return existing;
120
+ }
121
+
122
+ const data = await this.client.rest.get(Routes.guildBan(this.guild.id, user));
123
+ return this._add(data, cache);
124
+ }
125
+
126
+ async _fetchMany({ cache, ...apiOptions } = {}) {
127
+ const data = await this.client.rest.get(Routes.guildBans(this.guild.id), {
128
+ query: makeURLSearchParams(apiOptions),
129
+ });
130
+
131
+ return data.reduce((col, ban) => col.set(ban.user.id, this._add(ban, cache)), new Collection());
132
+ }
133
+
134
+ /**
135
+ * Options used to ban a user from a guild.
136
+ *
137
+ * @typedef {Object} BanOptions
138
+ * @property {number} [deleteMessageSeconds] Number of seconds of messages to delete,
139
+ * must be between 0 and 604800 (7 days), inclusive
140
+ * @property {string} [reason] The reason for the ban
141
+ */
142
+
143
+ /**
144
+ * Bans a user from the guild.
145
+ *
146
+ * @param {UserResolvable} user The user to ban
147
+ * @param {BanOptions} [options={}] Options for the ban
148
+ * @returns {Promise<void>}
149
+ * @example
150
+ * // Ban a user by id (or with a user/guild member object)
151
+ * await guild.bans.create('84484653687267328');
152
+ */
153
+ async create(user, options = {}) {
154
+ if (typeof options !== 'object') throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'options', 'object', true);
155
+ const id = this.client.users.resolveId(user);
156
+ if (!id) throw new DiscordjsError(ErrorCodes.BanResolveId, true);
157
+
158
+ await this.client.rest.put(Routes.guildBan(this.guild.id, id), {
159
+ body: {
160
+ delete_message_seconds: options.deleteMessageSeconds,
161
+ },
162
+ reason: options.reason,
163
+ });
164
+ }
165
+
166
+ /**
167
+ * Unbans a user from the guild.
168
+ *
169
+ * @param {UserResolvable} user The user to unban
170
+ * @param {string} [reason] Reason for unbanning user
171
+ * @returns {Promise<void>}
172
+ * @example
173
+ * // Unban a user by id (or with a user/guild member object)
174
+ * await guild.bans.remove('84484653687267328');
175
+ */
176
+ async remove(user, reason) {
177
+ const id = this.client.users.resolveId(user);
178
+ if (!id) throw new DiscordjsError(ErrorCodes.BanResolveId);
179
+ await this.client.rest.delete(Routes.guildBan(this.guild.id, id), { reason });
180
+ }
181
+
182
+ /**
183
+ * Result of bulk banning users from a guild.
184
+ *
185
+ * @typedef {Object} BulkBanResult
186
+ * @property {Snowflake[]} bannedUsers IDs of the banned users
187
+ * @property {Snowflake[]} failedUsers IDs of the users that could not be banned or were already banned
188
+ */
189
+
190
+ /**
191
+ * Bulk ban users from a guild, and optionally delete previous messages sent by them.
192
+ *
193
+ * @param {Collection<Snowflake, UserResolvable>|UserResolvable[]} users The users to ban
194
+ * @param {BanOptions} [options] The options for bulk banning users
195
+ * @returns {Promise<BulkBanResult>} Returns an object with `bannedUsers` key containing the IDs of the banned users
196
+ * and the key `failedUsers` with the IDs that could not be banned or were already banned.
197
+ * @example
198
+ * // Bulk ban users by ids (or with user/guild member objects) and delete all their messages from the past 7 days
199
+ * guild.bans.bulkCreate(['84484653687267328'], { deleteMessageSeconds: 7 * 24 * 60 * 60 })
200
+ * .then(result => {
201
+ * console.log(`Banned ${result.bannedUsers.length} users, failed to ban ${result.failedUsers.length} users.`)
202
+ * })
203
+ * .catch(console.error);
204
+ */
205
+ async bulkCreate(users, options = {}) {
206
+ if (!users || !(Array.isArray(users) || users instanceof Collection)) {
207
+ throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'users', 'Array or Collection of UserResolvable', true);
208
+ }
209
+
210
+ if (typeof options !== 'object') throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'options', 'object', true);
211
+
212
+ const userIds = users.map(user => this.client.users.resolveId(user));
213
+ if (userIds.length === 0) throw new DiscordjsError(ErrorCodes.BulkBanUsersOptionEmpty);
214
+
215
+ const result = await this.client.rest.post(Routes.guildBulkBan(this.guild.id), {
216
+ body: { delete_message_seconds: options.deleteMessageSeconds, user_ids: userIds },
217
+ reason: options.reason,
218
+ });
219
+ return { bannedUsers: result.banned_users, failedUsers: result.failed_users };
220
+ }
221
+ }