@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,593 @@
1
+ import { DiscordSnowflake } from '@sapphire/snowflake';
2
+ import { GuildScheduledEventStatus, GuildScheduledEventEntityType, RouteBases } from 'discord-api-types/v10';
3
+ import { DiscordjsError, ErrorCodes } from '../errors/index.js';
4
+ import { Base } from './Base.js';
5
+
6
+ /**
7
+ * Represents a scheduled event in a {@link Guild}.
8
+ *
9
+ * @extends {Base}
10
+ */
11
+ export class GuildScheduledEvent extends Base {
12
+ public client: any;
13
+ public id: any;
14
+ public guildId: any;
15
+ public channelId: any;
16
+ public creatorId: any;
17
+ public name: any;
18
+ public description: any;
19
+ public scheduledStartTimestamp: any;
20
+ public scheduledEndTimestamp: any;
21
+ public privacyLevel: any;
22
+ public status: any;
23
+ public entityType: any;
24
+ public entityId: any;
25
+ public userCount: any;
26
+ public creator: any;
27
+ public entityMetadata: any;
28
+ public image: any;
29
+ public recurrenceRule: any;
30
+ constructor(client, data) {
31
+ super(client);
32
+
33
+ /**
34
+ * The id of the guild scheduled event
35
+ *
36
+ * @type {Snowflake}
37
+ */
38
+ this.id = data.id;
39
+
40
+ /**
41
+ * The id of the guild this guild scheduled event belongs to
42
+ *
43
+ * @type {Snowflake}
44
+ */
45
+ this.guildId = data.guild_id;
46
+
47
+ this._patch(data);
48
+ }
49
+
50
+ _patch(data) {
51
+ if ('channel_id' in data) {
52
+ /**
53
+ * The channel id in which the scheduled event will be hosted,
54
+ * or `null` if entity type is {@link GuildScheduledEventEntityType.External}
55
+ *
56
+ * @type {?Snowflake}
57
+ */
58
+ this.channelId = data.channel_id;
59
+ } else {
60
+ this.channelId ??= null;
61
+ }
62
+
63
+ if ('creator_id' in data) {
64
+ /**
65
+ * The id of the user that created this guild scheduled event
66
+ *
67
+ * @type {?Snowflake}
68
+ */
69
+ this.creatorId = data.creator_id;
70
+ } else {
71
+ this.creatorId ??= null;
72
+ }
73
+
74
+ if ('name' in data) {
75
+ /**
76
+ * The name of the guild scheduled event
77
+ *
78
+ * @type {?string}
79
+ */
80
+ this.name = data.name;
81
+ } else {
82
+ // Only if partial.
83
+ this.name ??= null;
84
+ }
85
+
86
+ if ('description' in data) {
87
+ /**
88
+ * The description of the guild scheduled event
89
+ *
90
+ * @type {?string}
91
+ */
92
+ this.description = data.description;
93
+ } else {
94
+ this.description ??= null;
95
+ }
96
+
97
+ if ('scheduled_start_time' in data) {
98
+ /**
99
+ * The timestamp the guild scheduled event will start at
100
+ *
101
+ * @type {?number}
102
+ */
103
+ this.scheduledStartTimestamp = Date.parse(data.scheduled_start_time);
104
+ } else {
105
+ this.scheduledStartTimestamp ??= null;
106
+ }
107
+
108
+ if ('scheduled_end_time' in data) {
109
+ /**
110
+ * The timestamp the guild scheduled event will end at
111
+ * or `null` if the event does not have a scheduled time to end
112
+ *
113
+ * @type {?number}
114
+ */
115
+ this.scheduledEndTimestamp = data.scheduled_end_time ? Date.parse(data.scheduled_end_time) : null;
116
+ } else {
117
+ this.scheduledEndTimestamp ??= null;
118
+ }
119
+
120
+ if ('privacy_level' in data) {
121
+ /**
122
+ * The privacy level of the guild scheduled event
123
+ *
124
+ * @type {?GuildScheduledEventPrivacyLevel}
125
+ */
126
+ this.privacyLevel = data.privacy_level;
127
+ } else {
128
+ // Only if partial.
129
+ this.privacyLevel ??= null;
130
+ }
131
+
132
+ if ('status' in data) {
133
+ /**
134
+ * The status of the guild scheduled event
135
+ *
136
+ * @type {?GuildScheduledEventStatus}
137
+ */
138
+ this.status = data.status;
139
+ } else {
140
+ // Only if partial.
141
+ this.status ??= null;
142
+ }
143
+
144
+ if ('entity_type' in data) {
145
+ /**
146
+ * The type of hosting entity associated with the scheduled event
147
+ *
148
+ * @type {?GuildScheduledEventEntityType}
149
+ */
150
+ this.entityType = data.entity_type;
151
+ } else {
152
+ // Only if partial.
153
+ this.entityType ??= null;
154
+ }
155
+
156
+ if ('entity_id' in data) {
157
+ /**
158
+ * The id of the hosting entity associated with the scheduled event
159
+ *
160
+ * @type {?Snowflake}
161
+ */
162
+ this.entityId = data.entity_id;
163
+ } else {
164
+ this.entityId ??= null;
165
+ }
166
+
167
+ if ('user_count' in data) {
168
+ /**
169
+ * The number of users who are subscribed to this guild scheduled event
170
+ *
171
+ * @type {?number}
172
+ */
173
+ this.userCount = data.user_count;
174
+ } else {
175
+ this.userCount ??= null;
176
+ }
177
+
178
+ if ('creator' in data) {
179
+ /**
180
+ * The user that created this guild scheduled event
181
+ *
182
+ * @type {?User}
183
+ */
184
+ this.creator = this.client.users._add(data.creator);
185
+ } else {
186
+ this.creator ??= this.client.users.resolve(this.creatorId);
187
+ }
188
+
189
+ /**
190
+ * Represents the additional metadata for a {@link GuildScheduledEvent}
191
+ *
192
+ * @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata}
193
+ * @typedef {Object} GuildScheduledEventEntityMetadata
194
+ * @property {?string} location The location of the guild scheduled event
195
+ */
196
+
197
+ if ('entity_metadata' in data) {
198
+ if (data.entity_metadata) {
199
+ /**
200
+ * Additional metadata
201
+ *
202
+ * @type {?GuildScheduledEventEntityMetadata}
203
+ */
204
+ this.entityMetadata = {
205
+ location: data.entity_metadata.location ?? this.entityMetadata?.location ?? null,
206
+ };
207
+ } else {
208
+ this.entityMetadata = null;
209
+ }
210
+ } else {
211
+ this.entityMetadata ??= null;
212
+ }
213
+
214
+ if ('image' in data) {
215
+ /**
216
+ * The cover image hash for this scheduled event
217
+ *
218
+ * @type {?string}
219
+ */
220
+ this.image = data.image;
221
+ } else {
222
+ this.image ??= null;
223
+ }
224
+
225
+ /**
226
+ * Represents the recurrence rule for a {@link GuildScheduledEvent}.
227
+ *
228
+ * @typedef {Object} GuildScheduledEventRecurrenceRule
229
+ * @property {number} startTimestamp The timestamp the recurrence rule interval starts at
230
+ * @property {Date} startAt The time the recurrence rule interval starts at
231
+ * @property {?number} endTimestamp The timestamp the recurrence rule interval ends at
232
+ * @property {?Date} endAt The time the recurrence rule interval ends at
233
+ * @property {GuildScheduledEventRecurrenceRuleFrequency} frequency How often the event occurs
234
+ * @property {number} interval The spacing between the events
235
+ * @property {?GuildScheduledEventRecurrenceRuleWeekday[]} byWeekday The days within a week to recur on
236
+ * @property {?GuildScheduledEventRecurrenceRuleNWeekday[]} byNWeekday The days within a week to recur on
237
+ * @property {?GuildScheduledEventRecurrenceRuleMonth[]} byMonth The months to recur on
238
+ * @property {?number[]} byMonthDay The days within a month to recur on
239
+ * @property {?number[]} byYearDay The days within a year to recur on
240
+ * @property {?number} count The total amount of times the event is allowed to recur before stopping
241
+ */
242
+
243
+ /**
244
+ * @typedef {Object} GuildScheduledEventRecurrenceRuleNWeekday
245
+ * @property {number} n The week to recur on
246
+ * @property {GuildScheduledEventRecurrenceRuleWeekday} day The day within the week to recur on
247
+ */
248
+
249
+ if ('recurrence_rule' in data) {
250
+ /**
251
+ * The recurrence rule for this scheduled event
252
+ *
253
+ * @type {?GuildScheduledEventRecurrenceRule}
254
+ */
255
+ this.recurrenceRule = data.recurrence_rule && {
256
+ startTimestamp: Date.parse(data.recurrence_rule.start),
257
+ get startAt() {
258
+ return new Date(this.startTimestamp);
259
+ },
260
+ endTimestamp: data.recurrence_rule.end && Date.parse(data.recurrence_rule.end),
261
+ get endAt() {
262
+ return this.endTimestamp && new Date(this.endTimestamp);
263
+ },
264
+ frequency: data.recurrence_rule.frequency,
265
+ interval: data.recurrence_rule.interval,
266
+ byWeekday: data.recurrence_rule.by_weekday,
267
+ byNWeekday: data.recurrence_rule.by_n_weekday,
268
+ byMonth: data.recurrence_rule.by_month,
269
+ byMonthDay: data.recurrence_rule.by_month_day,
270
+ byYearDay: data.recurrence_rule.by_year_day,
271
+ count: data.recurrence_rule.count,
272
+ };
273
+ } else {
274
+ this.recurrenceRule ??= null;
275
+ }
276
+ }
277
+
278
+ /**
279
+ * Whether this guild scheduled event is partial.
280
+ *
281
+ * @type {boolean}
282
+ * @readonly
283
+ */
284
+ get partial() {
285
+ return this.name === null;
286
+ }
287
+
288
+ /**
289
+ * The URL of this scheduled event's cover image
290
+ *
291
+ * @param {BaseImageURLOptions} [options={}] Options for image URL
292
+ * @returns {?string}
293
+ */
294
+ coverImageURL(options = {}) {
295
+ return this.image && this.client.rest.cdn.guildScheduledEventCover(this.id, this.image, options);
296
+ }
297
+
298
+ /**
299
+ * The timestamp the guild scheduled event was created at
300
+ *
301
+ * @type {number}
302
+ * @readonly
303
+ */
304
+ get createdTimestamp() {
305
+ return DiscordSnowflake.timestampFrom(this.id);
306
+ }
307
+
308
+ /**
309
+ * The time the guild scheduled event was created at
310
+ *
311
+ * @type {Date}
312
+ * @readonly
313
+ */
314
+ get createdAt() {
315
+ return new Date(this.createdTimestamp);
316
+ }
317
+
318
+ /**
319
+ * The time the guild scheduled event will start at
320
+ * <info>This can be potentially `null` only when it's an {@link GuildAuditLogsEntry#target}</info>
321
+ *
322
+ * @type {?Date}
323
+ * @readonly
324
+ */
325
+ get scheduledStartAt() {
326
+ return this.scheduledStartTimestamp && new Date(this.scheduledStartTimestamp);
327
+ }
328
+
329
+ /**
330
+ * The time the guild scheduled event will end at,
331
+ * or `null` if the event does not have a scheduled time to end
332
+ *
333
+ * @type {?Date}
334
+ * @readonly
335
+ */
336
+ get scheduledEndAt() {
337
+ return this.scheduledEndTimestamp && new Date(this.scheduledEndTimestamp);
338
+ }
339
+
340
+ /**
341
+ * The channel associated with this scheduled event
342
+ *
343
+ * @type {?(VoiceChannel|StageChannel)}
344
+ * @readonly
345
+ */
346
+ get channel() {
347
+ return this.client.channels.resolve(this.channelId);
348
+ }
349
+
350
+ /**
351
+ * The guild this scheduled event belongs to
352
+ *
353
+ * @type {?Guild}
354
+ * @readonly
355
+ */
356
+ get guild() {
357
+ return this.client.guilds.resolve(this.guildId);
358
+ }
359
+
360
+ /**
361
+ * The URL to the guild scheduled event
362
+ *
363
+ * @type {string}
364
+ * @readonly
365
+ */
366
+ get url() {
367
+ return `${RouteBases.scheduledEvent}/${this.guildId}/${this.id}`;
368
+ }
369
+
370
+ /**
371
+ * Options used to create an invite URL to a {@link GuildScheduledEvent}
372
+ *
373
+ * @typedef {InviteCreateOptions} GuildScheduledEventInviteURLCreateOptions
374
+ * @property {GuildInvitableChannelResolvable} [channel] The channel to create the invite in.
375
+ * <warn>This is required when the `entityType` of `GuildScheduledEvent` is
376
+ * {@link GuildScheduledEventEntityType.External}, gets ignored otherwise</warn>
377
+ */
378
+
379
+ /**
380
+ * Creates an invite URL to this guild scheduled event.
381
+ *
382
+ * @param {GuildScheduledEventInviteURLCreateOptions} [options] The options to create the invite
383
+ * @returns {Promise<string>}
384
+ */
385
+ async createInviteURL(options) {
386
+ let channelId = this.channelId;
387
+ if (this.entityType === GuildScheduledEventEntityType.External) {
388
+ if (!options?.channel) throw new DiscordjsError(ErrorCodes.InviteOptionsMissingChannel);
389
+ channelId = this.guild.channels.resolveId(options.channel);
390
+ if (!channelId) throw new DiscordjsError(ErrorCodes.GuildChannelResolve);
391
+ }
392
+
393
+ const invite = await this.guild.invites.create(channelId, options);
394
+ return `${RouteBases.invite}/${invite.code}?event=${this.id}`;
395
+ }
396
+
397
+ /**
398
+ * Edits this guild scheduled event.
399
+ *
400
+ * @param {GuildScheduledEventEditOptions} options The options to edit the guild scheduled event
401
+ * @returns {Promise<GuildScheduledEvent>}
402
+ * @example
403
+ * // Edit a guild scheduled event
404
+ * guildScheduledEvent.edit({ name: 'Party' })
405
+ * .then(guildScheduledEvent => console.log(guildScheduledEvent))
406
+ * .catch(console.error);
407
+ */
408
+ async edit(options) {
409
+ return this.guild.scheduledEvents.edit(this.id, options);
410
+ }
411
+
412
+ /**
413
+ * Fetches this guild scheduled event.
414
+ *
415
+ * @param {boolean} [force=true] Whether to skip the cache check and request the API
416
+ * @returns {Promise<GuildScheduledEvent>}
417
+ */
418
+ async fetch(force = true) {
419
+ return this.guild.scheduledEvents.fetch({ guildScheduledEvent: this.id, force });
420
+ }
421
+
422
+ /**
423
+ * Deletes this guild scheduled event.
424
+ *
425
+ * @returns {Promise<GuildScheduledEvent>}
426
+ * @example
427
+ * // Delete a guild scheduled event
428
+ * guildScheduledEvent.delete()
429
+ * .then(guildScheduledEvent => console.log(guildScheduledEvent))
430
+ * .catch(console.error);
431
+ */
432
+ async delete() {
433
+ await this.guild.scheduledEvents.delete(this.id);
434
+ return this;
435
+ }
436
+
437
+ /**
438
+ * Sets a new name for the guild scheduled event.
439
+ *
440
+ * @param {string} name The new name of the guild scheduled event
441
+ * @param {string} [reason] The reason for changing the name
442
+ * @returns {Promise<GuildScheduledEvent>}
443
+ * @example
444
+ * // Set name of a guild scheduled event
445
+ * guildScheduledEvent.setName('Birthday Party')
446
+ * .then(guildScheduledEvent => console.log(`Set the name to: ${guildScheduledEvent.name}`))
447
+ * .catch(console.error);
448
+ */
449
+ async setName(name, reason) {
450
+ return this.edit({ name, reason });
451
+ }
452
+
453
+ /**
454
+ * Sets a new time to schedule the event at.
455
+ *
456
+ * @param {DateResolvable} scheduledStartTime The time to schedule the event at
457
+ * @param {string} [reason] The reason for changing the scheduled start time
458
+ * @returns {Promise<GuildScheduledEvent>}
459
+ * @example
460
+ * // Set start time of a guild scheduled event
461
+ * guildScheduledEvent.setScheduledStartTime('2022-09-24T00:00:00+05:30')
462
+ * .then(guildScheduledEvent => console.log(`Set the start time to: ${guildScheduledEvent.scheduledStartTime}`))
463
+ * .catch(console.error);
464
+ */
465
+ async setScheduledStartTime(scheduledStartTime, reason) {
466
+ return this.edit({ scheduledStartTime, reason });
467
+ }
468
+
469
+ // TODO: scheduledEndTime gets reset on passing null but it hasn't been documented
470
+ /**
471
+ * Sets a new time to end the event at.
472
+ *
473
+ * @param {DateResolvable} scheduledEndTime The time to end the event at
474
+ * @param {string} [reason] The reason for changing the scheduled end time
475
+ * @returns {Promise<GuildScheduledEvent>}
476
+ * @example
477
+ * // Set end time of a guild scheduled event
478
+ * guildScheduledEvent.setScheduledEndTime('2022-09-25T00:00:00+05:30')
479
+ * .then(guildScheduledEvent => console.log(`Set the end time to: ${guildScheduledEvent.scheduledEndTime}`))
480
+ * .catch(console.error);
481
+ */
482
+ async setScheduledEndTime(scheduledEndTime, reason) {
483
+ return this.edit({ scheduledEndTime, reason });
484
+ }
485
+
486
+ /**
487
+ * Sets the new description of the guild scheduled event.
488
+ *
489
+ * @param {string} description The description of the guild scheduled event
490
+ * @param {string} [reason] The reason for changing the description
491
+ * @returns {Promise<GuildScheduledEvent>}
492
+ * @example
493
+ * // Set description of a guild scheduled event
494
+ * guildScheduledEvent.setDescription('A virtual birthday party')
495
+ * .then(guildScheduledEvent => console.log(`Set the description to: ${guildScheduledEvent.description}`))
496
+ * .catch(console.error);
497
+ */
498
+ async setDescription(description, reason) {
499
+ return this.edit({ description, reason });
500
+ }
501
+
502
+ /**
503
+ * Sets the new status of the guild scheduled event.
504
+ * <info>If you're working with TypeScript, use this method in conjunction with status type-guards
505
+ * like {@link GuildScheduledEvent#isScheduled} to get only valid status as suggestion</info>
506
+ *
507
+ * @param {GuildScheduledEventStatus} status The status of the guild scheduled event
508
+ * @param {string} [reason] The reason for changing the status
509
+ * @returns {Promise<GuildScheduledEvent>}
510
+ * @example
511
+ * // Set status of a guild scheduled event
512
+ * guildScheduledEvent.setStatus(GuildScheduledEventStatus.Active)
513
+ * .then(guildScheduledEvent => console.log(`Set the status to: ${guildScheduledEvent.status}`))
514
+ * .catch(console.error);
515
+ */
516
+ async setStatus(status, reason) {
517
+ return this.edit({ status, reason });
518
+ }
519
+
520
+ /**
521
+ * Sets the new location of the guild scheduled event.
522
+ *
523
+ * @param {string} location The location of the guild scheduled event
524
+ * @param {string} [reason] The reason for changing the location
525
+ * @returns {Promise<GuildScheduledEvent>}
526
+ * @example
527
+ * // Set location of a guild scheduled event
528
+ * guildScheduledEvent.setLocation('Earth')
529
+ * .then(guildScheduledEvent => console.log(`Set the location to: ${guildScheduledEvent.entityMetadata.location}`))
530
+ * .catch(console.error);
531
+ */
532
+ async setLocation(location, reason) {
533
+ return this.edit({ entityMetadata: { location }, reason });
534
+ }
535
+
536
+ /**
537
+ * Fetches subscribers of this guild scheduled event.
538
+ *
539
+ * @param {FetchGuildScheduledEventSubscribersOptions} [options] Options for fetching the subscribers
540
+ * @returns {Promise<Collection<Snowflake, GuildScheduledEventUser>>}
541
+ */
542
+ async fetchSubscribers(options) {
543
+ return this.guild.scheduledEvents.fetchSubscribers(this.id, options);
544
+ }
545
+
546
+ /**
547
+ * When concatenated with a string, this automatically concatenates the event's URL instead of the object.
548
+ *
549
+ * @returns {string}
550
+ * @example
551
+ * // Logs: Event: https://discord.com/events/412345678901234567/499876543211234567
552
+ * console.log(`Event: ${guildScheduledEvent}`);
553
+ */
554
+ toString() {
555
+ return this.url;
556
+ }
557
+
558
+ /**
559
+ * Indicates whether this guild scheduled event has an {@link GuildScheduledEventStatus.Active} status.
560
+ *
561
+ * @returns {boolean}
562
+ */
563
+ isActive() {
564
+ return this.status === GuildScheduledEventStatus.Active;
565
+ }
566
+
567
+ /**
568
+ * Indicates whether this guild scheduled event has a {@link GuildScheduledEventStatus.Canceled} status.
569
+ *
570
+ * @returns {boolean}
571
+ */
572
+ isCanceled() {
573
+ return this.status === GuildScheduledEventStatus.Canceled;
574
+ }
575
+
576
+ /**
577
+ * Indicates whether this guild scheduled event has a {@link GuildScheduledEventStatus.Completed} status.
578
+ *
579
+ * @returns {boolean}
580
+ */
581
+ isCompleted() {
582
+ return this.status === GuildScheduledEventStatus.Completed;
583
+ }
584
+
585
+ /**
586
+ * Indicates whether this guild scheduled event has a {@link GuildScheduledEventStatus.Scheduled} status.
587
+ *
588
+ * @returns {boolean}
589
+ */
590
+ isScheduled() {
591
+ return this.status === GuildScheduledEventStatus.Scheduled;
592
+ }
593
+ }