@velliajs/discord 1.0.0

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 (317) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +133 -0
  3. package/package.json +82 -0
  4. package/src/client/BaseClient.js +83 -0
  5. package/src/client/Client.js +591 -0
  6. package/src/client/WebhookClient.js +103 -0
  7. package/src/client/actions/Action.js +119 -0
  8. package/src/client/actions/ActionsManager.js +79 -0
  9. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  10. package/src/client/actions/AutoModerationActionExecution.js +26 -0
  11. package/src/client/actions/AutoModerationRuleCreate.js +27 -0
  12. package/src/client/actions/AutoModerationRuleDelete.js +31 -0
  13. package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
  14. package/src/client/actions/ChannelCreate.js +23 -0
  15. package/src/client/actions/ChannelDelete.js +23 -0
  16. package/src/client/actions/ChannelUpdate.js +33 -0
  17. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  18. package/src/client/actions/GuildBanAdd.js +20 -0
  19. package/src/client/actions/GuildBanRemove.js +25 -0
  20. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  21. package/src/client/actions/GuildDelete.js +44 -0
  22. package/src/client/actions/GuildEmojiCreate.js +20 -0
  23. package/src/client/actions/GuildEmojiDelete.js +19 -0
  24. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  25. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  26. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  27. package/src/client/actions/GuildMemberRemove.js +31 -0
  28. package/src/client/actions/GuildMemberUpdate.js +44 -0
  29. package/src/client/actions/GuildRoleCreate.js +25 -0
  30. package/src/client/actions/GuildRoleDelete.js +29 -0
  31. package/src/client/actions/GuildRoleUpdate.js +39 -0
  32. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  33. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  34. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  35. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  36. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  37. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  38. package/src/client/actions/GuildStickerCreate.js +20 -0
  39. package/src/client/actions/GuildStickerDelete.js +19 -0
  40. package/src/client/actions/GuildStickerUpdate.js +20 -0
  41. package/src/client/actions/GuildStickersUpdate.js +34 -0
  42. package/src/client/actions/GuildUpdate.js +33 -0
  43. package/src/client/actions/InteractionCreate.js +101 -0
  44. package/src/client/actions/InviteCreate.js +28 -0
  45. package/src/client/actions/InviteDelete.js +30 -0
  46. package/src/client/actions/MessageCreate.js +37 -0
  47. package/src/client/actions/MessageDelete.js +32 -0
  48. package/src/client/actions/MessageDeleteBulk.js +47 -0
  49. package/src/client/actions/MessageReactionAdd.js +55 -0
  50. package/src/client/actions/MessageReactionRemove.js +45 -0
  51. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  52. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  53. package/src/client/actions/MessageUpdate.js +26 -0
  54. package/src/client/actions/PresenceUpdate.js +42 -0
  55. package/src/client/actions/StageInstanceCreate.js +28 -0
  56. package/src/client/actions/StageInstanceDelete.js +31 -0
  57. package/src/client/actions/StageInstanceUpdate.js +30 -0
  58. package/src/client/actions/ThreadCreate.js +24 -0
  59. package/src/client/actions/ThreadDelete.js +26 -0
  60. package/src/client/actions/ThreadListSync.js +60 -0
  61. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  62. package/src/client/actions/ThreadMembersUpdate.js +47 -0
  63. package/src/client/actions/TypingStart.js +29 -0
  64. package/src/client/actions/UserUpdate.js +36 -0
  65. package/src/client/actions/VoiceStateUpdate.js +43 -0
  66. package/src/client/actions/WebhooksUpdate.js +20 -0
  67. package/src/client/voice/ClientVoiceManager.js +44 -0
  68. package/src/client/websocket/WebSocketManager.js +393 -0
  69. package/src/client/websocket/WebSocketShard.js +231 -0
  70. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  71. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  72. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  73. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  74. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  75. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  76. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  77. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  78. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  79. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  80. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  81. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  82. package/src/client/websocket/handlers/GUILD_CREATE.js +26 -0
  83. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  84. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  85. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  86. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  87. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  88. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  89. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  90. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  91. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  92. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  93. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  94. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  95. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  97. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  98. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  99. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  100. package/src/client/websocket/handlers/INTERACTION_CREATE.js +5 -0
  101. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  102. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  103. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  104. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  105. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  106. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  107. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  108. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  109. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  110. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  111. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/READY.js +27 -0
  113. package/src/client/websocket/handlers/RESUMED.js +14 -0
  114. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  115. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  116. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  118. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  119. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  120. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  121. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  122. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  123. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  124. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  125. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  126. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  128. package/src/client/websocket/handlers/index.js +64 -0
  129. package/src/errors/DJSError.js +48 -0
  130. package/src/errors/ErrorCodes.js +319 -0
  131. package/src/errors/Messages.js +170 -0
  132. package/src/errors/index.js +5 -0
  133. package/src/index.js +213 -0
  134. package/src/managers/ApplicationCommandManager.js +263 -0
  135. package/src/managers/ApplicationCommandPermissionsManager.js +434 -0
  136. package/src/managers/AutoModerationRuleManager.js +288 -0
  137. package/src/managers/BaseGuildEmojiManager.js +80 -0
  138. package/src/managers/BaseManager.js +19 -0
  139. package/src/managers/CachedManager.js +57 -0
  140. package/src/managers/CategoryChannelChildManager.js +77 -0
  141. package/src/managers/ChannelManager.js +128 -0
  142. package/src/managers/DataManager.js +61 -0
  143. package/src/managers/GuildApplicationCommandManager.js +28 -0
  144. package/src/managers/GuildBanManager.js +204 -0
  145. package/src/managers/GuildChannelManager.js +494 -0
  146. package/src/managers/GuildEmojiManager.js +174 -0
  147. package/src/managers/GuildEmojiRoleManager.js +118 -0
  148. package/src/managers/GuildForumThreadManager.js +83 -0
  149. package/src/managers/GuildInviteManager.js +213 -0
  150. package/src/managers/GuildManager.js +283 -0
  151. package/src/managers/GuildMemberManager.js +540 -0
  152. package/src/managers/GuildMemberRoleManager.js +204 -0
  153. package/src/managers/GuildScheduledEventManager.js +297 -0
  154. package/src/managers/GuildStickerManager.js +182 -0
  155. package/src/managers/GuildTextThreadManager.js +91 -0
  156. package/src/managers/MessageManager.js +259 -0
  157. package/src/managers/PermissionOverwriteManager.js +168 -0
  158. package/src/managers/PresenceManager.js +58 -0
  159. package/src/managers/ReactionManager.js +68 -0
  160. package/src/managers/ReactionUserManager.js +77 -0
  161. package/src/managers/RoleManager.js +360 -0
  162. package/src/managers/StageInstanceManager.js +154 -0
  163. package/src/managers/ThreadManager.js +204 -0
  164. package/src/managers/ThreadMemberManager.js +182 -0
  165. package/src/managers/UserManager.js +139 -0
  166. package/src/managers/VoiceStateManager.js +37 -0
  167. package/src/sharding/Shard.js +457 -0
  168. package/src/sharding/ShardClientUtil.js +285 -0
  169. package/src/sharding/ShardingManager.js +326 -0
  170. package/src/structures/ActionRow.js +46 -0
  171. package/src/structures/ActionRowBuilder.js +35 -0
  172. package/src/structures/AnonymousGuild.js +97 -0
  173. package/src/structures/ApplicationCommand.js +606 -0
  174. package/src/structures/ApplicationRoleConnectionMetadata.js +46 -0
  175. package/src/structures/Attachment.js +140 -0
  176. package/src/structures/AttachmentBuilder.js +116 -0
  177. package/src/structures/AutoModerationActionExecution.js +116 -0
  178. package/src/structures/AutoModerationRule.js +284 -0
  179. package/src/structures/AutocompleteInteraction.js +97 -0
  180. package/src/structures/Base.js +43 -0
  181. package/src/structures/BaseChannel.js +160 -0
  182. package/src/structures/BaseGuild.js +119 -0
  183. package/src/structures/BaseGuildEmoji.js +56 -0
  184. package/src/structures/BaseGuildTextChannel.js +186 -0
  185. package/src/structures/BaseGuildVoiceChannel.js +234 -0
  186. package/src/structures/BaseInteraction.js +344 -0
  187. package/src/structures/BaseSelectMenuComponent.js +56 -0
  188. package/src/structures/ButtonBuilder.js +44 -0
  189. package/src/structures/ButtonComponent.js +65 -0
  190. package/src/structures/ButtonInteraction.js +11 -0
  191. package/src/structures/CategoryChannel.js +45 -0
  192. package/src/structures/ChannelSelectMenuBuilder.js +31 -0
  193. package/src/structures/ChannelSelectMenuComponent.js +20 -0
  194. package/src/structures/ChannelSelectMenuInteraction.js +33 -0
  195. package/src/structures/ChatInputCommandInteraction.js +41 -0
  196. package/src/structures/ClientApplication.js +193 -0
  197. package/src/structures/ClientPresence.js +82 -0
  198. package/src/structures/ClientUser.js +185 -0
  199. package/src/structures/CommandInteraction.js +224 -0
  200. package/src/structures/CommandInteractionOptionResolver.js +308 -0
  201. package/src/structures/Component.js +47 -0
  202. package/src/structures/ContextMenuCommandInteraction.js +64 -0
  203. package/src/structures/DMChannel.js +129 -0
  204. package/src/structures/DirectoryChannel.js +36 -0
  205. package/src/structures/Embed.js +220 -0
  206. package/src/structures/EmbedBuilder.js +41 -0
  207. package/src/structures/Emoji.js +108 -0
  208. package/src/structures/ForumChannel.js +264 -0
  209. package/src/structures/Guild.js +1361 -0
  210. package/src/structures/GuildAuditLogs.js +91 -0
  211. package/src/structures/GuildAuditLogsEntry.js +527 -0
  212. package/src/structures/GuildBan.js +59 -0
  213. package/src/structures/GuildChannel.js +457 -0
  214. package/src/structures/GuildEmoji.js +148 -0
  215. package/src/structures/GuildMember.js +518 -0
  216. package/src/structures/GuildPreview.js +193 -0
  217. package/src/structures/GuildPreviewEmoji.js +27 -0
  218. package/src/structures/GuildScheduledEvent.js +439 -0
  219. package/src/structures/GuildTemplate.js +241 -0
  220. package/src/structures/Integration.js +220 -0
  221. package/src/structures/IntegrationApplication.js +85 -0
  222. package/src/structures/InteractionCollector.js +263 -0
  223. package/src/structures/InteractionResponse.js +102 -0
  224. package/src/structures/InteractionWebhook.js +59 -0
  225. package/src/structures/Invite.js +322 -0
  226. package/src/structures/InviteGuild.js +22 -0
  227. package/src/structures/InviteStageInstance.js +87 -0
  228. package/src/structures/MentionableSelectMenuBuilder.js +32 -0
  229. package/src/structures/MentionableSelectMenuComponent.js +11 -0
  230. package/src/structures/MentionableSelectMenuInteraction.js +71 -0
  231. package/src/structures/Message.js +997 -0
  232. package/src/structures/MessageCollector.js +146 -0
  233. package/src/structures/MessageComponentInteraction.js +107 -0
  234. package/src/structures/MessageContextMenuCommandInteraction.js +20 -0
  235. package/src/structures/MessageMentions.js +297 -0
  236. package/src/structures/MessagePayload.js +299 -0
  237. package/src/structures/MessageReaction.js +142 -0
  238. package/src/structures/ModalBuilder.js +34 -0
  239. package/src/structures/ModalSubmitFields.js +55 -0
  240. package/src/structures/ModalSubmitInteraction.js +121 -0
  241. package/src/structures/NewsChannel.js +32 -0
  242. package/src/structures/OAuth2Guild.js +28 -0
  243. package/src/structures/PartialGroupDMChannel.js +60 -0
  244. package/src/structures/PermissionOverwrites.js +196 -0
  245. package/src/structures/Presence.js +372 -0
  246. package/src/structures/ReactionCollector.js +229 -0
  247. package/src/structures/ReactionEmoji.js +31 -0
  248. package/src/structures/Role.js +458 -0
  249. package/src/structures/RoleSelectMenuBuilder.js +31 -0
  250. package/src/structures/RoleSelectMenuComponent.js +11 -0
  251. package/src/structures/RoleSelectMenuInteraction.js +33 -0
  252. package/src/structures/SelectMenuBuilder.js +26 -0
  253. package/src/structures/SelectMenuComponent.js +26 -0
  254. package/src/structures/SelectMenuInteraction.js +26 -0
  255. package/src/structures/SelectMenuOptionBuilder.js +26 -0
  256. package/src/structures/StageChannel.js +112 -0
  257. package/src/structures/StageInstance.js +167 -0
  258. package/src/structures/Sticker.js +272 -0
  259. package/src/structures/StickerPack.js +95 -0
  260. package/src/structures/StringSelectMenuBuilder.js +79 -0
  261. package/src/structures/StringSelectMenuComponent.js +20 -0
  262. package/src/structures/StringSelectMenuInteraction.js +21 -0
  263. package/src/structures/StringSelectMenuOptionBuilder.js +49 -0
  264. package/src/structures/Team.js +117 -0
  265. package/src/structures/TeamMember.js +70 -0
  266. package/src/structures/TextChannel.js +33 -0
  267. package/src/structures/TextInputBuilder.js +31 -0
  268. package/src/structures/TextInputComponent.js +29 -0
  269. package/src/structures/ThreadChannel.js +606 -0
  270. package/src/structures/ThreadMember.js +113 -0
  271. package/src/structures/Typing.js +74 -0
  272. package/src/structures/User.js +331 -0
  273. package/src/structures/UserContextMenuCommandInteraction.js +29 -0
  274. package/src/structures/UserSelectMenuBuilder.js +31 -0
  275. package/src/structures/UserSelectMenuComponent.js +11 -0
  276. package/src/structures/UserSelectMenuInteraction.js +51 -0
  277. package/src/structures/VoiceChannel.js +96 -0
  278. package/src/structures/VoiceRegion.js +46 -0
  279. package/src/structures/VoiceState.js +303 -0
  280. package/src/structures/Webhook.js +481 -0
  281. package/src/structures/WelcomeChannel.js +60 -0
  282. package/src/structures/WelcomeScreen.js +49 -0
  283. package/src/structures/Widget.js +88 -0
  284. package/src/structures/WidgetMember.js +99 -0
  285. package/src/structures/interfaces/Application.js +108 -0
  286. package/src/structures/interfaces/Collector.js +335 -0
  287. package/src/structures/interfaces/InteractionResponses.js +320 -0
  288. package/src/structures/interfaces/TextBasedChannel.js +413 -0
  289. package/src/util/APITypes.js +456 -0
  290. package/src/util/ActivityFlagsBitField.js +26 -0
  291. package/src/util/ApplicationFlagsBitField.js +26 -0
  292. package/src/util/BitField.js +176 -0
  293. package/src/util/ChannelFlagsBitField.js +41 -0
  294. package/src/util/Channels.js +150 -0
  295. package/src/util/Colors.js +73 -0
  296. package/src/util/Components.js +152 -0
  297. package/src/util/Constants.js +230 -0
  298. package/src/util/DataResolver.js +140 -0
  299. package/src/util/Enums.js +13 -0
  300. package/src/util/Events.js +160 -0
  301. package/src/util/Formatters.js +413 -0
  302. package/src/util/GuildMemberFlagsBitField.js +41 -0
  303. package/src/util/IntentsBitField.js +34 -0
  304. package/src/util/LimitedCollection.js +68 -0
  305. package/src/util/MessageFlagsBitField.js +32 -0
  306. package/src/util/Options.js +216 -0
  307. package/src/util/Partials.js +44 -0
  308. package/src/util/PermissionsBitField.js +104 -0
  309. package/src/util/ShardEvents.js +27 -0
  310. package/src/util/Status.js +33 -0
  311. package/src/util/Sweepers.js +467 -0
  312. package/src/util/SystemChannelFlagsBitField.js +43 -0
  313. package/src/util/ThreadMemberFlagsBitField.js +31 -0
  314. package/src/util/Transformers.js +36 -0
  315. package/src/util/UserFlagsBitField.js +32 -0
  316. package/src/util/Util.js +394 -0
  317. package/src/util/WebSocketShardEvents.js +25 -0
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ const Component = require('./Component');
4
+
5
+ /**
6
+ * Represents a button component
7
+ * @extends {Component}
8
+ */
9
+ class ButtonComponent extends Component {
10
+ /**
11
+ * The style of this button
12
+ * @type {ButtonStyle}
13
+ * @readonly
14
+ */
15
+ get style() {
16
+ return this.data.style;
17
+ }
18
+
19
+ /**
20
+ * The label of this button
21
+ * @type {?string}
22
+ * @readonly
23
+ */
24
+ get label() {
25
+ return this.data.label ?? null;
26
+ }
27
+
28
+ /**
29
+ * The emoji used in this button
30
+ * @type {?APIMessageComponentEmoji}
31
+ * @readonly
32
+ */
33
+ get emoji() {
34
+ return this.data.emoji ?? null;
35
+ }
36
+
37
+ /**
38
+ * Whether this button is disabled
39
+ * @type {boolean}
40
+ * @readonly
41
+ */
42
+ get disabled() {
43
+ return this.data.disabled ?? false;
44
+ }
45
+
46
+ /**
47
+ * The custom id of this button (only defined on non-link buttons)
48
+ * @type {?string}
49
+ * @readonly
50
+ */
51
+ get customId() {
52
+ return this.data.custom_id ?? null;
53
+ }
54
+
55
+ /**
56
+ * The URL of this button (only defined on link buttons)
57
+ * @type {?string}
58
+ * @readonly
59
+ */
60
+ get url() {
61
+ return this.data.url ?? null;
62
+ }
63
+ }
64
+
65
+ module.exports = ButtonComponent;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ const MessageComponentInteraction = require('./MessageComponentInteraction');
4
+
5
+ /**
6
+ * Represents a button interaction.
7
+ * @extends {MessageComponentInteraction}
8
+ */
9
+ class ButtonInteraction extends MessageComponentInteraction {}
10
+
11
+ module.exports = ButtonInteraction;
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ const GuildChannel = require('./GuildChannel');
4
+ const CategoryChannelChildManager = require('../managers/CategoryChannelChildManager');
5
+
6
+ /**
7
+ * Represents a guild category channel on Discord.
8
+ * @extends {GuildChannel}
9
+ */
10
+ class CategoryChannel extends GuildChannel {
11
+ /**
12
+ * The id of the parent of this channel.
13
+ * @name CategoryChannel#parentId
14
+ * @type {null}
15
+ */
16
+
17
+ /**
18
+ * The parent of this channel.
19
+ * @name CategoryChannel#parent
20
+ * @type {null}
21
+ * @readonly
22
+ */
23
+
24
+ /**
25
+ * Sets the category parent of this channel.
26
+ * <warn>It is not possible to set the parent of a CategoryChannel.</warn>
27
+ * @method setParent
28
+ * @memberof CategoryChannel
29
+ * @instance
30
+ * @param {?CategoryChannelResolvable} channel The channel to set as parent
31
+ * @param {SetParentOptions} [options={}] The options for setting the parent
32
+ * @returns {Promise<GuildChannel>}
33
+ */
34
+
35
+ /**
36
+ * A manager of the channels belonging to this category
37
+ * @type {CategoryChannelChildManager}
38
+ * @readonly
39
+ */
40
+ get children() {
41
+ return new CategoryChannelChildManager(this);
42
+ }
43
+ }
44
+
45
+ module.exports = CategoryChannel;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ const { ChannelSelectMenuBuilder: BuildersChannelSelectMenu } = require('@discordjs/builders');
4
+ const { isJSONEncodable } = require('@discordjs/util');
5
+ const { toSnakeCase } = require('../util/Transformers');
6
+
7
+ /**
8
+ * Class used to build select menu components to be sent through the API
9
+ * @extends {BuildersChannelSelectMenu}
10
+ */
11
+ class ChannelSelectMenuBuilder extends BuildersChannelSelectMenu {
12
+ constructor(data = {}) {
13
+ super(toSnakeCase(data));
14
+ }
15
+
16
+ /**
17
+ * Creates a new select menu builder from JSON data
18
+ * @param {ChannelSelectMenuBuilder|ChannelSelectMenuComponent|APIChannelSelectComponent} other The other data
19
+ * @returns {ChannelSelectMenuBuilder}
20
+ */
21
+ static from(other) {
22
+ return new this(isJSONEncodable(other) ? other.toJSON() : other);
23
+ }
24
+ }
25
+
26
+ module.exports = ChannelSelectMenuBuilder;
27
+
28
+ /**
29
+ * @external BuildersChannelSelectMenu
30
+ * @see {@link https://discord.js.org/docs/packages/builders/stable/ChannelSelectMenuBuilder:Class}
31
+ */
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const BaseSelectMenuComponent = require('./BaseSelectMenuComponent');
4
+
5
+ /**
6
+ * Represents a channel select menu component
7
+ * @extends {BaseSelectMenuComponent}
8
+ */
9
+ class ChannelSelectMenuComponent extends BaseSelectMenuComponent {
10
+ /**
11
+ * The options in this select menu
12
+ * @type {?(ChannelType[])}
13
+ * @readonly
14
+ */
15
+ get channelTypes() {
16
+ return this.data.channel_types ?? null;
17
+ }
18
+ }
19
+
20
+ module.exports = ChannelSelectMenuComponent;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const MessageComponentInteraction = require('./MessageComponentInteraction');
5
+
6
+ /**
7
+ * Represents a {@link ComponentType.ChannelSelect} select menu interaction.
8
+ * @extends {MessageComponentInteraction}
9
+ */
10
+ class ChannelSelectMenuInteraction extends MessageComponentInteraction {
11
+ constructor(client, data) {
12
+ super(client, data);
13
+ const { resolved, values } = data.data;
14
+
15
+ /**
16
+ * An array of the selected channel ids
17
+ * @type {Snowflake[]}
18
+ */
19
+ this.values = values ?? [];
20
+
21
+ /**
22
+ * Collection of the selected channels
23
+ * @type {Collection<Snowflake, Channel|APIChannel>}
24
+ */
25
+ this.channels = new Collection();
26
+
27
+ for (const channel of Object.values(resolved?.channels ?? {})) {
28
+ this.channels.set(channel.id, this.client.channels._add(channel, this.guild) ?? channel);
29
+ }
30
+ }
31
+ }
32
+
33
+ module.exports = ChannelSelectMenuInteraction;
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ const CommandInteraction = require('./CommandInteraction');
4
+ const CommandInteractionOptionResolver = require('./CommandInteractionOptionResolver');
5
+
6
+ /**
7
+ * Represents a command interaction.
8
+ * @extends {CommandInteraction}
9
+ */
10
+ class ChatInputCommandInteraction extends CommandInteraction {
11
+ constructor(client, data) {
12
+ super(client, data);
13
+
14
+ /**
15
+ * The options passed to the command.
16
+ * @type {CommandInteractionOptionResolver}
17
+ */
18
+ this.options = new CommandInteractionOptionResolver(
19
+ this.client,
20
+ data.data.options?.map(option => this.transformOption(option, data.data.resolved)) ?? [],
21
+ this.transformResolved(data.data.resolved ?? {}),
22
+ );
23
+ }
24
+
25
+ /**
26
+ * Returns a string representation of the command interaction.
27
+ * This can then be copied by a user and executed again in a new command while keeping the option order.
28
+ * @returns {string}
29
+ */
30
+ toString() {
31
+ const properties = [
32
+ this.commandName,
33
+ this.options._group,
34
+ this.options._subcommand,
35
+ ...this.options._hoistedOptions.map(o => `${o.name}:${o.value}`),
36
+ ];
37
+ return `/${properties.filter(Boolean).join(' ')}`;
38
+ }
39
+ }
40
+
41
+ module.exports = ChatInputCommandInteraction;
@@ -0,0 +1,193 @@
1
+ 'use strict';
2
+
3
+ const { Routes } = require('discord-api-types/v10');
4
+ const { ApplicationRoleConnectionMetadata } = require('./ApplicationRoleConnectionMetadata');
5
+ const Team = require('./Team');
6
+ const Application = require('./interfaces/Application');
7
+ const ApplicationCommandManager = require('../managers/ApplicationCommandManager');
8
+ const ApplicationFlagsBitField = require('../util/ApplicationFlagsBitField');
9
+ const PermissionsBitField = require('../util/PermissionsBitField');
10
+
11
+ /**
12
+ * @typedef {Object} ClientApplicationInstallParams
13
+ * @property {OAuth2Scopes[]} scopes The scopes to add the application to the server with
14
+ * @property {Readonly<PermissionsBitField>} permissions The permissions this bot will request upon joining
15
+ */
16
+
17
+ /**
18
+ * Represents a Client OAuth2 Application.
19
+ * @extends {Application}
20
+ */
21
+ class ClientApplication extends Application {
22
+ constructor(client, data) {
23
+ super(client, data);
24
+
25
+ /**
26
+ * The application command manager for this application
27
+ * @type {ApplicationCommandManager}
28
+ */
29
+ this.commands = new ApplicationCommandManager(this.client);
30
+ }
31
+
32
+ _patch(data) {
33
+ super._patch(data);
34
+
35
+ /**
36
+ * The tags this application has (max of 5)
37
+ * @type {string[]}
38
+ */
39
+ this.tags = data.tags ?? [];
40
+
41
+ if ('install_params' in data) {
42
+ /**
43
+ * Settings for this application's default in-app authorization
44
+ * @type {?ClientApplicationInstallParams}
45
+ */
46
+ this.installParams = {
47
+ scopes: data.install_params.scopes,
48
+ permissions: new PermissionsBitField(data.install_params.permissions).freeze(),
49
+ };
50
+ } else {
51
+ this.installParams ??= null;
52
+ }
53
+
54
+ if ('custom_install_url' in data) {
55
+ /**
56
+ * This application's custom installation URL
57
+ * @type {?string}
58
+ */
59
+ this.customInstallURL = data.custom_install_url;
60
+ } else {
61
+ this.customInstallURL = null;
62
+ }
63
+
64
+ if ('flags' in data) {
65
+ /**
66
+ * The flags this application has
67
+ * @type {ApplicationFlagsBitField}
68
+ */
69
+ this.flags = new ApplicationFlagsBitField(data.flags).freeze();
70
+ }
71
+
72
+ if ('cover_image' in data) {
73
+ /**
74
+ * The hash of the application's cover image
75
+ * @type {?string}
76
+ */
77
+ this.cover = data.cover_image;
78
+ } else {
79
+ this.cover ??= null;
80
+ }
81
+
82
+ if ('rpc_origins' in data) {
83
+ /**
84
+ * The application's RPC origins, if enabled
85
+ * @type {string[]}
86
+ */
87
+ this.rpcOrigins = data.rpc_origins;
88
+ } else {
89
+ this.rpcOrigins ??= [];
90
+ }
91
+
92
+ if ('bot_require_code_grant' in data) {
93
+ /**
94
+ * If this application's bot requires a code grant when using the OAuth2 flow
95
+ * @type {?boolean}
96
+ */
97
+ this.botRequireCodeGrant = data.bot_require_code_grant;
98
+ } else {
99
+ this.botRequireCodeGrant ??= null;
100
+ }
101
+
102
+ if ('bot_public' in data) {
103
+ /**
104
+ * If this application's bot is public
105
+ * @type {?boolean}
106
+ */
107
+ this.botPublic = data.bot_public;
108
+ } else {
109
+ this.botPublic ??= null;
110
+ }
111
+
112
+ if ('role_connections_verification_url' in data) {
113
+ /**
114
+ * This application's role connection verification entry point URL
115
+ * @type {?string}
116
+ */
117
+ this.roleConnectionsVerificationURL = data.role_connections_verification_url;
118
+ } else {
119
+ this.roleConnectionsVerificationURL ??= null;
120
+ }
121
+
122
+ /**
123
+ * The owner of this OAuth application
124
+ * @type {?(User|Team)}
125
+ */
126
+ this.owner = data.team
127
+ ? new Team(this.client, data.team)
128
+ : data.owner
129
+ ? this.client.users._add(data.owner)
130
+ : this.owner ?? null;
131
+ }
132
+
133
+ /**
134
+ * Whether this application is partial
135
+ * @type {boolean}
136
+ * @readonly
137
+ */
138
+ get partial() {
139
+ return !this.name;
140
+ }
141
+
142
+ /**
143
+ * Obtains this application from Discord.
144
+ * @returns {Promise<ClientApplication>}
145
+ */
146
+ async fetch() {
147
+ const app = await this.client.rest.get(Routes.oauth2CurrentApplication());
148
+ this._patch(app);
149
+ return this;
150
+ }
151
+
152
+ /**
153
+ * Gets this application's role connection metadata records
154
+ * @returns {Promise<ApplicationRoleConnectionMetadata[]>}
155
+ */
156
+ async fetchRoleConnectionMetadataRecords() {
157
+ const metadata = await this.client.rest.get(Routes.applicationRoleConnectionMetadata(this.client.user.id));
158
+ return metadata.map(data => new ApplicationRoleConnectionMetadata(data));
159
+ }
160
+
161
+ /**
162
+ * Data for creating or editing an application role connection metadata.
163
+ * @typedef {Object} ApplicationRoleConnectionMetadataEditOptions
164
+ * @property {string} name The name of the metadata field
165
+ * @property {?Object<Locale, string>} [nameLocalizations] The name localizations for the metadata field
166
+ * @property {string} description The description of the metadata field
167
+ * @property {?Object<Locale, string>} [descriptionLocalizations] The description localizations for the metadata field
168
+ * @property {string} key The dictionary key of the metadata field
169
+ * @property {ApplicationRoleConnectionMetadataType} type The type of the metadata field
170
+ */
171
+
172
+ /**
173
+ * Updates this application's role connection metadata records
174
+ * @param {ApplicationRoleConnectionMetadataEditOptions[]} records The new role connection metadata records
175
+ * @returns {Promise<ApplicationRoleConnectionMetadata[]>}
176
+ */
177
+ async editRoleConnectionMetadataRecords(records) {
178
+ const newRecords = await this.client.rest.put(Routes.applicationRoleConnectionMetadata(this.client.user.id), {
179
+ body: records.map(record => ({
180
+ type: record.type,
181
+ key: record.key,
182
+ name: record.name,
183
+ name_localizations: record.nameLocalizations,
184
+ description: record.description,
185
+ description_localizations: record.descriptionLocalizations,
186
+ })),
187
+ });
188
+
189
+ return newRecords.map(data => new ApplicationRoleConnectionMetadata(data));
190
+ }
191
+ }
192
+
193
+ module.exports = ClientApplication;
@@ -0,0 +1,82 @@
1
+ 'use strict';
2
+
3
+ const { GatewayOpcodes } = require('discord-api-types/v10');
4
+ const { Presence } = require('./Presence');
5
+ const { DiscordjsTypeError, ErrorCodes } = require('../errors');
6
+
7
+ /**
8
+ * Represents the client's presence.
9
+ * @extends {Presence}
10
+ */
11
+ class ClientPresence extends Presence {
12
+ constructor(client, data = {}) {
13
+ super(client, Object.assign(data, { status: data.status ?? 'online', user: { id: null } }));
14
+ }
15
+
16
+ /**
17
+ * Sets the client's presence
18
+ * @param {PresenceData} presence The data to set the presence to
19
+ * @returns {ClientPresence}
20
+ */
21
+ set(presence) {
22
+ const packet = this._parse(presence);
23
+ this._patch(packet);
24
+ if (presence.shardId === undefined) {
25
+ this.client.ws.broadcast({ op: GatewayOpcodes.PresenceUpdate, d: packet });
26
+ } else if (Array.isArray(presence.shardId)) {
27
+ for (const shardId of presence.shardId) {
28
+ this.client.ws.shards.get(shardId).send({ op: GatewayOpcodes.PresenceUpdate, d: packet });
29
+ }
30
+ } else {
31
+ this.client.ws.shards.get(presence.shardId).send({ op: GatewayOpcodes.PresenceUpdate, d: packet });
32
+ }
33
+ return this;
34
+ }
35
+
36
+ /**
37
+ * Parses presence data into a packet ready to be sent to Discord
38
+ * @param {PresenceData} presence The data to parse
39
+ * @returns {APIPresence}
40
+ * @private
41
+ */
42
+ _parse({ status, since, afk, activities }) {
43
+ const data = {
44
+ activities: [],
45
+ afk: typeof afk === 'boolean' ? afk : false,
46
+ since: typeof since === 'number' && !Number.isNaN(since) ? since : null,
47
+ status: status ?? this.status,
48
+ };
49
+ if (activities?.length) {
50
+ for (const [i, activity] of activities.entries()) {
51
+ if (typeof activity.name !== 'string') {
52
+ throw new DiscordjsTypeError(ErrorCodes.InvalidType, `activities[${i}].name`, 'string');
53
+ }
54
+ activity.type ??= 0;
55
+
56
+ data.activities.push({
57
+ type: activity.type,
58
+ name: activity.name,
59
+ url: activity.url,
60
+ });
61
+ }
62
+ } else if (!activities && (status || afk || since) && this.activities.length) {
63
+ data.activities.push(
64
+ ...this.activities.map(a => ({
65
+ name: a.name,
66
+ type: a.type,
67
+ url: a.url ?? undefined,
68
+ })),
69
+ );
70
+ }
71
+
72
+ return data;
73
+ }
74
+ }
75
+
76
+ module.exports = ClientPresence;
77
+
78
+ /* eslint-disable max-len */
79
+ /**
80
+ * @external APIPresence
81
+ * @see {@link https://discord.com/developers/docs/rich-presence/how-to#updating-presence-update-presence-payload-fields}
82
+ */