@ovencord/discord.js 14.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +148 -0
  3. package/package.json +73 -0
  4. package/src/client/Client.ts +967 -0
  5. package/src/client/actions/Action.ts +141 -0
  6. package/src/client/actions/ActionsManager.ts +138 -0
  7. package/src/client/actions/ChannelCreate.ts +21 -0
  8. package/src/client/actions/ChannelDelete.ts +20 -0
  9. package/src/client/actions/ChannelUpdate.ts +38 -0
  10. package/src/client/actions/GuildChannelsPositionUpdate.ts +17 -0
  11. package/src/client/actions/GuildEmojiCreate.ts +17 -0
  12. package/src/client/actions/GuildEmojiDelete.ts +16 -0
  13. package/src/client/actions/GuildEmojiUpdate.ts +17 -0
  14. package/src/client/actions/GuildEmojisUpdate.ts +30 -0
  15. package/src/client/actions/GuildMemberRemove.ts +29 -0
  16. package/src/client/actions/GuildMemberUpdate.ts +41 -0
  17. package/src/client/actions/GuildRoleCreate.ts +23 -0
  18. package/src/client/actions/GuildRoleDelete.ts +26 -0
  19. package/src/client/actions/GuildRolesPositionUpdate.ts +17 -0
  20. package/src/client/actions/GuildScheduledEventDelete.ts +28 -0
  21. package/src/client/actions/GuildScheduledEventUserAdd.ts +29 -0
  22. package/src/client/actions/GuildScheduledEventUserRemove.ts +29 -0
  23. package/src/client/actions/GuildSoundboardSoundDelete.ts +26 -0
  24. package/src/client/actions/GuildStickerCreate.ts +17 -0
  25. package/src/client/actions/GuildStickerDelete.ts +16 -0
  26. package/src/client/actions/GuildStickerUpdate.ts +17 -0
  27. package/src/client/actions/GuildStickersUpdate.ts +30 -0
  28. package/src/client/actions/GuildUpdate.ts +30 -0
  29. package/src/client/actions/InteractionCreate.ts +104 -0
  30. package/src/client/actions/MessageCreate.ts +38 -0
  31. package/src/client/actions/MessageDelete.ts +29 -0
  32. package/src/client/actions/MessageDeleteBulk.ts +45 -0
  33. package/src/client/actions/MessagePollVoteAdd.ts +37 -0
  34. package/src/client/actions/MessagePollVoteRemove.ts +35 -0
  35. package/src/client/actions/MessageReactionAdd.ts +68 -0
  36. package/src/client/actions/MessageReactionRemove.ts +47 -0
  37. package/src/client/actions/MessageReactionRemoveAll.ts +30 -0
  38. package/src/client/actions/MessageReactionRemoveEmoji.ts +25 -0
  39. package/src/client/actions/MessageUpdate.ts +22 -0
  40. package/src/client/actions/StageInstanceCreate.ts +25 -0
  41. package/src/client/actions/StageInstanceDelete.ts +28 -0
  42. package/src/client/actions/StageInstanceUpdate.ts +27 -0
  43. package/src/client/actions/ThreadCreate.ts +22 -0
  44. package/src/client/actions/ThreadMembersUpdate.ts +45 -0
  45. package/src/client/actions/TypingStart.ts +26 -0
  46. package/src/client/actions/UserUpdate.ts +33 -0
  47. package/src/client/voice/ClientVoiceManager.ts +46 -0
  48. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.ts +19 -0
  49. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.ts +17 -0
  50. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.ts +18 -0
  51. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.ts +21 -0
  52. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.ts +20 -0
  53. package/src/client/websocket/handlers/CHANNEL_CREATE.ts +4 -0
  54. package/src/client/websocket/handlers/CHANNEL_DELETE.ts +4 -0
  55. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.ts +22 -0
  56. package/src/client/websocket/handlers/CHANNEL_UPDATE.ts +16 -0
  57. package/src/client/websocket/handlers/ENTITLEMENT_CREATE.ts +14 -0
  58. package/src/client/websocket/handlers/ENTITLEMENT_DELETE.ts +18 -0
  59. package/src/client/websocket/handlers/ENTITLEMENT_UPDATE.ts +16 -0
  60. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.ts +19 -0
  61. package/src/client/websocket/handlers/GUILD_BAN_ADD.ts +15 -0
  62. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.ts +20 -0
  63. package/src/client/websocket/handlers/GUILD_CREATE.ts +34 -0
  64. package/src/client/websocket/handlers/GUILD_DELETE.ts +36 -0
  65. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.ts +4 -0
  66. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.ts +15 -0
  67. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.ts +40 -0
  68. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.ts +17 -0
  69. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.ts +4 -0
  70. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.ts +4 -0
  71. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.ts +4 -0
  72. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.ts +4 -0
  73. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.ts +21 -0
  74. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.ts +17 -0
  75. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.ts +4 -0
  76. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.ts +19 -0
  77. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.ts +4 -0
  78. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.ts +4 -0
  79. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.ts +24 -0
  80. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.ts +18 -0
  81. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.ts +4 -0
  82. package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.ts +20 -0
  83. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.ts +4 -0
  84. package/src/client/websocket/handlers/GUILD_UPDATE.ts +4 -0
  85. package/src/client/websocket/handlers/INTERACTION_CREATE.ts +4 -0
  86. package/src/client/websocket/handlers/INVITE_CREATE.ts +20 -0
  87. package/src/client/websocket/handlers/INVITE_DELETE.ts +23 -0
  88. package/src/client/websocket/handlers/MESSAGE_CREATE.ts +4 -0
  89. package/src/client/websocket/handlers/MESSAGE_DELETE.ts +4 -0
  90. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.ts +4 -0
  91. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.ts +4 -0
  92. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.ts +4 -0
  93. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.ts +4 -0
  94. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.ts +4 -0
  95. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.ts +4 -0
  96. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.ts +4 -0
  97. package/src/client/websocket/handlers/MESSAGE_UPDATE.ts +16 -0
  98. package/src/client/websocket/handlers/PRESENCE_UPDATE.ts +42 -0
  99. package/src/client/websocket/handlers/RATE_LIMITED.ts +23 -0
  100. package/src/client/websocket/handlers/READY.ts +29 -0
  101. package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.ts +24 -0
  102. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.ts +4 -0
  103. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.ts +4 -0
  104. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.ts +4 -0
  105. package/src/client/websocket/handlers/SUBSCRIPTION_CREATE.ts +14 -0
  106. package/src/client/websocket/handlers/SUBSCRIPTION_DELETE.ts +16 -0
  107. package/src/client/websocket/handlers/SUBSCRIPTION_UPDATE.ts +16 -0
  108. package/src/client/websocket/handlers/THREAD_CREATE.ts +4 -0
  109. package/src/client/websocket/handlers/THREAD_DELETE.ts +17 -0
  110. package/src/client/websocket/handlers/THREAD_LIST_SYNC.ts +50 -0
  111. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.ts +4 -0
  112. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.ts +25 -0
  113. package/src/client/websocket/handlers/THREAD_UPDATE.ts +16 -0
  114. package/src/client/websocket/handlers/TYPING_START.ts +4 -0
  115. package/src/client/websocket/handlers/USER_UPDATE.ts +4 -0
  116. package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.ts +16 -0
  117. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.ts +5 -0
  118. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.ts +37 -0
  119. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.ts +16 -0
  120. package/src/client/websocket/handlers/index.ts +74 -0
  121. package/src/errors/DJSError.ts +50 -0
  122. package/src/errors/ErrorCodes.ts +277 -0
  123. package/src/errors/Messages.ts +155 -0
  124. package/src/errors/index.ts +6 -0
  125. package/src/index.ts +241 -0
  126. package/src/managers/ApplicationCommandManager.ts +303 -0
  127. package/src/managers/ApplicationCommandPermissionsManager.ts +453 -0
  128. package/src/managers/ApplicationEmojiManager.ts +149 -0
  129. package/src/managers/AutoModerationRuleManager.ts +307 -0
  130. package/src/managers/BaseManager.ts +13 -0
  131. package/src/managers/CachedManager.ts +56 -0
  132. package/src/managers/CategoryChannelChildManager.ts +81 -0
  133. package/src/managers/ChannelManager.ts +194 -0
  134. package/src/managers/DMMessageManager.ts +15 -0
  135. package/src/managers/DataManager.ts +38 -0
  136. package/src/managers/EntitlementManager.ts +182 -0
  137. package/src/managers/GuildApplicationCommandManager.ts +29 -0
  138. package/src/managers/GuildBanManager.ts +221 -0
  139. package/src/managers/GuildChannelManager.ts +552 -0
  140. package/src/managers/GuildEmojiManager.ts +262 -0
  141. package/src/managers/GuildEmojiRoleManager.ts +134 -0
  142. package/src/managers/GuildForumThreadManager.ts +84 -0
  143. package/src/managers/GuildInviteManager.ts +236 -0
  144. package/src/managers/GuildManager.ts +265 -0
  145. package/src/managers/GuildMemberManager.ts +619 -0
  146. package/src/managers/GuildMemberRoleManager.ts +230 -0
  147. package/src/managers/GuildMessageManager.ts +31 -0
  148. package/src/managers/GuildScheduledEventManager.ts +330 -0
  149. package/src/managers/GuildSoundboardSoundManager.ts +157 -0
  150. package/src/managers/GuildStickerManager.ts +192 -0
  151. package/src/managers/GuildTextThreadManager.ts +91 -0
  152. package/src/managers/MessageManager.ts +352 -0
  153. package/src/managers/PartialGroupDMMessageManager.ts +15 -0
  154. package/src/managers/PermissionOverwriteManager.ts +174 -0
  155. package/src/managers/PollAnswerVoterManager.ts +59 -0
  156. package/src/managers/PresenceManager.ts +60 -0
  157. package/src/managers/ReactionManager.ts +72 -0
  158. package/src/managers/ReactionUserManager.ts +82 -0
  159. package/src/managers/RoleManager.ts +432 -0
  160. package/src/managers/StageInstanceManager.ts +166 -0
  161. package/src/managers/SubscriptionManager.ts +83 -0
  162. package/src/managers/ThreadManager.ts +210 -0
  163. package/src/managers/ThreadMemberManager.ts +194 -0
  164. package/src/managers/UserManager.ts +139 -0
  165. package/src/managers/VoiceStateManager.ts +61 -0
  166. package/src/sharding/Shard.ts +513 -0
  167. package/src/sharding/ShardClientUtil.ts +293 -0
  168. package/src/sharding/ShardingManager.ts +374 -0
  169. package/src/structures/ActionRow.ts +31 -0
  170. package/src/structures/AnnouncementChannel.ts +25 -0
  171. package/src/structures/AnonymousGuild.ts +110 -0
  172. package/src/structures/ApplicationCommand.ts +675 -0
  173. package/src/structures/ApplicationEmoji.ts +189 -0
  174. package/src/structures/ApplicationRoleConnectionMetadata.ts +54 -0
  175. package/src/structures/Attachment.ts +189 -0
  176. package/src/structures/AuthorizingIntegrationOwners.ts +63 -0
  177. package/src/structures/AutoModerationActionExecution.ts +138 -0
  178. package/src/structures/AutoModerationRule.ts +325 -0
  179. package/src/structures/AutocompleteInteraction.ts +115 -0
  180. package/src/structures/Base.ts +37 -0
  181. package/src/structures/BaseChannel.ts +188 -0
  182. package/src/structures/BaseGuild.ts +134 -0
  183. package/src/structures/BaseGuildEmoji.ts +113 -0
  184. package/src/structures/BaseGuildTextChannel.ts +230 -0
  185. package/src/structures/BaseGuildVoiceChannel.ts +270 -0
  186. package/src/structures/BaseInteraction.ts +393 -0
  187. package/src/structures/BaseInvite.ts +192 -0
  188. package/src/structures/BaseSelectMenuComponent.ts +58 -0
  189. package/src/structures/ButtonComponent.ts +68 -0
  190. package/src/structures/ButtonInteraction.ts +8 -0
  191. package/src/structures/CategoryChannel.ts +46 -0
  192. package/src/structures/ChannelSelectMenuComponent.ts +18 -0
  193. package/src/structures/ChannelSelectMenuInteraction.ts +34 -0
  194. package/src/structures/ChatInputCommandInteraction.ts +43 -0
  195. package/src/structures/ClientApplication.ts +470 -0
  196. package/src/structures/ClientPresence.ts +87 -0
  197. package/src/structures/ClientUser.ts +219 -0
  198. package/src/structures/CommandInteraction.ts +193 -0
  199. package/src/structures/CommandInteractionOptionResolver.ts +336 -0
  200. package/src/structures/Component.ts +59 -0
  201. package/src/structures/ContainerComponent.ts +63 -0
  202. package/src/structures/ContextMenuCommandInteraction.ts +68 -0
  203. package/src/structures/DMChannel.ts +148 -0
  204. package/src/structures/DirectoryChannel.ts +40 -0
  205. package/src/structures/Embed.ts +251 -0
  206. package/src/structures/Emoji.ts +61 -0
  207. package/src/structures/Entitlement.ts +206 -0
  208. package/src/structures/FileComponent.ts +41 -0
  209. package/src/structures/ForumChannel.ts +31 -0
  210. package/src/structures/GroupDMInvite.ts +34 -0
  211. package/src/structures/Guild.ts +1605 -0
  212. package/src/structures/GuildAuditLogs.ts +99 -0
  213. package/src/structures/GuildAuditLogsEntry.ts +557 -0
  214. package/src/structures/GuildBan.ts +65 -0
  215. package/src/structures/GuildChannel.ts +515 -0
  216. package/src/structures/GuildEmoji.ts +159 -0
  217. package/src/structures/GuildInvite.ts +233 -0
  218. package/src/structures/GuildMember.ts +643 -0
  219. package/src/structures/GuildOnboarding.ts +73 -0
  220. package/src/structures/GuildOnboardingPrompt.ts +93 -0
  221. package/src/structures/GuildOnboardingPromptOption.ts +100 -0
  222. package/src/structures/GuildPreview.ts +218 -0
  223. package/src/structures/GuildPreviewEmoji.ts +28 -0
  224. package/src/structures/GuildScheduledEvent.ts +593 -0
  225. package/src/structures/GuildTemplate.ts +229 -0
  226. package/src/structures/Integration.ts +257 -0
  227. package/src/structures/IntegrationApplication.ts +84 -0
  228. package/src/structures/InteractionCallback.ts +86 -0
  229. package/src/structures/InteractionCallbackResource.ts +57 -0
  230. package/src/structures/InteractionCallbackResponse.ts +35 -0
  231. package/src/structures/InteractionCollector.ts +260 -0
  232. package/src/structures/InteractionWebhook.ts +65 -0
  233. package/src/structures/InviteGuild.ts +22 -0
  234. package/src/structures/LabelComponent.ts +51 -0
  235. package/src/structures/MediaChannel.ts +8 -0
  236. package/src/structures/MediaGalleryComponent.ts +31 -0
  237. package/src/structures/MediaGalleryItem.ts +54 -0
  238. package/src/structures/MentionableSelectMenuComponent.ts +8 -0
  239. package/src/structures/MentionableSelectMenuInteraction.ts +76 -0
  240. package/src/structures/Message.ts +1202 -0
  241. package/src/structures/MessageCollector.ts +155 -0
  242. package/src/structures/MessageComponentInteraction.ts +132 -0
  243. package/src/structures/MessageContextMenuCommandInteraction.ts +18 -0
  244. package/src/structures/MessageMentions.ts +327 -0
  245. package/src/structures/MessagePayload.ts +325 -0
  246. package/src/structures/MessageReaction.ts +219 -0
  247. package/src/structures/ModalComponentResolver.ts +237 -0
  248. package/src/structures/ModalSubmitInteraction.ts +260 -0
  249. package/src/structures/OAuth2Guild.ts +30 -0
  250. package/src/structures/PartialGroupDMChannel.ts +151 -0
  251. package/src/structures/PermissionOverwrites.ts +222 -0
  252. package/src/structures/Poll.ts +195 -0
  253. package/src/structures/PollAnswer.ts +100 -0
  254. package/src/structures/Presence.ts +448 -0
  255. package/src/structures/PrimaryEntryPointCommandInteraction.ts +8 -0
  256. package/src/structures/ReactionCollector.ts +245 -0
  257. package/src/structures/ReactionEmoji.ts +30 -0
  258. package/src/structures/Role.ts +543 -0
  259. package/src/structures/RoleSelectMenuComponent.ts +8 -0
  260. package/src/structures/RoleSelectMenuInteraction.ts +34 -0
  261. package/src/structures/SKU.ts +62 -0
  262. package/src/structures/SectionComponent.ts +44 -0
  263. package/src/structures/SeparatorComponent.ts +29 -0
  264. package/src/structures/SoundboardSound.ts +176 -0
  265. package/src/structures/StageChannel.ts +118 -0
  266. package/src/structures/StageInstance.ts +173 -0
  267. package/src/structures/Sticker.ts +300 -0
  268. package/src/structures/StickerPack.ts +111 -0
  269. package/src/structures/StringSelectMenuComponent.ts +18 -0
  270. package/src/structures/StringSelectMenuInteraction.ts +21 -0
  271. package/src/structures/Subscription.ts +138 -0
  272. package/src/structures/Team.ts +131 -0
  273. package/src/structures/TeamMember.ts +77 -0
  274. package/src/structures/TextChannel.ts +33 -0
  275. package/src/structures/TextDisplayComponent.ts +18 -0
  276. package/src/structures/TextInputComponent.ts +28 -0
  277. package/src/structures/ThreadChannel.ts +680 -0
  278. package/src/structures/ThreadMember.ts +125 -0
  279. package/src/structures/ThreadOnlyChannel.ts +276 -0
  280. package/src/structures/ThumbnailComponent.ts +51 -0
  281. package/src/structures/Typing.ts +81 -0
  282. package/src/structures/UnfurledMediaItem.ts +33 -0
  283. package/src/structures/User.ts +511 -0
  284. package/src/structures/UserContextMenuCommandInteraction.ts +28 -0
  285. package/src/structures/UserSelectMenuComponent.ts +8 -0
  286. package/src/structures/UserSelectMenuInteraction.ts +54 -0
  287. package/src/structures/VoiceChannel.ts +119 -0
  288. package/src/structures/VoiceChannelEffect.ts +92 -0
  289. package/src/structures/VoiceRegion.ts +52 -0
  290. package/src/structures/VoiceState.ts +346 -0
  291. package/src/structures/Webhook.ts +526 -0
  292. package/src/structures/WelcomeChannel.ts +67 -0
  293. package/src/structures/WelcomeScreen.ts +53 -0
  294. package/src/structures/Widget.ts +110 -0
  295. package/src/structures/WidgetMember.ts +124 -0
  296. package/src/structures/interfaces/Application.ts +179 -0
  297. package/src/structures/interfaces/Collector.ts +372 -0
  298. package/src/structures/interfaces/InteractionResponses.ts +384 -0
  299. package/src/structures/interfaces/TextBasedChannel.ts +430 -0
  300. package/src/util/APITypes.ts +690 -0
  301. package/src/util/ActivityFlagsBitField.ts +26 -0
  302. package/src/util/ApplicationFlagsBitField.ts +43 -0
  303. package/src/util/AttachmentFlagsBitField.ts +26 -0
  304. package/src/util/BitField.ts +178 -0
  305. package/src/util/ChannelFlagsBitField.ts +43 -0
  306. package/src/util/Channels.ts +165 -0
  307. package/src/util/Colors.ts +72 -0
  308. package/src/util/Components.ts +285 -0
  309. package/src/util/Constants.ts +251 -0
  310. package/src/util/DataResolver.ts +146 -0
  311. package/src/util/Enums.ts +10 -0
  312. package/src/util/Events.ts +178 -0
  313. package/src/util/GuildMemberFlagsBitField.ts +43 -0
  314. package/src/util/IntentsBitField.ts +35 -0
  315. package/src/util/InviteFlagsBitField.ts +26 -0
  316. package/src/util/Invites.ts +27 -0
  317. package/src/util/LimitedCollection.ts +73 -0
  318. package/src/util/MessageFlagsBitField.ts +43 -0
  319. package/src/util/Options.ts +215 -0
  320. package/src/util/Partials.ts +50 -0
  321. package/src/util/PermissionsBitField.ts +113 -0
  322. package/src/util/RoleFlagsBitField.ts +26 -0
  323. package/src/util/SKUFlagsBitField.ts +26 -0
  324. package/src/util/ShardEvents.ts +26 -0
  325. package/src/util/Status.ts +16 -0
  326. package/src/util/Sweepers.ts +532 -0
  327. package/src/util/Symbols.ts +1 -0
  328. package/src/util/SystemChannelFlagsBitField.ts +45 -0
  329. package/src/util/ThreadMemberFlagsBitField.ts +33 -0
  330. package/src/util/Transformers.ts +123 -0
  331. package/src/util/UserFlagsBitField.ts +33 -0
  332. package/src/util/Util.ts +519 -0
@@ -0,0 +1,134 @@
1
+ import { makeURLSearchParams } from '@ovencord/rest';
2
+ import { DiscordSnowflake } from '@sapphire/snowflake';
3
+ import { Routes, GuildFeature } from 'discord-api-types/v10';
4
+ import { Base } from './Base.js';
5
+
6
+ /**
7
+ * The base class for {@link Guild}, {@link OAuth2Guild} and {@link InviteGuild}.
8
+ *
9
+ * @extends {Base}
10
+ * @abstract
11
+ */
12
+ export class BaseGuild extends Base {
13
+ public client: any;
14
+ public id: any;
15
+ public name: any;
16
+ public features: any;
17
+ constructor(client, data) {
18
+ super(client);
19
+
20
+ /**
21
+ * The guild's id
22
+ *
23
+ * @type {Snowflake}
24
+ */
25
+ this.id = data.id;
26
+
27
+ /**
28
+ * The name of this guild
29
+ *
30
+ * @type {string}
31
+ */
32
+ this.name = data.name;
33
+
34
+ /**
35
+ * The icon hash of this guild
36
+ *
37
+ * @type {?string}
38
+ */
39
+ this.icon = data.icon;
40
+
41
+ /**
42
+ * An array of features available to this guild
43
+ *
44
+ * @type {GuildFeature[]}
45
+ */
46
+ this.features = data.features;
47
+ }
48
+
49
+ /**
50
+ * The timestamp this guild was created at
51
+ *
52
+ * @type {number}
53
+ * @readonly
54
+ */
55
+ get createdTimestamp() {
56
+ return DiscordSnowflake.timestampFrom(this.id);
57
+ }
58
+
59
+ /**
60
+ * The time this guild was created at
61
+ *
62
+ * @type {Date}
63
+ * @readonly
64
+ */
65
+ get createdAt() {
66
+ return new Date(this.createdTimestamp);
67
+ }
68
+
69
+ /**
70
+ * The acronym that shows up in place of a guild icon
71
+ *
72
+ * @type {string}
73
+ * @readonly
74
+ */
75
+ get nameAcronym() {
76
+ /* eslint-disable unicor */
77
+ return this.name
78
+ .replace(/'s /g, ' ')
79
+ .replace(/\w+/g, word => word[0])
80
+ .replace(/\s/g, '');
81
+ /* eslint-enable unicorn/prefer-string-replace-all */
82
+ }
83
+
84
+ /**
85
+ * Whether this guild is partnered
86
+ *
87
+ * @type {boolean}
88
+ * @readonly
89
+ */
90
+ get partnered() {
91
+ return this.features.includes(GuildFeature.Partnered);
92
+ }
93
+
94
+ /**
95
+ * Whether this guild is verified
96
+ *
97
+ * @type {boolean}
98
+ * @readonly
99
+ */
100
+ get verified() {
101
+ return this.features.includes(GuildFeature.Verified);
102
+ }
103
+
104
+ /**
105
+ * The URL to this guild's icon.
106
+ *
107
+ * @param {ImageURLOptions} [options={}] Options for the image URL
108
+ * @returns {?string}
109
+ */
110
+ iconURL(options = {}) {
111
+ return this.icon && this.client.rest.cdn.icon(this.id, this.icon, options);
112
+ }
113
+
114
+ /**
115
+ * Fetches this guild.
116
+ *
117
+ * @returns {Promise<Guild>}
118
+ */
119
+ async fetch() {
120
+ const data = await this.client.rest.get(Routes.guild(this.id), {
121
+ query: makeURLSearchParams({ with_counts: true }),
122
+ });
123
+ return this.client.guilds._add(data);
124
+ }
125
+
126
+ /**
127
+ * When concatenated with a string, this automatically returns the guild's name instead of the Guild object.
128
+ *
129
+ * @returns {string}
130
+ */
131
+ toString() {
132
+ return this.name;
133
+ }
134
+ }
@@ -0,0 +1,113 @@
1
+ import { Emoji } from './Emoji.js';
2
+
3
+ /**
4
+ * Parent class for {@link GuildEmoji} and {@link GuildPreviewEmoji}.
5
+ *
6
+ * @extends {Emoji}
7
+ * @abstract
8
+ */
9
+ export class BaseGuildEmoji extends Emoji {
10
+ public client: any;
11
+ public guild: any;
12
+ public requiresColons: any;
13
+ public managed: any;
14
+ public available: any;
15
+ public name: any;
16
+ constructor(client, data, guild) {
17
+ super(client, data);
18
+
19
+ /**
20
+ * The guild this emoji is a part of
21
+ *
22
+ * @type {Guild|GuildPreview}
23
+ */
24
+ this.guild = guild;
25
+
26
+ this.requiresColons = null;
27
+ this.managed = null;
28
+ this.available = null;
29
+
30
+ this._patch(data);
31
+ }
32
+
33
+ _patch(data) {
34
+ if ('name' in data) this.name = data.name;
35
+
36
+ if ('require_colons' in data) {
37
+ /**
38
+ * Whether or not this emoji requires colons surrounding it
39
+ *
40
+ * @type {?boolean}
41
+ */
42
+ this.requiresColons = data.require_colons;
43
+ }
44
+
45
+ if ('managed' in data) {
46
+ /**
47
+ * Whether this emoji is managed by an external service
48
+ *
49
+ * @type {?boolean}
50
+ */
51
+ this.managed = data.managed;
52
+ }
53
+
54
+ if ('available' in data) {
55
+ /**
56
+ * Whether this emoji is available
57
+ *
58
+ * @type {?boolean}
59
+ */
60
+ this.available = data.available;
61
+ }
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Returns a URL for the emoji.
67
+ *
68
+ * @method imageURL
69
+ * @memberof BaseGuildEmoji
70
+ * @instance
71
+ * @param {EmojiURLOptions} [options={}] Options for the emoji URL
72
+ * @returns {string}
73
+ */
74
+
75
+ /**
76
+ * The emoji's name
77
+ *
78
+ * @name name
79
+ * @memberof BaseGuildEmoji
80
+ * @instance
81
+ * @type {string}
82
+ * @readonly
83
+ */
84
+
85
+ /**
86
+ * Whether or not the emoji is animated
87
+ *
88
+ * @name animated
89
+ * @memberof BaseGuildEmoji
90
+ * @instance
91
+ * @type {boolean}
92
+ * @readonly
93
+ */
94
+
95
+ /**
96
+ * The time the emoji was created at.
97
+ *
98
+ * @name createdAt
99
+ * @memberof BaseGuildEmoji
100
+ * @instance
101
+ * @type {Date}
102
+ * @readonly
103
+ */
104
+
105
+ /**
106
+ * The timestamp the emoji was created at.
107
+ *
108
+ * @name createdTimestamp
109
+ * @memberof BaseGuildEmoji
110
+ * @instance
111
+ * @type {number}
112
+ * @readonly
113
+ */
@@ -0,0 +1,230 @@
1
+ import { GuildMessageManager } from '../managers/GuildMessageManager.js';
2
+ import { GuildTextThreadManager } from '../managers/GuildTextThreadManager.js';
3
+ import { GuildChannel } from './GuildChannel.js';
4
+ import { TextBasedChannel } from './interfaces/TextBasedChannel.js';
5
+
6
+ /**
7
+ * Represents a text-based guild channel on Discord.
8
+ *
9
+ * @extends {GuildChannel}
10
+ * @implements {TextBasedChannel}
11
+ */
12
+ export class BaseGuildTextChannel extends GuildChannel {
13
+ public client: any;
14
+ public messages: any;
15
+ public threads: any;
16
+ public nsfw: any;
17
+ public topic: any;
18
+ public lastMessageId: any;
19
+ public lastPinTimestamp: any;
20
+ public defaultAutoArchiveDuration: any;
21
+ public defaultThreadRateLimitPerUser: any;
22
+ constructor(guild, data, client) {
23
+ super(guild, data, client, false);
24
+
25
+ /**
26
+ * A manager of the messages sent to this channel
27
+ *
28
+ * @type {GuildMessageManager}
29
+ */
30
+ this.messages = new GuildMessageManager(this);
31
+
32
+ /**
33
+ * A manager of the threads belonging to this channel
34
+ *
35
+ * @type {GuildTextThreadManager}
36
+ */
37
+ this.threads = new GuildTextThreadManager(this);
38
+
39
+ /**
40
+ * If the guild considers this channel NSFW
41
+ *
42
+ * @type {boolean}
43
+ */
44
+ this.nsfw = Boolean(data.nsfw);
45
+
46
+ this._patch(data);
47
+ }
48
+
49
+ _patch(data) {
50
+ super._patch(data);
51
+
52
+ if ('topic' in data) {
53
+ /**
54
+ * The topic of the text channel
55
+ *
56
+ * @type {?string}
57
+ */
58
+ this.topic = data.topic;
59
+ }
60
+
61
+ if ('nsfw' in data) {
62
+ this.nsfw = Boolean(data.nsfw);
63
+ }
64
+
65
+ if ('last_message_id' in data) {
66
+ /**
67
+ * The last message id sent in the channel, if one was sent
68
+ *
69
+ * @type {?Snowflake}
70
+ */
71
+ this.lastMessageId = data.last_message_id;
72
+ }
73
+
74
+ if ('last_pin_timestamp' in data) {
75
+ /**
76
+ * The timestamp when the last pinned message was pinned, if there was one
77
+ *
78
+ * @type {?number}
79
+ */
80
+ this.lastPinTimestamp = data.last_pin_timestamp ? Date.parse(data.last_pin_timestamp) : null;
81
+ }
82
+
83
+ if ('default_auto_archive_duration' in data) {
84
+ /**
85
+ * The default auto archive duration for newly created threads in this channel
86
+ *
87
+ * @type {?ThreadAutoArchiveDuration}
88
+ */
89
+ this.defaultAutoArchiveDuration = data.default_auto_archive_duration;
90
+ }
91
+
92
+ if ('default_thread_rate_limit_per_user' in data) {
93
+ /**
94
+ * The initial rate limit per user (slowmode) to set on newly created threads in a channel.
95
+ *
96
+ * @type {?number}
97
+ */
98
+ this.defaultThreadRateLimitPerUser = data.default_thread_rate_limit_per_user;
99
+ } else {
100
+ this.defaultThreadRateLimitPerUser ??= null;
101
+ }
102
+
103
+ if ('messages' in data) {
104
+ for (const message of data.messages) this.messages._add(message);
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Sets the default auto archive duration for all newly created threads in this channel.
110
+ *
111
+ * @param {ThreadAutoArchiveDuration} defaultAutoArchiveDuration The new default auto archive duration
112
+ * @param {string} [reason] Reason for changing the channel's default auto archive duration
113
+ * @returns {Promise<TextChannel>}
114
+ */
115
+ async setDefaultAutoArchiveDuration(defaultAutoArchiveDuration, reason) {
116
+ return this.edit({ defaultAutoArchiveDuration, reason });
117
+ }
118
+
119
+ /**
120
+ * Sets the type of this channel.
121
+ * <info>Only conversion between {@link TextChannel} and {@link AnnouncementChannel} is supported.</info>
122
+ *
123
+ * @param {ChannelType.GuildText|ChannelType.GuildAnnouncement} type The new channel type
124
+ * @param {string} [reason] Reason for changing the channel's type
125
+ * @returns {Promise<GuildChannel>}
126
+ */
127
+ async setType(type, reason) {
128
+ return this.edit({ type, reason });
129
+ }
130
+
131
+ /**
132
+ * Sets a new topic for the guild channel.
133
+ *
134
+ * @param {?string} topic The new topic for the guild channel
135
+ * @param {string} [reason] Reason for changing the guild channel's topic
136
+ * @returns {Promise<GuildChannel>}
137
+ * @example
138
+ * // Set a new channel topic
139
+ * channel.setTopic('needs more rate limiting')
140
+ * .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))
141
+ * .catch(console.error);
142
+ */
143
+ async setTopic(topic, reason) {
144
+ return this.edit({ topic, reason });
145
+ }
146
+
147
+ /**
148
+ * Data that can be resolved to an Application. This can be:
149
+ * - An Application
150
+ * - An Activity with associated Application
151
+ * - A Snowflake
152
+ *
153
+ * @typedef {Application|Snowflake} ApplicationResolvable
154
+ */
155
+
156
+ /**
157
+ * Options used to create an invite to a guild channel.
158
+ *
159
+ * @typedef {Object} InviteCreateOptions
160
+ * @property {boolean} [temporary] Whether members that joined via the invite should be automatically
161
+ * kicked after 24 hours if they have not yet received a role
162
+ * @property {number} [maxAge] How long the invite should last (in seconds, 0 for forever)
163
+ * @property {number} [maxUses] Maximum number of uses
164
+ * @property {boolean} [unique] Create a unique invite, or use an existing one with similar settings
165
+ * @property {UserResolvable} [targetUser] The user whose stream to display for this invite,
166
+ * required if `targetType` is {@link InviteTargetType.Stream}, the user must be streaming in the channel
167
+ * @property {ApplicationResolvable} [targetApplication] The embedded application to open for this invite,
168
+ * required if `targetType` is {@link InviteTargetType.Stream}, the application must have the
169
+ * {@link InviteTargetType.EmbeddedApplication} flag
170
+ * @property {InviteTargetType} [targetType] The type of the target for this voice channel invite
171
+ * @property {string} [reason] The reason for creating the invite
172
+ */
173
+
174
+ /**
175
+ * Creates an invite to this guild channel.
176
+ *
177
+ * @param {InviteCreateOptions} [options={}] The options for creating the invite
178
+ * @returns {Promise<Invite>}
179
+ * @example
180
+ * // Create an invite to a channel
181
+ * channel.createInvite()
182
+ * .then(invite => console.log(`Created an invite with a code of ${invite.code}`))
183
+ * .catch(console.error);
184
+ */
185
+ async createInvite(options) {
186
+ return this.guild.invites.create(this.id, options);
187
+ }
188
+
189
+ /**
190
+ * Fetches a collection of invites to this guild channel.
191
+ * Resolves with a collection mapping invites by their codes.
192
+ *
193
+ * @param {boolean} [cache=true] Whether or not to cache the fetched invites
194
+ * @returns {Promise<Collection<string, Invite>>}
195
+ */
196
+ async fetchInvites(cache = true) {
197
+ return this.guild.invites.fetch({ channelId: this.id, cache });
198
+ }
199
+
200
+ // These are here only for documentation purposes - they are implemented by TextBasedChannel
201
+
202
+ /* eslint-disable getter-return */
203
+ get lastMessage() {}
204
+
205
+ get lastPinAt() {}
206
+
207
+ send() {}
208
+
209
+ sendTyping() {}
210
+
211
+ createMessageCollector() {}
212
+
213
+ awaitMessages() {}
214
+
215
+ createMessageComponentCollector() {}
216
+
217
+ awaitMessageComponent() {}
218
+
219
+ bulkDelete() {}
220
+
221
+ fetchWebhooks() {}
222
+
223
+ createWebhook() {}
224
+
225
+ setRateLimitPerUser() {}
226
+
227
+ setNSFW() {}
228
+ }
229
+
230
+ TextBasedChannel.applyToClass(BaseGuildTextChannel);