@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,140 @@
1
+ 'use strict';
2
+
3
+ const { Buffer } = require('node:buffer');
4
+ const fs = require('node:fs/promises');
5
+ const path = require('node:path');
6
+ const { fetch } = require('undici');
7
+ const { DiscordjsError, DiscordjsTypeError, ErrorCodes } = require('../errors');
8
+ const Invite = require('../structures/Invite');
9
+
10
+ /**
11
+ * The DataResolver identifies different objects and tries to resolve a specific piece of information from them.
12
+ * @private
13
+ */
14
+ class DataResolver extends null {
15
+ /**
16
+ * Data that can be resolved to give an invite code. This can be:
17
+ * * An invite code
18
+ * * An invite URL
19
+ * @typedef {string} InviteResolvable
20
+ */
21
+
22
+ /**
23
+ * Data that can be resolved to give a template code. This can be:
24
+ * * A template code
25
+ * * A template URL
26
+ * @typedef {string} GuildTemplateResolvable
27
+ */
28
+
29
+ /**
30
+ * Resolves the string to a code based on the passed regex.
31
+ * @param {string} data The string to resolve
32
+ * @param {RegExp} regex The RegExp used to extract the code
33
+ * @returns {string}
34
+ */
35
+ static resolveCode(data, regex) {
36
+ return regex.exec(data)?.[1] ?? data;
37
+ }
38
+
39
+ /**
40
+ * Resolves InviteResolvable to an invite code.
41
+ * @param {InviteResolvable} data The invite resolvable to resolve
42
+ * @returns {string}
43
+ */
44
+ static resolveInviteCode(data) {
45
+ return this.resolveCode(data, Invite.InvitesPattern);
46
+ }
47
+
48
+ /**
49
+ * Resolves GuildTemplateResolvable to a template code.
50
+ * @param {GuildTemplateResolvable} data The template resolvable to resolve
51
+ * @returns {string}
52
+ */
53
+ static resolveGuildTemplateCode(data) {
54
+ const GuildTemplate = require('../structures/GuildTemplate');
55
+ return this.resolveCode(data, GuildTemplate.GuildTemplatesPattern);
56
+ }
57
+
58
+ /**
59
+ * Resolves a Base64Resolvable, a string, or a BufferResolvable to a Base 64 image.
60
+ * @param {BufferResolvable|Base64Resolvable} image The image to be resolved
61
+ * @returns {Promise<?string>}
62
+ */
63
+ static async resolveImage(image) {
64
+ if (!image) return null;
65
+ if (typeof image === 'string' && image.startsWith('data:')) {
66
+ return image;
67
+ }
68
+ const file = await this.resolveFile(image);
69
+ return this.resolveBase64(file.data);
70
+ }
71
+
72
+ /**
73
+ * Data that resolves to give a Base64 string, typically for image uploading. This can be:
74
+ * * A Buffer
75
+ * * A base64 string
76
+ * @typedef {Buffer|string} Base64Resolvable
77
+ */
78
+
79
+ /**
80
+ * Resolves a Base64Resolvable to a Base 64 image.
81
+ * @param {Base64Resolvable} data The base 64 resolvable you want to resolve
82
+ * @returns {?string}
83
+ */
84
+ static resolveBase64(data) {
85
+ if (Buffer.isBuffer(data)) return `data:image/jpg;base64,${data.toString('base64')}`;
86
+ return data;
87
+ }
88
+
89
+ /**
90
+ * Data that can be resolved to give a Buffer. This can be:
91
+ * * A Buffer
92
+ * * The path to a local file
93
+ * * A URL <warn>When provided a URL, discord.js will fetch the URL internally in order to create a Buffer.
94
+ * This can pose a security risk when the URL has not been sanitized</warn>
95
+ * @typedef {string|Buffer} BufferResolvable
96
+ */
97
+
98
+ /**
99
+ * @external Stream
100
+ * @see {@link https://nodejs.org/api/stream.html}
101
+ */
102
+
103
+ /**
104
+ * @typedef {Object} ResolvedFile
105
+ * @property {Buffer} data Buffer containing the file data
106
+ * @property {string} [contentType] Content type of the file
107
+ */
108
+
109
+ /**
110
+ * Resolves a BufferResolvable to a Buffer.
111
+ * @param {BufferResolvable|Stream} resource The buffer or stream resolvable to resolve
112
+ * @returns {Promise<ResolvedFile>}
113
+ */
114
+ static async resolveFile(resource) {
115
+ if (Buffer.isBuffer(resource)) return { data: resource };
116
+
117
+ if (typeof resource[Symbol.asyncIterator] === 'function') {
118
+ const buffers = [];
119
+ for await (const data of resource) buffers.push(Buffer.from(data));
120
+ return { data: Buffer.concat(buffers) };
121
+ }
122
+
123
+ if (typeof resource === 'string') {
124
+ if (/^https?:\/\//.test(resource)) {
125
+ const res = await fetch(resource);
126
+ return { data: Buffer.from(await res.arrayBuffer()), contentType: res.headers.get('content-type') };
127
+ }
128
+
129
+ const file = path.resolve(resource);
130
+
131
+ const stats = await fs.stat(file);
132
+ if (!stats.isFile()) throw new DiscordjsError(ErrorCodes.FileNotFound, file);
133
+ return { data: await fs.readFile(file) };
134
+ }
135
+
136
+ throw new DiscordjsTypeError(ErrorCodes.ReqResourceType);
137
+ }
138
+ }
139
+
140
+ module.exports = DataResolver;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ function createEnum(keys) {
4
+ const obj = {};
5
+ for (const [index, key] of keys.entries()) {
6
+ if (key === null) continue;
7
+ obj[key] = index;
8
+ obj[index] = key;
9
+ }
10
+ return obj;
11
+ }
12
+
13
+ module.exports = { createEnum };
@@ -0,0 +1,160 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @typedef {Object} Events
5
+ * @property {string} ApplicationCommandPermissionsUpdate applicationCommandPermissionsUpdate
6
+ * @property {string} AutoModerationActionExecution autoModerationActionExecution
7
+ * @property {string} AutoModerationRuleCreate autoModerationRuleCreate
8
+ * @property {string} AutoModerationRuleDelete autoModerationRuleDelete
9
+ * @property {string} AutoModerationRuleUpdate autoModerationRuleUpdate
10
+ * @property {string} CacheSweep cacheSweep
11
+ * @property {string} ChannelCreate channelCreate
12
+ * @property {string} ChannelDelete channelDelete
13
+ * @property {string} ChannelPinsUpdate channelPinsUpdate
14
+ * @property {string} ChannelUpdate channelUpdate
15
+ * @property {string} ClientReady ready
16
+ * @property {string} Debug debug
17
+ * @property {string} Error error
18
+ * @property {string} GuildAuditLogEntryCreate guildAuditLogEntryCreate
19
+ * @property {string} GuildBanAdd guildBanAdd
20
+ * @property {string} GuildBanRemove guildBanRemove
21
+ * @property {string} GuildCreate guildCreate
22
+ * @property {string} GuildDelete guildDelete
23
+ * @property {string} GuildEmojiCreate emojiCreate
24
+ * @property {string} GuildEmojiDelete emojiDelete
25
+ * @property {string} GuildEmojiUpdate emojiUpdate
26
+ * @property {string} GuildIntegrationsUpdate guildIntegrationsUpdate
27
+ * @property {string} GuildMemberAdd guildMemberAdd
28
+ * @property {string} GuildMemberAvailable guildMemberAvailable
29
+ * @property {string} GuildMemberRemove guildMemberRemove
30
+ * @property {string} GuildMembersChunk guildMembersChunk
31
+ * @property {string} GuildMemberUpdate guildMemberUpdate
32
+ * @property {string} GuildRoleCreate roleCreate
33
+ * @property {string} GuildRoleDelete roleDelete
34
+ * @property {string} GuildRoleUpdate roleUpdate
35
+ * @property {string} GuildScheduledEventCreate guildScheduledEventCreate
36
+ * @property {string} GuildScheduledEventDelete guildScheduledEventDelete
37
+ * @property {string} GuildScheduledEventUpdate guildScheduledEventUpdate
38
+ * @property {string} GuildScheduledEventUserAdd guildScheduledEventUserAdd
39
+ * @property {string} GuildScheduledEventUserRemove guildScheduledEventUserRemove
40
+ * @property {string} GuildStickerCreate stickerCreate
41
+ * @property {string} GuildStickerDelete stickerDelete
42
+ * @property {string} GuildStickerUpdate stickerUpdate
43
+ * @property {string} GuildUnavailable guildUnavailable
44
+ * @property {string} GuildUpdate guildUpdate
45
+ * @property {string} InteractionCreate interactionCreate
46
+ * @property {string} Invalidated invalidated
47
+ * @property {string} InviteCreate inviteCreate
48
+ * @property {string} InviteDelete inviteDelete
49
+ * @property {string} MessageBulkDelete messageDeleteBulk
50
+ * @property {string} MessageCreate messageCreate
51
+ * @property {string} MessageDelete messageDelete
52
+ * @property {string} MessageReactionAdd messageReactionAdd
53
+ * @property {string} MessageReactionRemove messageReactionRemove
54
+ * @property {string} MessageReactionRemoveAll messageReactionRemoveAll
55
+ * @property {string} MessageReactionRemoveEmoji messageReactionRemoveEmoji
56
+ * @property {string} MessageUpdate messageUpdate
57
+ * @property {string} PresenceUpdate presenceUpdate
58
+ * @property {string} ShardDisconnect shardDisconnect
59
+ * @property {string} ShardError shardError
60
+ * @property {string} ShardReady shardReady
61
+ * @property {string} ShardReconnecting shardReconnecting
62
+ * @property {string} ShardResume shardResume
63
+ * @property {string} StageInstanceCreate stageInstanceCreate
64
+ * @property {string} StageInstanceDelete stageInstanceDelete
65
+ * @property {string} StageInstanceUpdate stageInstanceUpdate
66
+ * @property {string} ThreadCreate threadCreate
67
+ * @property {string} ThreadDelete threadDelete
68
+ * @property {string} ThreadListSync threadListSync
69
+ * @property {string} ThreadMembersUpdate threadMembersUpdate
70
+ * @property {string} ThreadMemberUpdate threadMemberUpdate
71
+ * @property {string} ThreadUpdate threadUpdate
72
+ * @property {string} TypingStart typingStart
73
+ * @property {string} UserUpdate userUpdate
74
+ * @property {string} VoiceServerUpdate voiceServerUpdate
75
+ * @property {string} VoiceStateUpdate voiceStateUpdate
76
+ * @property {string} Warn warn
77
+ * @property {string} WebhooksUpdate webhookUpdate
78
+ */
79
+
80
+ // JSDoc for IntelliSense purposes
81
+ /**
82
+ * @type {Events}
83
+ * @ignore
84
+ */
85
+ module.exports = {
86
+ ApplicationCommandPermissionsUpdate: 'applicationCommandPermissionsUpdate',
87
+ AutoModerationActionExecution: 'autoModerationActionExecution',
88
+ AutoModerationRuleCreate: 'autoModerationRuleCreate',
89
+ AutoModerationRuleDelete: 'autoModerationRuleDelete',
90
+ AutoModerationRuleUpdate: 'autoModerationRuleUpdate',
91
+ CacheSweep: 'cacheSweep',
92
+ ChannelCreate: 'channelCreate',
93
+ ChannelDelete: 'channelDelete',
94
+ ChannelPinsUpdate: 'channelPinsUpdate',
95
+ ChannelUpdate: 'channelUpdate',
96
+ ClientReady: 'ready',
97
+ Debug: 'debug',
98
+ Error: 'error',
99
+ GuildAuditLogEntryCreate: 'guildAuditLogEntryCreate',
100
+ GuildBanAdd: 'guildBanAdd',
101
+ GuildBanRemove: 'guildBanRemove',
102
+ GuildCreate: 'guildCreate',
103
+ GuildDelete: 'guildDelete',
104
+ GuildEmojiCreate: 'emojiCreate',
105
+ GuildEmojiDelete: 'emojiDelete',
106
+ GuildEmojiUpdate: 'emojiUpdate',
107
+ GuildIntegrationsUpdate: 'guildIntegrationsUpdate',
108
+ GuildMemberAdd: 'guildMemberAdd',
109
+ GuildMemberAvailable: 'guildMemberAvailable',
110
+ GuildMemberRemove: 'guildMemberRemove',
111
+ GuildMembersChunk: 'guildMembersChunk',
112
+ GuildMemberUpdate: 'guildMemberUpdate',
113
+ GuildRoleCreate: 'roleCreate',
114
+ GuildRoleDelete: 'roleDelete',
115
+ GuildRoleUpdate: 'roleUpdate',
116
+ GuildScheduledEventCreate: 'guildScheduledEventCreate',
117
+ GuildScheduledEventDelete: 'guildScheduledEventDelete',
118
+ GuildScheduledEventUpdate: 'guildScheduledEventUpdate',
119
+ GuildScheduledEventUserAdd: 'guildScheduledEventUserAdd',
120
+ GuildScheduledEventUserRemove: 'guildScheduledEventUserRemove',
121
+ GuildStickerCreate: 'stickerCreate',
122
+ GuildStickerDelete: 'stickerDelete',
123
+ GuildStickerUpdate: 'stickerUpdate',
124
+ GuildUnavailable: 'guildUnavailable',
125
+ GuildUpdate: 'guildUpdate',
126
+ InteractionCreate: 'interactionCreate',
127
+ Invalidated: 'invalidated',
128
+ InviteCreate: 'inviteCreate',
129
+ InviteDelete: 'inviteDelete',
130
+ MessageBulkDelete: 'messageDeleteBulk',
131
+ MessageCreate: 'messageCreate',
132
+ MessageDelete: 'messageDelete',
133
+ MessageReactionAdd: 'messageReactionAdd',
134
+ MessageReactionRemove: 'messageReactionRemove',
135
+ MessageReactionRemoveAll: 'messageReactionRemoveAll',
136
+ MessageReactionRemoveEmoji: 'messageReactionRemoveEmoji',
137
+ MessageUpdate: 'messageUpdate',
138
+ PresenceUpdate: 'presenceUpdate',
139
+ Raw: 'raw',
140
+ ShardDisconnect: 'shardDisconnect',
141
+ ShardError: 'shardError',
142
+ ShardReady: 'shardReady',
143
+ ShardReconnecting: 'shardReconnecting',
144
+ ShardResume: 'shardResume',
145
+ StageInstanceCreate: 'stageInstanceCreate',
146
+ StageInstanceDelete: 'stageInstanceDelete',
147
+ StageInstanceUpdate: 'stageInstanceUpdate',
148
+ ThreadCreate: 'threadCreate',
149
+ ThreadDelete: 'threadDelete',
150
+ ThreadListSync: 'threadListSync',
151
+ ThreadMembersUpdate: 'threadMembersUpdate',
152
+ ThreadMemberUpdate: 'threadMemberUpdate',
153
+ ThreadUpdate: 'threadUpdate',
154
+ TypingStart: 'typingStart',
155
+ UserUpdate: 'userUpdate',
156
+ VoiceServerUpdate: 'voiceServerUpdate',
157
+ VoiceStateUpdate: 'voiceStateUpdate',
158
+ Warn: 'warn',
159
+ WebhooksUpdate: 'webhookUpdate',
160
+ };