@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,65 @@
1
+ import { Base } from './Base.js';
2
+
3
+ /**
4
+ * Represents a ban in a guild on Discord.
5
+ *
6
+ * @extends {Base}
7
+ */
8
+ export class GuildBan extends Base {
9
+ public client: any;
10
+ public guild: any;
11
+ public user: any;
12
+ public reason: any;
13
+ constructor(client, data, guild) {
14
+ super(client);
15
+
16
+ /**
17
+ * The guild in which the ban is
18
+ *
19
+ * @type {Guild}
20
+ */
21
+ this.guild = guild;
22
+
23
+ this._patch(data);
24
+ }
25
+
26
+ _patch(data) {
27
+ if ('user' in data) {
28
+ /**
29
+ * The user this ban applies to
30
+ *
31
+ * @type {User}
32
+ */
33
+ this.user = this.client.users._add(data.user, true);
34
+ }
35
+
36
+ if ('reason' in data) {
37
+ /**
38
+ * The reason for the ban
39
+ *
40
+ * @type {?string}
41
+ */
42
+ this.reason = data.reason;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Whether this GuildBan is partial. If the reason is not provided the value is null
48
+ *
49
+ * @type {boolean}
50
+ * @readonly
51
+ */
52
+ get partial() {
53
+ return !('reason' in this);
54
+ }
55
+
56
+ /**
57
+ * Fetches this GuildBan.
58
+ *
59
+ * @param {boolean} [force=true] Whether to skip the cache check and request the API
60
+ * @returns {Promise<GuildBan>}
61
+ */
62
+ async fetch(force = true) {
63
+ return this.guild.bans.fetch({ user: this.user, cache: true, force });
64
+ }
65
+ }
@@ -0,0 +1,515 @@
1
+ import { Snowflake } from '@sapphire/snowflake';
2
+ import { PermissionFlagsBits, ChannelType } from 'discord-api-types/v10';
3
+ import { DiscordjsError, ErrorCodes } from '../errors/index.js';
4
+ import { PermissionOverwriteManager } from '../managers/PermissionOverwriteManager.js';
5
+ import { VoiceBasedChannelTypes } from '../util/Constants.js';
6
+ import { PermissionsBitField } from '../util/PermissionsBitField.js';
7
+ import { getSortableGroupTypes } from '../util/Util.js';
8
+ import { BaseChannel } from './BaseChannel.js';
9
+
10
+ /**
11
+ * Represents a guild channel from any of the following:
12
+ * - {@link TextChannel}
13
+ * - {@link VoiceChannel}
14
+ * - {@link CategoryChannel}
15
+ * - {@link AnnouncementChannel}
16
+ * - {@link StageChannel}
17
+ * - {@link ForumChannel}
18
+ * - {@link MediaChannel}
19
+ *
20
+ * @extends {BaseChannel}
21
+ * @abstract
22
+ */
23
+ export class GuildChannel extends BaseChannel {
24
+ public client: any;
25
+ public guild: any;
26
+ public guildId: any;
27
+ public permissionOverwrites: any;
28
+ public name: any;
29
+ public rawPosition: any;
30
+ public parentId: any;
31
+ public type: any;
32
+ public id: any;
33
+ public topic: any;
34
+ constructor(guild, data, client, immediatePatch = true) {
35
+ super(client, data, false);
36
+
37
+ /**
38
+ * The guild the channel is in
39
+ *
40
+ * @type {Guild}
41
+ */
42
+ this.guild = guild;
43
+
44
+ /**
45
+ * The id of the guild the channel is in
46
+ *
47
+ * @type {Snowflake}
48
+ */
49
+ this.guildId = guild?.id ?? data.guild_id;
50
+ /**
51
+ * A manager of permission overwrites that belong to this channel
52
+ *
53
+ * @type {PermissionOverwriteManager}
54
+ */
55
+ this.permissionOverwrites = new PermissionOverwriteManager(this);
56
+
57
+ if (data && immediatePatch) this._patch(data);
58
+ }
59
+
60
+ _patch(data) {
61
+ super._patch(data);
62
+
63
+ if ('name' in data) {
64
+ /**
65
+ * The name of the guild channel
66
+ *
67
+ * @type {string}
68
+ */
69
+ this.name = data.name;
70
+ }
71
+
72
+ if ('position' in data) {
73
+ /**
74
+ * The raw position of the channel from Discord
75
+ *
76
+ * @type {number}
77
+ */
78
+ this.rawPosition = data.position;
79
+ }
80
+
81
+ if ('guild_id' in data) {
82
+ this.guildId = data.guild_id;
83
+ }
84
+
85
+ if ('parent_id' in data) {
86
+ /**
87
+ * The id of the category parent of this channel
88
+ *
89
+ * @type {?Snowflake}
90
+ */
91
+ this.parentId = data.parent_id;
92
+ } else {
93
+ this.parentId ??= null;
94
+ }
95
+
96
+ if ('permission_overwrites' in data) {
97
+ this.permissionOverwrites.cache.clear();
98
+ for (const overwrite of data.permission_overwrites) {
99
+ this.permissionOverwrites._add(overwrite);
100
+ }
101
+ }
102
+ }
103
+
104
+ _clone() {
105
+ const clone = super._clone();
106
+ clone.permissionOverwrites = new PermissionOverwriteManager(clone, this.permissionOverwrites.cache.values());
107
+ return clone;
108
+ }
109
+
110
+ /**
111
+ * The category parent of this channel
112
+ *
113
+ * @type {?CategoryChannel}
114
+ * @readonly
115
+ */
116
+ get parent() {
117
+ return this.guild.channels.resolve(this.parentId);
118
+ }
119
+
120
+ /**
121
+ * If the permissionOverwrites match the parent channel, null if no parent
122
+ *
123
+ * @type {?boolean}
124
+ * @readonly
125
+ */
126
+ get permissionsLocked() {
127
+ if (!this.parent) return null;
128
+
129
+ // Get all overwrites
130
+ const overwriteIds = new Set([
131
+ ...this.permissionOverwrites.cache.keys(),
132
+ ...this.parent.permissionOverwrites.cache.keys(),
133
+ ]);
134
+
135
+ // Compare all overwrites
136
+ return [...overwriteIds].every(key => {
137
+ const channelVal = this.permissionOverwrites.cache.get(key);
138
+ const parentVal = this.parent.permissionOverwrites.cache.get(key);
139
+
140
+ // Handle empty overwrite
141
+ if (
142
+ (!channelVal &&
143
+ parentVal.deny.bitfield === PermissionsBitField.DefaultBit &&
144
+ parentVal.allow.bitfield === PermissionsBitField.DefaultBit) ||
145
+ (!parentVal &&
146
+ channelVal.deny.bitfield === PermissionsBitField.DefaultBit &&
147
+ channelVal.allow.bitfield === PermissionsBitField.DefaultBit)
148
+ ) {
149
+ return true;
150
+ }
151
+
152
+ // Compare overwrites
153
+ return (
154
+ channelVal !== undefined &&
155
+ parentVal !== undefined &&
156
+ channelVal.deny.bitfield === parentVal.deny.bitfield &&
157
+ channelVal.allow.bitfield === parentVal.allow.bitfield
158
+ );
159
+ });
160
+ }
161
+
162
+ /**
163
+ * The position of the channel
164
+ *
165
+ * @type {number}
166
+ * @readonly
167
+ */
168
+ get position() {
169
+ const selfIsCategory = this.type === ChannelType.GuildCategory;
170
+ const types = getSortableGroupTypes(this.type);
171
+
172
+ let count = 0;
173
+ for (const channel of this.guild.channels.cache.values()) {
174
+ if (!types.includes(channel.type)) continue;
175
+ if (!selfIsCategory && channel.parentId !== this.parentId) continue;
176
+ if (this.rawPosition === channel.rawPosition) {
177
+ if (Snowflake.compare(channel.id, this.id) === -1) count++;
178
+ } else if (this.rawPosition > channel.rawPosition) {
179
+ count++;
180
+ }
181
+ }
182
+
183
+ return count;
184
+ }
185
+
186
+ /**
187
+ * Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.
188
+ *
189
+ * @param {UserResolvable|RoleResolvable} memberOrRole The member or role to obtain the overall permissions for
190
+ * @param {boolean} [checkAdmin=true] Whether having the {@link PermissionFlagsBits.Administrator} permission
191
+ * will return all permissions
192
+ * @returns {?Readonly<PermissionsBitField>}
193
+ */
194
+ permissionsFor(memberOrRole, checkAdmin = true) {
195
+ const member = this.guild.members.resolve(memberOrRole);
196
+ if (member) return this.memberPermissions(member, checkAdmin);
197
+ const role = this.guild.roles.resolve(memberOrRole);
198
+ return role && this.rolePermissions(role, checkAdmin);
199
+ }
200
+
201
+ overwritesFor(member, verified = false, roles = null) {
202
+ const resolvedMember = verified ? member : this.guild.members.resolve(member);
203
+ if (!resolvedMember) return [];
204
+
205
+ const resolvedRoles = roles ?? resolvedMember.roles.cache;
206
+ const roleOverwrites = [];
207
+ let memberOverwrites;
208
+ let everyoneOverwrites;
209
+
210
+ for (const overwrite of this.permissionOverwrites.cache.values()) {
211
+ if (overwrite.id === this.guild.id) {
212
+ everyoneOverwrites = overwrite;
213
+ } else if (resolvedRoles.has(overwrite.id)) {
214
+ roleOverwrites.push(overwrite);
215
+ } else if (overwrite.id === resolvedMember.id) {
216
+ memberOverwrites = overwrite;
217
+ }
218
+ }
219
+
220
+ return {
221
+ everyone: everyoneOverwrites,
222
+ roles: roleOverwrites,
223
+ member: memberOverwrites,
224
+ };
225
+ }
226
+
227
+ /**
228
+ * Gets the overall set of permissions for a member in this channel, taking into account channel overwrites.
229
+ *
230
+ * @param {GuildMember} member The member to obtain the overall permissions for
231
+ * @param {boolean} checkAdmin Whether having the {@link PermissionFlagsBits.Administrator} permission
232
+ * will return all permissions
233
+ * @returns {Readonly<PermissionsBitField>}
234
+ * @private
235
+ */
236
+ memberPermissions(member, checkAdmin) {
237
+ if (checkAdmin && member.id === this.guild.ownerId) {
238
+ return new PermissionsBitField(PermissionsBitField.All).freeze();
239
+ }
240
+
241
+ const roles = member.roles.cache;
242
+ const permissions = new PermissionsBitField(roles.map(role => role.permissions));
243
+
244
+ if (checkAdmin && permissions.has(PermissionFlagsBits.Administrator)) {
245
+ return new PermissionsBitField(PermissionsBitField.All).freeze();
246
+ }
247
+
248
+ const overwrites = this.overwritesFor(member, true, roles);
249
+
250
+ return permissions
251
+ .remove(overwrites.everyone?.deny ?? PermissionsBitField.DefaultBit)
252
+ .add(overwrites.everyone?.allow ?? PermissionsBitField.DefaultBit)
253
+ .remove(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.deny) : PermissionsBitField.DefaultBit)
254
+ .add(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.allow) : PermissionsBitField.DefaultBit)
255
+ .remove(overwrites.member?.deny ?? PermissionsBitField.DefaultBit)
256
+ .add(overwrites.member?.allow ?? PermissionsBitField.DefaultBit)
257
+ .freeze();
258
+ }
259
+
260
+ /**
261
+ * Gets the overall set of permissions for a role in this channel, taking into account channel overwrites.
262
+ *
263
+ * @param {Role} role The role to obtain the overall permissions for
264
+ * @param {boolean} checkAdmin Whether having the {@link PermissionFlagsBits.Administrator} permission
265
+ * will return all permissions
266
+ * @returns {Readonly<PermissionsBitField>}
267
+ * @private
268
+ */
269
+ rolePermissions(role, checkAdmin) {
270
+ if (checkAdmin && role.permissions.has(PermissionFlagsBits.Administrator)) {
271
+ return new PermissionsBitField(PermissionsBitField.All).freeze();
272
+ }
273
+
274
+ const basePermissions = new PermissionsBitField([role.permissions, role.guild.roles.everyone.permissions]);
275
+ const everyoneOverwrites = this.permissionOverwrites.cache.get(this.guild.id);
276
+ const roleOverwrites = this.permissionOverwrites.cache.get(role.id);
277
+
278
+ return basePermissions
279
+ .remove(everyoneOverwrites?.deny ?? PermissionsBitField.DefaultBit)
280
+ .add(everyoneOverwrites?.allow ?? PermissionsBitField.DefaultBit)
281
+ .remove(roleOverwrites?.deny ?? PermissionsBitField.DefaultBit)
282
+ .add(roleOverwrites?.allow ?? PermissionsBitField.DefaultBit)
283
+ .freeze();
284
+ }
285
+
286
+ /**
287
+ * Locks in the permission overwrites from the parent channel.
288
+ *
289
+ * @returns {Promise<GuildChannel>}
290
+ */
291
+ async lockPermissions() {
292
+ if (!this.parent) throw new DiscordjsError(ErrorCodes.GuildChannelOrphan);
293
+ const permissionOverwrites = this.parent.permissionOverwrites.cache.map(overwrite => overwrite.toJSON());
294
+ return this.edit({ permissionOverwrites });
295
+ }
296
+
297
+ /**
298
+ * A collection of cached members of this channel, mapped by their ids.
299
+ * Members that can view this channel, if the channel is text-based.
300
+ * Members in the channel, if the channel is voice-based.
301
+ *
302
+ * @type {Collection<Snowflake, GuildMember>}
303
+ * @readonly
304
+ */
305
+ get members() {
306
+ return this.guild.members.cache.filter(member =>
307
+ this.permissionsFor(member).has(PermissionFlagsBits.ViewChannel, false),
308
+ );
309
+ }
310
+
311
+ /**
312
+ * Edits the channel.
313
+ *
314
+ * @param {GuildChannelEditOptions} options The options to provide
315
+ * @returns {Promise<GuildChannel>}
316
+ * @example
317
+ * // Edit a channel
318
+ * channel.edit({ name: 'new-channel' })
319
+ * .then(console.log)
320
+ * .catch(console.error);
321
+ */
322
+ async edit(options) {
323
+ return this.guild.channels.edit(this, options);
324
+ }
325
+
326
+ /**
327
+ * Sets a new name for the guild channel.
328
+ *
329
+ * @param {string} name The new name for the guild channel
330
+ * @param {string} [reason] Reason for changing the guild channel's name
331
+ * @returns {Promise<GuildChannel>}
332
+ * @example
333
+ * // Set a new channel name
334
+ * channel.setName('not_general')
335
+ * .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))
336
+ * .catch(console.error);
337
+ */
338
+ async setName(name, reason) {
339
+ return this.edit({ name, reason });
340
+ }
341
+
342
+ /**
343
+ * Options used to set the parent of a channel.
344
+ *
345
+ * @typedef {Object} SetParentOptions
346
+ * @property {boolean} [lockPermissions=false] Whether to lock the permissions to what the parent's permissions are
347
+ * @property {string} [reason] The reason for modifying the parent of the channel
348
+ */
349
+
350
+ /**
351
+ * Sets the parent of this channel.
352
+ *
353
+ * @param {?CategoryChannelResolvable} channel The category channel to set as the parent
354
+ * @param {SetParentOptions} [options={}] The options for setting the parent
355
+ * @returns {Promise<GuildChannel>}
356
+ * @example
357
+ * // Add a parent to a channel
358
+ * message.channel.setParent('355908108431917066')
359
+ * .then(channel => console.log(`New parent of ${channel.name}: ${channel.parent.name}`))
360
+ * .catch(console.error);
361
+ * @example
362
+ * // Move a channel and sync its permissions with the parent
363
+ * message.channel.setParent('355908108431917066', { lockPermissions: true })
364
+ * .then(channel => console.log(`Moved ${message.channel.name} to ${channel.parent.name}`))
365
+ * .catch(console.error);
366
+ */
367
+ async setParent(channel, { lockPermissions = false, reason } = {}) {
368
+ return this.edit({
369
+ parent: channel ?? null,
370
+ lockPermissions,
371
+ reason,
372
+ });
373
+ }
374
+
375
+ /**
376
+ * Options used to set the position of a channel.
377
+ *
378
+ * @typedef {Object} SetChannelPositionOptions
379
+ * @property {boolean} [relative=false] Whether or not to change the position relative to its current value
380
+ * @property {string} [reason] The reason for changing the position
381
+ */
382
+
383
+ /**
384
+ * Sets a new position for the guild channel.
385
+ *
386
+ * @param {number} position The new position for the guild channel
387
+ * @param {SetChannelPositionOptions} [options] Options for setting position
388
+ * @returns {Promise<GuildChannel>}
389
+ * @example
390
+ * // Set a new channel position
391
+ * channel.setPosition(2)
392
+ * .then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))
393
+ * .catch(console.error);
394
+ */
395
+ async setPosition(position, options = {}) {
396
+ return this.guild.channels.setPosition(this, position, options);
397
+ }
398
+
399
+ /**
400
+ * Options used to clone a guild channel.
401
+ *
402
+ * @typedef {GuildChannelCreateOptions} GuildChannelCloneOptions
403
+ * @property {string} [name=this.name] Name of the new channel
404
+ */
405
+
406
+ /**
407
+ * Clones this channel.
408
+ *
409
+ * @param {GuildChannelCloneOptions} [options] The options for cloning this channel
410
+ * @returns {Promise<GuildChannel>}
411
+ */
412
+ async clone(options = {}) {
413
+ return this.guild.channels.create({
414
+ name: options.name ?? this.name,
415
+ permissionOverwrites: this.permissionOverwrites.cache,
416
+ topic: this.topic,
417
+ type: this.type,
418
+ nsfw: this.nsfw,
419
+ parent: this.parent,
420
+ bitrate: this.bitrate,
421
+ userLimit: this.userLimit,
422
+ rateLimitPerUser: this.rateLimitPerUser,
423
+ position: this.rawPosition,
424
+ reason: null,
425
+ ...options,
426
+ });
427
+ }
428
+
429
+ /**
430
+ * Checks if this channel has the same type, topic, position, name, overwrites, and id as another channel.
431
+ * In most cases, a simple `channel.id === channel2.id` will do, and is much faster too.
432
+ *
433
+ * @param {GuildChannel} channel Channel to compare with
434
+ * @returns {boolean}
435
+ */
436
+ equals(channel) {
437
+ let equal =
438
+ channel &&
439
+ this.id === channel.id &&
440
+ this.type === channel.type &&
441
+ this.topic === channel.topic &&
442
+ this.position === channel.position &&
443
+ this.name === channel.name;
444
+
445
+ if (equal) {
446
+ if (this.permissionOverwrites && channel.permissionOverwrites) {
447
+ equal = this.permissionOverwrites.cache.equals(channel.permissionOverwrites.cache);
448
+ } else {
449
+ equal = !this.permissionOverwrites && !channel.permissionOverwrites;
450
+ }
451
+ }
452
+
453
+ return equal;
454
+ }
455
+
456
+ /**
457
+ * Whether the channel is deletable by the client user
458
+ *
459
+ * @type {boolean}
460
+ * @readonly
461
+ */
462
+ get deletable() {
463
+ return this.manageable && this.guild.rulesChannelId !== this.id && this.guild.publicUpdatesChannelId !== this.id;
464
+ }
465
+
466
+ /**
467
+ * Whether the channel is manageable by the client user
468
+ *
469
+ * @type {boolean}
470
+ * @readonly
471
+ */
472
+ get manageable() {
473
+ const permissions = this.permissionsFor(this.client.user);
474
+ if (!permissions) return false;
475
+
476
+ // This flag allows managing even if timed out
477
+ if (permissions.has(PermissionFlagsBits.Administrator, false)) return true;
478
+ if (this.guild.members.me.communicationDisabledUntilTimestamp > Date.now()) return false;
479
+
480
+ const baseBitfield = PermissionFlagsBits.ViewChannel | PermissionFlagsBits.ManageChannels;
481
+ const bitfield = VoiceBasedChannelTypes.includes(this.type)
482
+ ? baseBitfield | PermissionFlagsBits.Connect
483
+ : baseBitfield;
484
+
485
+ return permissions.has(bitfield, false);
486
+ }
487
+
488
+ /**
489
+ * Whether the channel is viewable by the client user
490
+ *
491
+ * @type {boolean}
492
+ * @readonly
493
+ */
494
+ get viewable() {
495
+ const permissions = this.permissionsFor(this.client.user);
496
+ if (!permissions) return false;
497
+ return permissions.has(PermissionFlagsBits.ViewChannel, false);
498
+ }
499
+
500
+ /**
501
+ * Deletes this channel.
502
+ *
503
+ * @param {string} [reason] Reason for deleting this channel
504
+ * @returns {Promise<GuildChannel>}
505
+ * @example
506
+ * // Delete the channel
507
+ * channel.delete('making room for new channels')
508
+ * .then(console.log)
509
+ * .catch(console.error);
510
+ */
511
+ async delete(reason) {
512
+ await this.guild.channels.delete(this.id, reason);
513
+ return this;
514
+ }
515
+ }