discord-sb.js 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 (366) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +2 -0
  3. package/package.json +91 -0
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +86 -0
  6. package/src/client/Client.js +978 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +116 -0
  9. package/src/client/actions/ActionsManager.js +80 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +27 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +28 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +32 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
  15. package/src/client/actions/ChannelCreate.js +23 -0
  16. package/src/client/actions/ChannelDelete.js +39 -0
  17. package/src/client/actions/ChannelUpdate.js +43 -0
  18. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  19. package/src/client/actions/GuildBanAdd.js +20 -0
  20. package/src/client/actions/GuildBanRemove.js +25 -0
  21. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  22. package/src/client/actions/GuildDelete.js +65 -0
  23. package/src/client/actions/GuildEmojiCreate.js +20 -0
  24. package/src/client/actions/GuildEmojiDelete.js +21 -0
  25. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  26. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  27. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  28. package/src/client/actions/GuildMemberRemove.js +33 -0
  29. package/src/client/actions/GuildMemberUpdate.js +44 -0
  30. package/src/client/actions/GuildRoleCreate.js +25 -0
  31. package/src/client/actions/GuildRoleDelete.js +31 -0
  32. package/src/client/actions/GuildRoleUpdate.js +39 -0
  33. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  34. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  35. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  36. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  37. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  38. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  39. package/src/client/actions/GuildStickerCreate.js +20 -0
  40. package/src/client/actions/GuildStickerDelete.js +21 -0
  41. package/src/client/actions/GuildStickerUpdate.js +20 -0
  42. package/src/client/actions/GuildStickersUpdate.js +34 -0
  43. package/src/client/actions/GuildUpdate.js +33 -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 +50 -0
  47. package/src/client/actions/MessageDelete.js +32 -0
  48. package/src/client/actions/MessageDeleteBulk.js +46 -0
  49. package/src/client/actions/MessagePollVoteAdd.js +33 -0
  50. package/src/client/actions/MessagePollVoteRemove.js +33 -0
  51. package/src/client/actions/MessageReactionAdd.js +68 -0
  52. package/src/client/actions/MessageReactionRemove.js +50 -0
  53. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  54. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  55. package/src/client/actions/MessageUpdate.js +26 -0
  56. package/src/client/actions/PresenceUpdate.js +50 -0
  57. package/src/client/actions/StageInstanceCreate.js +28 -0
  58. package/src/client/actions/StageInstanceDelete.js +33 -0
  59. package/src/client/actions/StageInstanceUpdate.js +30 -0
  60. package/src/client/actions/ThreadCreate.js +24 -0
  61. package/src/client/actions/ThreadDelete.js +32 -0
  62. package/src/client/actions/ThreadListSync.js +59 -0
  63. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  64. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  65. package/src/client/actions/TypingStart.js +29 -0
  66. package/src/client/actions/UserUpdate.js +35 -0
  67. package/src/client/actions/VoiceStateUpdate.js +50 -0
  68. package/src/client/actions/WebhooksUpdate.js +20 -0
  69. package/src/client/voice/ClientVoiceManager.js +151 -0
  70. package/src/client/voice/VoiceConnection.js +1249 -0
  71. package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
  72. package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
  73. package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
  74. package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
  75. package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
  76. package/src/client/voice/networking/VoiceUDPClient.js +173 -0
  77. package/src/client/voice/networking/VoiceWebSocket.js +286 -0
  78. package/src/client/voice/player/MediaPlayer.js +321 -0
  79. package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
  80. package/src/client/voice/player/processing/IvfSplitter.js +106 -0
  81. package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
  82. package/src/client/voice/receiver/PacketHandler.js +260 -0
  83. package/src/client/voice/receiver/Receiver.js +96 -0
  84. package/src/client/voice/receiver/Recorder.js +173 -0
  85. package/src/client/voice/util/Function.js +116 -0
  86. package/src/client/voice/util/PlayInterface.js +122 -0
  87. package/src/client/voice/util/Secretbox.js +64 -0
  88. package/src/client/voice/util/Silence.js +16 -0
  89. package/src/client/voice/util/Socket.js +62 -0
  90. package/src/client/voice/util/VolumeInterface.js +104 -0
  91. package/src/client/websocket/WebSocketManager.js +392 -0
  92. package/src/client/websocket/WebSocketShard.js +907 -0
  93. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  94. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  95. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  97. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  98. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  99. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  100. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  101. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  102. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  103. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  104. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  105. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  106. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  107. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
  108. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  109. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  110. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  112. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  113. package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
  114. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  115. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  116. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  118. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  119. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  120. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  121. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  122. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  123. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  124. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  125. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  126. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  128. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  129. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  130. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  131. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
  132. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  133. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  134. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  135. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  136. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  137. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -0
  138. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
  139. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  140. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  141. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  142. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  143. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  144. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  145. package/src/client/websocket/handlers/READY.js +121 -0
  146. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
  147. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
  148. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
  149. package/src/client/websocket/handlers/RESUMED.js +14 -0
  150. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  151. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  152. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  153. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  154. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  155. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  156. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  157. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  158. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  159. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  160. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
  161. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  162. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  163. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
  164. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  165. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  166. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  167. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  168. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  169. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  170. package/src/client/websocket/handlers/index.js +84 -0
  171. package/src/errors/DJSError.js +61 -0
  172. package/src/errors/Messages.js +217 -0
  173. package/src/errors/index.js +4 -0
  174. package/src/index.js +172 -0
  175. package/src/managers/ApplicationCommandManager.js +264 -0
  176. package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
  177. package/src/managers/AutoModerationRuleManager.js +296 -0
  178. package/src/managers/BaseGuildEmojiManager.js +80 -0
  179. package/src/managers/BaseManager.js +19 -0
  180. package/src/managers/BillingManager.js +66 -0
  181. package/src/managers/CachedManager.js +71 -0
  182. package/src/managers/ChannelManager.js +148 -0
  183. package/src/managers/ClientUserSettingManager.js +372 -0
  184. package/src/managers/DataManager.js +61 -0
  185. package/src/managers/DeveloperManager.js +254 -0
  186. package/src/managers/GuildBanManager.js +250 -0
  187. package/src/managers/GuildChannelManager.js +488 -0
  188. package/src/managers/GuildEmojiManager.js +171 -0
  189. package/src/managers/GuildEmojiRoleManager.js +118 -0
  190. package/src/managers/GuildForumThreadManager.js +108 -0
  191. package/src/managers/GuildInviteManager.js +213 -0
  192. package/src/managers/GuildManager.js +338 -0
  193. package/src/managers/GuildMemberManager.js +599 -0
  194. package/src/managers/GuildMemberRoleManager.js +195 -0
  195. package/src/managers/GuildScheduledEventManager.js +314 -0
  196. package/src/managers/GuildSettingManager.js +155 -0
  197. package/src/managers/GuildStickerManager.js +179 -0
  198. package/src/managers/GuildTextThreadManager.js +98 -0
  199. package/src/managers/InteractionManager.js +39 -0
  200. package/src/managers/MessageManager.js +423 -0
  201. package/src/managers/PermissionOverwriteManager.js +164 -0
  202. package/src/managers/PresenceManager.js +71 -0
  203. package/src/managers/QuestManager.js +353 -0
  204. package/src/managers/ReactionManager.js +67 -0
  205. package/src/managers/ReactionUserManager.js +73 -0
  206. package/src/managers/RelationshipManager.js +278 -0
  207. package/src/managers/RoleManager.js +448 -0
  208. package/src/managers/SessionManager.js +66 -0
  209. package/src/managers/StageInstanceManager.js +162 -0
  210. package/src/managers/ThreadManager.js +175 -0
  211. package/src/managers/ThreadMemberManager.js +186 -0
  212. package/src/managers/UserManager.js +136 -0
  213. package/src/managers/UserNoteManager.js +53 -0
  214. package/src/managers/VoiceStateManager.js +59 -0
  215. package/src/rest/APIRequest.js +154 -0
  216. package/src/rest/APIRouter.js +53 -0
  217. package/src/rest/DiscordAPIError.js +119 -0
  218. package/src/rest/HTTPError.js +62 -0
  219. package/src/rest/RESTManager.js +67 -0
  220. package/src/rest/RateLimitError.js +55 -0
  221. package/src/rest/RequestHandler.js +466 -0
  222. package/src/sharding/Shard.js +444 -0
  223. package/src/sharding/ShardClientUtil.js +279 -0
  224. package/src/sharding/ShardingManager.js +319 -0
  225. package/src/structures/AnonymousGuild.js +98 -0
  226. package/src/structures/ApplicationCommand.js +593 -0
  227. package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
  228. package/src/structures/AutoModerationActionExecution.js +89 -0
  229. package/src/structures/AutoModerationRule.js +294 -0
  230. package/src/structures/AutocompleteInteraction.js +107 -0
  231. package/src/structures/Base.js +43 -0
  232. package/src/structures/BaseCommandInteraction.js +211 -0
  233. package/src/structures/BaseGuild.js +116 -0
  234. package/src/structures/BaseGuildEmoji.js +56 -0
  235. package/src/structures/BaseGuildTextChannel.js +191 -0
  236. package/src/structures/BaseGuildVoiceChannel.js +241 -0
  237. package/src/structures/BaseMessageComponent.js +181 -0
  238. package/src/structures/ButtonInteraction.js +11 -0
  239. package/src/structures/CallState.js +63 -0
  240. package/src/structures/CategoryChannel.js +85 -0
  241. package/src/structures/Channel.js +284 -0
  242. package/src/structures/ClientPresence.js +77 -0
  243. package/src/structures/ClientUser.js +655 -0
  244. package/src/structures/CommandInteraction.js +41 -0
  245. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  246. package/src/structures/ContainerComponent.js +68 -0
  247. package/src/structures/ContextMenuInteraction.js +65 -0
  248. package/src/structures/DMChannel.js +219 -0
  249. package/src/structures/DirectoryChannel.js +20 -0
  250. package/src/structures/Emoji.js +148 -0
  251. package/src/structures/FileComponent.js +49 -0
  252. package/src/structures/ForumChannel.js +31 -0
  253. package/src/structures/GroupDMChannel.js +394 -0
  254. package/src/structures/Guild.js +1791 -0
  255. package/src/structures/GuildAuditLogs.js +746 -0
  256. package/src/structures/GuildBan.js +59 -0
  257. package/src/structures/GuildBoost.js +108 -0
  258. package/src/structures/GuildChannel.js +470 -0
  259. package/src/structures/GuildEmoji.js +161 -0
  260. package/src/structures/GuildMember.js +636 -0
  261. package/src/structures/GuildPreview.js +191 -0
  262. package/src/structures/GuildPreviewEmoji.js +27 -0
  263. package/src/structures/GuildScheduledEvent.js +536 -0
  264. package/src/structures/GuildTemplate.js +236 -0
  265. package/src/structures/Integration.js +188 -0
  266. package/src/structures/IntegrationApplication.js +96 -0
  267. package/src/structures/Interaction.js +290 -0
  268. package/src/structures/InteractionCollector.js +248 -0
  269. package/src/structures/InteractionWebhook.js +43 -0
  270. package/src/structures/Invite.js +358 -0
  271. package/src/structures/InviteGuild.js +23 -0
  272. package/src/structures/InviteStageInstance.js +86 -0
  273. package/src/structures/MediaChannel.js +11 -0
  274. package/src/structures/MediaGalleryComponent.js +41 -0
  275. package/src/structures/MediaGalleryItem.js +47 -0
  276. package/src/structures/Message.js +1252 -0
  277. package/src/structures/MessageActionRow.js +105 -0
  278. package/src/structures/MessageAttachment.js +216 -0
  279. package/src/structures/MessageButton.js +166 -0
  280. package/src/structures/MessageCollector.js +146 -0
  281. package/src/structures/MessageComponentInteraction.js +120 -0
  282. package/src/structures/MessageContextMenuInteraction.js +20 -0
  283. package/src/structures/MessageEmbed.js +596 -0
  284. package/src/structures/MessageMentions.js +273 -0
  285. package/src/structures/MessagePayload.js +354 -0
  286. package/src/structures/MessageReaction.js +181 -0
  287. package/src/structures/MessageSelectMenu.js +141 -0
  288. package/src/structures/Modal.js +161 -0
  289. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  290. package/src/structures/ModalSubmitInteraction.js +119 -0
  291. package/src/structures/NewsChannel.js +32 -0
  292. package/src/structures/OAuth2Guild.js +28 -0
  293. package/src/structures/PermissionOverwrites.js +198 -0
  294. package/src/structures/Poll.js +108 -0
  295. package/src/structures/PollAnswer.js +88 -0
  296. package/src/structures/Presence.js +1157 -0
  297. package/src/structures/ReactionCollector.js +229 -0
  298. package/src/structures/ReactionEmoji.js +31 -0
  299. package/src/structures/Role.js +590 -0
  300. package/src/structures/SectionComponent.js +48 -0
  301. package/src/structures/SelectMenuInteraction.js +21 -0
  302. package/src/structures/SeparatorComponent.js +48 -0
  303. package/src/structures/Session.js +81 -0
  304. package/src/structures/StageChannel.js +104 -0
  305. package/src/structures/StageInstance.js +208 -0
  306. package/src/structures/Sticker.js +310 -0
  307. package/src/structures/StickerPack.js +95 -0
  308. package/src/structures/StoreChannel.js +56 -0
  309. package/src/structures/Team.js +118 -0
  310. package/src/structures/TeamMember.js +80 -0
  311. package/src/structures/TextChannel.js +33 -0
  312. package/src/structures/TextDisplayComponent.js +40 -0
  313. package/src/structures/TextInputComponent.js +132 -0
  314. package/src/structures/ThreadChannel.js +605 -0
  315. package/src/structures/ThreadMember.js +105 -0
  316. package/src/structures/ThreadOnlyChannel.js +249 -0
  317. package/src/structures/ThumbnailComponent.js +57 -0
  318. package/src/structures/Typing.js +74 -0
  319. package/src/structures/UnfurledMediaItem.js +29 -0
  320. package/src/structures/User.js +640 -0
  321. package/src/structures/UserContextMenuInteraction.js +29 -0
  322. package/src/structures/VoiceChannel.js +110 -0
  323. package/src/structures/VoiceChannelEffect.js +69 -0
  324. package/src/structures/VoiceRegion.js +53 -0
  325. package/src/structures/VoiceState.js +354 -0
  326. package/src/structures/WebEmbed.js +373 -0
  327. package/src/structures/Webhook.js +478 -0
  328. package/src/structures/WelcomeChannel.js +60 -0
  329. package/src/structures/WelcomeScreen.js +48 -0
  330. package/src/structures/Widget.js +87 -0
  331. package/src/structures/WidgetMember.js +99 -0
  332. package/src/structures/interfaces/Application.js +953 -0
  333. package/src/structures/interfaces/Collector.js +300 -0
  334. package/src/structures/interfaces/InteractionResponses.js +313 -0
  335. package/src/structures/interfaces/TextBasedChannel.js +821 -0
  336. package/src/util/APITypes.js +59 -0
  337. package/src/util/ActivityFlags.js +44 -0
  338. package/src/util/ApplicationFlags.js +76 -0
  339. package/src/util/AttachmentFlags.js +38 -0
  340. package/src/util/BitField.js +170 -0
  341. package/src/util/ChannelFlags.js +45 -0
  342. package/src/util/Constants.js +1914 -0
  343. package/src/util/DataResolver.js +146 -0
  344. package/src/util/Formatters.js +228 -0
  345. package/src/util/GuildMemberFlags.js +43 -0
  346. package/src/util/Intents.js +74 -0
  347. package/src/util/InviteFlags.js +34 -0
  348. package/src/util/LimitedCollection.js +131 -0
  349. package/src/util/MessageFlags.js +63 -0
  350. package/src/util/Options.js +358 -0
  351. package/src/util/Permissions.js +202 -0
  352. package/src/util/PremiumUsageFlags.js +31 -0
  353. package/src/util/PurchasedFlags.js +33 -0
  354. package/src/util/RemoteAuth.js +415 -0
  355. package/src/util/RoleFlags.js +37 -0
  356. package/src/util/SnowflakeUtil.js +92 -0
  357. package/src/util/Speaking.js +33 -0
  358. package/src/util/Sweepers.js +466 -0
  359. package/src/util/SystemChannelFlags.js +55 -0
  360. package/src/util/ThreadMemberFlags.js +30 -0
  361. package/src/util/UserFlags.js +104 -0
  362. package/src/util/Util.js +1048 -0
  363. package/typings/enums.d.ts +439 -0
  364. package/typings/index.d.ts +8505 -0
  365. package/typings/index.test-d.ts +0 -0
  366. package/typings/rawDataTypes.d.ts +403 -0
@@ -0,0 +1,478 @@
1
+ 'use strict';
2
+
3
+ const process = require('node:process');
4
+ const MessagePayload = require('./MessagePayload');
5
+ const { Error } = require('../errors');
6
+ const { WebhookTypes } = require('../util/Constants');
7
+ const DataResolver = require('../util/DataResolver');
8
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
9
+
10
+ let deprecationEmittedForFetchMessage = false;
11
+
12
+ /**
13
+ * Represents a webhook.
14
+ */
15
+ class Webhook {
16
+ constructor(client, data) {
17
+ /**
18
+ * The client that instantiated the webhook
19
+ * @name Webhook#client
20
+ * @type {Client}
21
+ * @readonly
22
+ */
23
+ Object.defineProperty(this, 'client', { value: client });
24
+ if (data) this._patch(data);
25
+ }
26
+
27
+ _patch(data) {
28
+ if ('name' in data) {
29
+ /**
30
+ * The name of the webhook
31
+ * @type {string}
32
+ */
33
+ this.name = data.name;
34
+ }
35
+
36
+ /**
37
+ * The token for the webhook, unavailable for follower webhooks and webhooks owned by another application.
38
+ * @name Webhook#token
39
+ * @type {?string}
40
+ */
41
+ Object.defineProperty(this, 'token', { value: data.token ?? null, writable: true, configurable: true });
42
+
43
+ if ('avatar' in data) {
44
+ /**
45
+ * The avatar for the webhook
46
+ * @type {?string}
47
+ */
48
+ this.avatar = data.avatar;
49
+ }
50
+
51
+ /**
52
+ * The webhook's id
53
+ * @type {Snowflake}
54
+ */
55
+ this.id = data.id;
56
+
57
+ if ('type' in data) {
58
+ /**
59
+ * The type of the webhook
60
+ * @type {WebhookType}
61
+ */
62
+ this.type = WebhookTypes[data.type];
63
+ }
64
+
65
+ if ('guild_id' in data) {
66
+ /**
67
+ * The guild the webhook belongs to
68
+ * @type {Snowflake}
69
+ */
70
+ this.guildId = data.guild_id;
71
+ }
72
+
73
+ if ('channel_id' in data) {
74
+ /**
75
+ * The id of the channel the webhook belongs to
76
+ * @type {Snowflake}
77
+ */
78
+ this.channelId = data.channel_id;
79
+ }
80
+
81
+ if ('user' in data) {
82
+ /**
83
+ * The owner of the webhook
84
+ * @type {?(User|APIUser)}
85
+ */
86
+ this.owner = this.client.users?._add(data.user) ?? data.user;
87
+ } else {
88
+ this.owner ??= null;
89
+ }
90
+
91
+ if ('source_guild' in data) {
92
+ /**
93
+ * The source guild of the webhook
94
+ * @type {?(Guild|APIGuild)}
95
+ */
96
+ this.sourceGuild = this.client.guilds?.cache.get(data.source_guild.id) ?? data.source_guild;
97
+ } else {
98
+ this.sourceGuild ??= null;
99
+ }
100
+
101
+ if ('source_channel' in data) {
102
+ /**
103
+ * The source channel of the webhook
104
+ * @type {?(NewsChannel|APIChannel)}
105
+ */
106
+ this.sourceChannel = this.client.channels?.cache.get(data.source_channel?.id) ?? data.source_channel;
107
+ } else {
108
+ this.sourceChannel ??= null;
109
+ }
110
+ }
111
+
112
+ /**
113
+ * Options that can be passed into send.
114
+ * @typedef {BaseMessageOptionsWithPoll} WebhookMessageOptions
115
+ * @property {string} [username=this.name] Username override for the message
116
+ * @property {string} [avatarURL] Avatar URL override for the message
117
+ * @property {Snowflake} [threadId] The id of the thread in the channel to send to.
118
+ * <info>For interaction webhooks, this property is ignored</info>
119
+ * @property {string} [threadName] Name of the thread to create (only available if webhook is in a forum channel)
120
+ * @property {MessageFlags} [flags] Which flags to set for the message. Only `SUPPRESS_EMBEDS` can be set.
121
+ * @property {Snowflake[]} [appliedTags]
122
+ * The tags to apply to the created thread (only available if the webhook is in a forum channel)
123
+ * @property {boolean} [withComponents] Whether to allow sending non-interactive components in the message.
124
+ * <info>For application-owned webhooks, this property is ignored</info>
125
+ */
126
+
127
+ /**
128
+ * Options that can be passed into editMessage.
129
+ * @typedef {Object} WebhookEditMessageOptions
130
+ * @property {MessageEmbed[]|APIEmbed[]} [embeds] See {@link WebhookMessageOptions#embeds}
131
+ * @property {string} [content] See {@link BaseMessageOptions#content}
132
+ * @property {FileOptions[]|BufferResolvable[]|MessageAttachment[]} [files] See {@link BaseMessageOptions#files}
133
+ * @property {MessageMentionOptions} [allowedMentions] See {@link BaseMessageOptions#allowedMentions}
134
+ * @property {MessageAttachment[]} [attachments] Attachments to send with the message
135
+ * @property {MessageActionRow[]|MessageActionRowOptions[]} [components]
136
+ * Action rows containing interactive components for the message (buttons, select menus)
137
+ * @property {Snowflake} [threadId] The id of the thread this message belongs to
138
+ * <info>For interaction webhooks, this property is ignored</info>
139
+ * @property {boolean} [withComponents] Whether to allow sending non-interactive components in the message.
140
+ * <info>For application-owned webhooks, this property is ignored</info>
141
+ */
142
+
143
+ /**
144
+ * Sends a message with this webhook.
145
+ * @param {string|MessagePayload|WebhookMessageOptions} options The options to provide
146
+ * @returns {Promise<Message|APIMessage>}
147
+ * @example
148
+ * // Send a basic message
149
+ * webhook.send('hello!')
150
+ * .then(message => console.log(`Sent message: ${message.content}`))
151
+ * .catch(console.error);
152
+ * @example
153
+ * // Send a basic message in a thread
154
+ * webhook.send({ content: 'hello!', threadId: '836856309672348295' })
155
+ * .then(message => console.log(`Sent message: ${message.content}`))
156
+ * .catch(console.error);
157
+ * @example
158
+ * // Send a remote file
159
+ * webhook.send({
160
+ * files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']
161
+ * })
162
+ * .then(console.log)
163
+ * .catch(console.error);
164
+ * @example
165
+ * // Send a local file
166
+ * webhook.send({
167
+ * files: [{
168
+ * attachment: 'entire/path/to/file.jpg',
169
+ * name: 'file.jpg'
170
+ * }]
171
+ * })
172
+ * .then(console.log)
173
+ * .catch(console.error);
174
+ * @example
175
+ * // Send an embed with a local image inside
176
+ * webhook.send({
177
+ * content: 'This is an embed',
178
+ * embeds: [{
179
+ * thumbnail: {
180
+ * url: 'attachment://file.jpg'
181
+ * }
182
+ * }],
183
+ * files: [{
184
+ * attachment: 'entire/path/to/file.jpg',
185
+ * name: 'file.jpg'
186
+ * }]
187
+ * })
188
+ * .then(console.log)
189
+ * .catch(console.error);
190
+ */
191
+ async send(options) {
192
+ if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');
193
+
194
+ let messagePayload;
195
+
196
+ if (options instanceof MessagePayload) {
197
+ messagePayload = options.resolveData();
198
+ } else {
199
+ messagePayload = MessagePayload.create(this, options).resolveData();
200
+ }
201
+
202
+ const { data, files } = await messagePayload.resolveFiles();
203
+ const d = await this.client.api.webhooks(this.id, this.token).post({
204
+ data,
205
+ files,
206
+ query: {
207
+ thread_id: messagePayload.options.threadId,
208
+ wait: true,
209
+ with_components: messagePayload.options.withComponents,
210
+ },
211
+ auth: false,
212
+ webhook: true,
213
+ });
214
+ return this.client.channels?.cache.get(d.channel_id)?.messages._add(d, false) ?? d;
215
+ }
216
+
217
+ /**
218
+ * Sends a raw slack message with this webhook.
219
+ * @param {Object} body The raw body to send
220
+ * @returns {Promise<boolean>}
221
+ * @example
222
+ * // Send a slack message
223
+ * webhook.sendSlackMessage({
224
+ * 'username': 'Wumpus',
225
+ * 'attachments': [{
226
+ * 'pretext': 'this looks pretty cool',
227
+ * 'color': '#F0F',
228
+ * 'footer_icon': 'http://snek.s3.amazonaws.com/topSnek.png',
229
+ * 'footer': 'Powered by sneks',
230
+ * 'ts': Date.now() / 1_000
231
+ * }]
232
+ * }).catch(console.error);
233
+ * @see {@link https://api.slack.com/messaging/webhooks}
234
+ */
235
+ async sendSlackMessage(body) {
236
+ if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');
237
+
238
+ const data = await this.client.api.webhooks(this.id, this.token).slack.post({
239
+ query: { wait: true },
240
+ auth: false,
241
+ data: body,
242
+ webhook: true,
243
+ });
244
+ return data.toString() === 'ok';
245
+ }
246
+
247
+ /**
248
+ * Options used to edit a {@link Webhook}.
249
+ * @typedef {Object} WebhookEditData
250
+ * @property {string} [name=this.name] The new name for the webhook
251
+ * @property {?(BufferResolvable)} [avatar] The new avatar for the webhook
252
+ * @property {GuildTextChannelResolvable|VoiceChannel|StageChannel|ForumChannel|MediaChannel} [channel]
253
+ * The new channel for the webhook
254
+ */
255
+
256
+ /**
257
+ * Edits this webhook.
258
+ * @param {WebhookEditData} options Options for editing the webhook
259
+ * @param {string} [reason] Reason for editing the webhook
260
+ * @returns {Promise<Webhook>}
261
+ */
262
+ async edit({ name = this.name, avatar, channel }, reason) {
263
+ if (avatar && !(typeof avatar === 'string' && avatar.startsWith('data:'))) {
264
+ avatar = await DataResolver.resolveImage(avatar);
265
+ }
266
+ channel &&= channel.id ?? channel;
267
+ const data = await this.client.api.webhooks(this.id, channel ? undefined : this.token).patch({
268
+ data: { name, avatar, channel_id: channel },
269
+ reason,
270
+ auth: !this.token || Boolean(channel),
271
+ webhook: true,
272
+ });
273
+
274
+ this.name = data.name;
275
+ this.avatar = data.avatar;
276
+ this.channelId = data.channel_id;
277
+ return this;
278
+ }
279
+
280
+ /**
281
+ * Options that can be passed into fetchMessage.
282
+ * @typedef {options} WebhookFetchMessageOptions
283
+ * @property {boolean} [cache=true] Whether to cache the message.
284
+ * @property {Snowflake} [threadId] The id of the thread this message belongs to.
285
+ * <info>For interaction webhooks, this property is ignored</info>
286
+ */
287
+
288
+ /**
289
+ * Gets a message that was sent by this webhook.
290
+ * @param {Snowflake|'@original'} message The id of the message to fetch
291
+ * @param {WebhookFetchMessageOptions|boolean} [cacheOrOptions={}] The options to provide to fetch the message.
292
+ * <warn>A **deprecated** boolean may be passed instead to specify whether to cache the message.</warn>
293
+ * @returns {Promise<Message|APIMessage>} Returns the raw message data if the webhook was instantiated as a
294
+ * {@link WebhookClient} or if the channel is uncached, otherwise a {@link Message} will be returned
295
+ */
296
+ async fetchMessage(message, cacheOrOptions = { cache: true }) {
297
+ if (typeof cacheOrOptions === 'boolean') {
298
+ if (!deprecationEmittedForFetchMessage) {
299
+ process.emitWarning(
300
+ 'Passing a boolean to cache the message in Webhook#fetchMessage is deprecated. Pass an object instead.',
301
+ 'DeprecationWarning',
302
+ );
303
+
304
+ deprecationEmittedForFetchMessage = true;
305
+ }
306
+
307
+ cacheOrOptions = { cache: cacheOrOptions };
308
+ }
309
+
310
+ if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');
311
+
312
+ const data = await this.client.api
313
+ .webhooks(this.id, this.token)
314
+ .messages(message)
315
+ .get({
316
+ query: {
317
+ thread_id: cacheOrOptions.threadId,
318
+ },
319
+ auth: false,
320
+ webhook: true,
321
+ });
322
+ return this.client.channels?.cache.get(data.channel_id)?.messages._add(data, cacheOrOptions.cache) ?? data;
323
+ }
324
+
325
+ /**
326
+ * Edits a message that was sent by this webhook.
327
+ * @param {MessageResolvable|'@original'} message The message to edit
328
+ * @param {string|MessagePayload|WebhookEditMessageOptions} options The options to provide
329
+ * @returns {Promise<Message|APIMessage>} Returns the raw message data if the webhook was instantiated as a
330
+ * {@link WebhookClient} or if the channel is uncached, otherwise a {@link Message} will be returned
331
+ */
332
+ async editMessage(message, options) {
333
+ if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');
334
+
335
+ let messagePayload;
336
+
337
+ if (options instanceof MessagePayload) messagePayload = options;
338
+ else messagePayload = MessagePayload.create(this, options);
339
+
340
+ const { data, files } = await messagePayload.resolveData().resolveFiles();
341
+
342
+ const d = await this.client.api
343
+ .webhooks(this.id, this.token)
344
+ .messages(typeof message === 'string' ? message : message.id)
345
+ .patch({
346
+ data,
347
+ files,
348
+ query: {
349
+ thread_id: messagePayload.options.threadId,
350
+ with_components: messagePayload.options.withComponents,
351
+ },
352
+ auth: false,
353
+ webhook: true,
354
+ });
355
+
356
+ const messageManager = this.client.channels?.cache.get(d.channel_id)?.messages;
357
+ if (!messageManager) return d;
358
+
359
+ const existing = messageManager.cache.get(d.id);
360
+ if (!existing) return messageManager._add(d);
361
+
362
+ const clone = existing._clone();
363
+ clone._patch(d);
364
+ return clone;
365
+ }
366
+
367
+ /**
368
+ * Deletes the webhook.
369
+ * @param {string} [reason] Reason for deleting this webhook
370
+ * @returns {Promise<void>}
371
+ */
372
+ async delete(reason) {
373
+ await this.client.api.webhooks(this.id, this.token).delete({ reason, auth: !this.token, webhook: true });
374
+ }
375
+
376
+ /**
377
+ * Delete a message that was sent by this webhook.
378
+ * @param {MessageResolvable|'@original'} message The message to delete
379
+ * @param {Snowflake} [threadId] The id of the thread this message belongs to
380
+ * @returns {Promise<void>}
381
+ */
382
+ async deleteMessage(message, threadId) {
383
+ if (!this.token) throw new Error('WEBHOOK_TOKEN_UNAVAILABLE');
384
+
385
+ await this.client.api
386
+ .webhooks(this.id, this.token)
387
+ .messages(typeof message === 'string' ? message : message.id)
388
+ .delete({
389
+ query: {
390
+ thread_id: threadId,
391
+ },
392
+ auth: false,
393
+ webhook: true,
394
+ });
395
+ }
396
+
397
+ /**
398
+ * The channel the webhook belongs to
399
+ * @type {?(TextChannel|VoiceChannel|NewsChannel|ForumChannel|MediaChannel)}
400
+ * @readonly
401
+ */
402
+ get channel() {
403
+ return this.client.channels.resolve(this.channelId);
404
+ }
405
+
406
+ /**
407
+ * The timestamp the webhook was created at
408
+ * @type {number}
409
+ * @readonly
410
+ */
411
+ get createdTimestamp() {
412
+ return SnowflakeUtil.timestampFrom(this.id);
413
+ }
414
+
415
+ /**
416
+ * The time the webhook was created at
417
+ * @type {Date}
418
+ * @readonly
419
+ */
420
+ get createdAt() {
421
+ return new Date(this.createdTimestamp);
422
+ }
423
+
424
+ /**
425
+ * The URL of this webhook
426
+ * @type {string}
427
+ * @readonly
428
+ */
429
+ get url() {
430
+ return this.client.options.http.api + this.client.api.webhooks(this.id, this.token);
431
+ }
432
+
433
+ /**
434
+ * A link to the webhook's avatar.
435
+ * @param {StaticImageURLOptions} [options={}] Options for the Image URL
436
+ * @returns {?string}
437
+ */
438
+ avatarURL({ format, size } = {}) {
439
+ if (!this.avatar) return null;
440
+ return this.client.rest.cdn.Avatar(this.id, this.avatar, format, size);
441
+ }
442
+
443
+ /**
444
+ * Whether or not this webhook is a channel follower webhook.
445
+ * @returns {boolean}
446
+ */
447
+ isChannelFollower() {
448
+ return this.type === 'Channel Follower';
449
+ }
450
+
451
+ /**
452
+ * Whether or not this webhook is an incoming webhook.
453
+ * @returns {boolean}
454
+ */
455
+ isIncoming() {
456
+ return this.type === 'Incoming';
457
+ }
458
+
459
+ static applyToClass(structure, ignore = []) {
460
+ for (const prop of [
461
+ 'send',
462
+ 'sendSlackMessage',
463
+ 'fetchMessage',
464
+ 'edit',
465
+ 'editMessage',
466
+ 'delete',
467
+ 'deleteMessage',
468
+ 'createdTimestamp',
469
+ 'createdAt',
470
+ 'url',
471
+ ]) {
472
+ if (ignore.includes(prop)) continue;
473
+ Object.defineProperty(structure.prototype, prop, Object.getOwnPropertyDescriptor(Webhook.prototype, prop));
474
+ }
475
+ }
476
+ }
477
+
478
+ module.exports = Webhook;
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ const Base = require('./Base');
4
+ const { Emoji } = require('./Emoji');
5
+
6
+ /**
7
+ * Represents a channel link in a guild's welcome screen.
8
+ * @extends {Base}
9
+ */
10
+ class WelcomeChannel extends Base {
11
+ constructor(guild, data) {
12
+ super(guild.client);
13
+
14
+ /**
15
+ * The guild for this welcome channel
16
+ * @type {Guild|InviteGuild}
17
+ */
18
+ this.guild = guild;
19
+
20
+ /**
21
+ * The description of this welcome channel
22
+ * @type {string}
23
+ */
24
+ this.description = data.description;
25
+
26
+ /**
27
+ * The raw emoji data
28
+ * @type {Object}
29
+ * @private
30
+ */
31
+ this._emoji = {
32
+ name: data.emoji_name,
33
+ id: data.emoji_id,
34
+ };
35
+
36
+ /**
37
+ * The id of this welcome channel
38
+ * @type {Snowflake}
39
+ */
40
+ this.channelId = data.channel_id;
41
+ }
42
+
43
+ /**
44
+ * The channel of this welcome channel
45
+ * @type {?(TextChannel|NewsChannel|StoreChannel|ForumChannel|MediaChannel)}
46
+ */
47
+ get channel() {
48
+ return this.client.channels.cache.get(this.channelId) ?? null;
49
+ }
50
+
51
+ /**
52
+ * The emoji of this welcome channel
53
+ * @type {GuildEmoji|Emoji}
54
+ */
55
+ get emoji() {
56
+ return this.client.emojis.cache.get(this._emoji.id) ?? new Emoji(this.client, this._emoji);
57
+ }
58
+ }
59
+
60
+ module.exports = WelcomeChannel;
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const Base = require('./Base');
5
+ const WelcomeChannel = require('./WelcomeChannel');
6
+
7
+ /**
8
+ * Represents a welcome screen.
9
+ * @extends {Base}
10
+ */
11
+ class WelcomeScreen extends Base {
12
+ constructor(guild, data) {
13
+ super(guild.client);
14
+
15
+ /**
16
+ * The guild for this welcome screen
17
+ * @type {Guild}
18
+ */
19
+ this.guild = guild;
20
+
21
+ /**
22
+ * The description of this welcome screen
23
+ * @type {?string}
24
+ */
25
+ this.description = data.description ?? null;
26
+
27
+ /**
28
+ * Collection of welcome channels belonging to this welcome screen
29
+ * @type {Collection<Snowflake, WelcomeChannel>}
30
+ */
31
+ this.welcomeChannels = new Collection();
32
+
33
+ for (const channel of data.welcome_channels) {
34
+ const welcomeChannel = new WelcomeChannel(this.guild, channel);
35
+ this.welcomeChannels.set(welcomeChannel.channelId, welcomeChannel);
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Whether the welcome screen is enabled on the guild or not
41
+ * @type {boolean}
42
+ */
43
+ get enabled() {
44
+ return this.guild.features.includes('WELCOME_SCREEN_ENABLED');
45
+ }
46
+ }
47
+
48
+ module.exports = WelcomeScreen;
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const Base = require('./Base');
5
+ const WidgetMember = require('./WidgetMember');
6
+
7
+ /**
8
+ * Represents a Widget.
9
+ * @extends {Base}
10
+ */
11
+ class Widget extends Base {
12
+ constructor(client, data) {
13
+ super(client);
14
+ this._patch(data);
15
+ }
16
+
17
+ /**
18
+ * Represents a channel in a Widget
19
+ * @typedef {Object} WidgetChannel
20
+ * @property {Snowflake} id Id of the channel
21
+ * @property {string} name Name of the channel
22
+ * @property {number} position Position of the channel
23
+ */
24
+
25
+ _patch(data) {
26
+ /**
27
+ * The id of the guild.
28
+ * @type {Snowflake}
29
+ */
30
+ this.id = data.id;
31
+
32
+ if ('name' in data) {
33
+ /**
34
+ * The name of the guild.
35
+ * @type {string}
36
+ */
37
+ this.name = data.name;
38
+ }
39
+
40
+ if ('instant_invite' in data) {
41
+ /**
42
+ * The invite of the guild.
43
+ * @type {?string}
44
+ */
45
+ this.instantInvite = data.instant_invite;
46
+ }
47
+
48
+ /**
49
+ * The list of channels in the guild.
50
+ * @type {Collection<Snowflake, WidgetChannel>}
51
+ */
52
+ this.channels = new Collection();
53
+ for (const channel of data.channels) {
54
+ this.channels.set(channel.id, channel);
55
+ }
56
+
57
+ /**
58
+ * The list of members in the guild.
59
+ * These strings are just arbitrary numbers, they aren't Snowflakes.
60
+ * @type {Collection<string, WidgetMember>}
61
+ */
62
+ this.members = new Collection();
63
+ for (const member of data.members) {
64
+ this.members.set(member.id, new WidgetMember(this.client, member));
65
+ }
66
+
67
+ if ('presence_count' in data) {
68
+ /**
69
+ * The number of members online.
70
+ * @type {number}
71
+ */
72
+ this.presenceCount = data.presence_count;
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Update the Widget.
78
+ * @returns {Promise<Widget>}
79
+ */
80
+ async fetch() {
81
+ const data = await this.client.api.guilds(this.id, 'widget.json').get();
82
+ this._patch(data);
83
+ return this;
84
+ }
85
+ }
86
+
87
+ module.exports = Widget;