@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,159 @@
1
+ import { PermissionFlagsBits } from 'discord-api-types/v10';
2
+ import { DiscordjsError, ErrorCodes } from '../errors/index.js';
3
+ import { GuildEmojiRoleManager } from '../managers/GuildEmojiRoleManager.js';
4
+ import { BaseGuildEmoji } from './BaseGuildEmoji.js';
5
+
6
+ /**
7
+ * Represents a custom emoji.
8
+ *
9
+ * @extends {BaseGuildEmoji}
10
+ */
11
+ export class GuildEmoji extends BaseGuildEmoji {
12
+ public client: any;
13
+ public author: any;
14
+ public _roles: any;
15
+ constructor(client, data, guild) {
16
+ super(client, data, guild);
17
+
18
+ /**
19
+ * The user who created this emoji
20
+ *
21
+ * @type {?User}
22
+ */
23
+ this.author = null;
24
+
25
+ /**
26
+ * Array of role ids this emoji is active for
27
+ *
28
+ * @name GuildEmoji#_roles
29
+ * @type {Snowflake[]}
30
+ * @private
31
+ */
32
+ Object.defineProperty(this, '_roles', { value: [], writable: true });
33
+
34
+ this._patch(data);
35
+ }
36
+
37
+ /**
38
+ * The guild this emoji is part of
39
+ *
40
+ * @type {Guild}
41
+ * @name GuildEmoji#guild
42
+ */
43
+
44
+ _clone() {
45
+ const clone = super._clone();
46
+ clone._roles = this._roles.slice();
47
+ return clone;
48
+ }
49
+
50
+ _patch(data) {
51
+ super._patch(data);
52
+
53
+ if (data.user) this.author = this.client.users._add(data.user);
54
+ if (data.roles) this._roles = data.roles;
55
+ }
56
+
57
+ /**
58
+ * Whether the emoji is deletable by the client user
59
+ *
60
+ * @type {boolean}
61
+ * @readonly
62
+ */
63
+ get deletable() {
64
+ if (!this.guild.members.me) throw new DiscordjsError(ErrorCodes.GuildUncachedMe);
65
+ return !this.managed && this.guild.members.me.permissions.has(PermissionFlagsBits.ManageGuildExpressions);
66
+ }
67
+
68
+ /**
69
+ * A manager for roles this emoji is active for.
70
+ *
71
+ * @type {GuildEmojiRoleManager}
72
+ * @readonly
73
+ */
74
+ get roles() {
75
+ return new GuildEmojiRoleManager(this);
76
+ }
77
+
78
+ /**
79
+ * Fetches the author for this emoji
80
+ *
81
+ * @returns {Promise<User>}
82
+ */
83
+ async fetchAuthor() {
84
+ return this.guild.emojis.fetchAuthor(this);
85
+ }
86
+
87
+ /**
88
+ * Data for editing an emoji.
89
+ *
90
+ * @typedef {Object} GuildEmojiEditOptions
91
+ * @property {string} [name] The name of the emoji
92
+ * @property {Collection<Snowflake, Role>|RoleResolvable[]} [roles] Roles to restrict emoji to
93
+ * @property {string} [reason] Reason for editing this emoji
94
+ */
95
+
96
+ /**
97
+ * Edits the emoji.
98
+ *
99
+ * @param {GuildEmojiEditOptions} options The options to provide
100
+ * @returns {Promise<GuildEmoji>}
101
+ * @example
102
+ * // Edit an emoji
103
+ * emoji.edit({ name: 'newemoji' })
104
+ * .then(emoji => console.log(`Edited emoji ${emoji}`))
105
+ * .catch(console.error);
106
+ */
107
+ async edit(options) {
108
+ return this.guild.emojis.edit(this.id, options);
109
+ }
110
+
111
+ /**
112
+ * Sets the name of the emoji.
113
+ *
114
+ * @param {string} name The new name for the emoji
115
+ * @param {string} [reason] Reason for changing the emoji's name
116
+ * @returns {Promise<GuildEmoji>}
117
+ */
118
+ async setName(name, reason) {
119
+ return this.edit({ name, reason });
120
+ }
121
+
122
+ /**
123
+ * Deletes the emoji.
124
+ *
125
+ * @param {string} [reason] Reason for deleting the emoji
126
+ * @returns {Promise<GuildEmoji>}
127
+ */
128
+ async delete(reason) {
129
+ await this.guild.emojis.delete(this.id, reason);
130
+ return this;
131
+ }
132
+
133
+ /**
134
+ * Whether this emoji is the same as another one.
135
+ *
136
+ * @param {GuildEmoji|APIEmoji} other The emoji to compare it to
137
+ * @returns {boolean}
138
+ */
139
+ equals(other) {
140
+ if (other instanceof GuildEmoji) {
141
+ return (
142
+ other.id === this.id &&
143
+ other.name === this.name &&
144
+ other.managed === this.managed &&
145
+ other.available === this.available &&
146
+ other.requiresColons === this.requiresColons &&
147
+ other.roles.cache.size === this.roles.cache.size &&
148
+ other.roles.cache.every(role => this.roles.cache.has(role.id))
149
+ );
150
+ } else {
151
+ return (
152
+ other.id === this.id &&
153
+ other.name === this.name &&
154
+ other.roles.length === this.roles.cache.size &&
155
+ other.roles.every(role => this.roles.cache.has(role))
156
+ );
157
+ }
158
+ }
159
+ }
@@ -0,0 +1,233 @@
1
+ import { Routes, PermissionFlagsBits, InviteType } from 'discord-api-types/v10';
2
+ import { DiscordjsError, ErrorCodes } from '../errors/index.js';
3
+ import { InviteFlagsBitField } from '../util/InviteFlagsBitField.js';
4
+ import { BaseInvite } from './BaseInvite.js';
5
+ import { GuildScheduledEvent } from './GuildScheduledEvent.js';
6
+ import { IntegrationApplication } from './IntegrationApplication.js';
7
+ import { InviteGuild } from './InviteGuild.js';
8
+
9
+ /**
10
+ * A channel invite leading to a guild.
11
+ *
12
+ * @extends {BaseInvite}
13
+ */
14
+ export class GuildInvite extends BaseInvite {
15
+ public client: any;
16
+ public type: any;
17
+ public guildId: any;
18
+ public flags: any;
19
+ public guild: any;
20
+ public channel: any;
21
+ public targetType: any;
22
+ public targetUser: any;
23
+ public targetApplication: any;
24
+ public guildScheduledEvent: any;
25
+ public uses: any;
26
+ public maxUses: any;
27
+ public temporary: any;
28
+ public approximatePresenceCount: any;
29
+ constructor(client, data) {
30
+ super(client, data);
31
+
32
+ // Type may be missing from audit logs.
33
+ this.type = InviteType.Guild;
34
+
35
+ /**
36
+ * The id of the guild this invite is for.
37
+ *
38
+ * @type {Snowflake}
39
+ */
40
+ // Guild id may be missing from audit logs.
41
+ this.guildId = data.guild_id ?? data.guild.id;
42
+
43
+ /**
44
+ * The maximum age of the invite in seconds. `0` for no expiry.
45
+ * <info>This is only available when the invite was fetched through {@link GuildInviteManager#fetch}
46
+ * or created through {@link GuildInviteManager#create}.</info>
47
+ *
48
+ * @name GuildInvite#maxAge
49
+ * @type {?number}
50
+ */
51
+
52
+ /**
53
+ * The approximate total number of members of the guild.
54
+ * <info>This is only available when the invite was fetched through {@link Client#fetchInvite}.</info>
55
+ *
56
+ * @name GuildInvite#approximateMemberCount
57
+ * @type {?number}
58
+ */
59
+ }
60
+
61
+ _patch(data) {
62
+ super._patch(data);
63
+
64
+ if ('flags' in data) {
65
+ /**
66
+ * The flags of this invite.
67
+ *
68
+ * @type {Readonly<InviteFlagsBitField>}
69
+ */
70
+ this.flags = new InviteFlagsBitField(data.flags).freeze();
71
+ } else {
72
+ this.flags ??= new InviteFlagsBitField().freeze();
73
+ }
74
+
75
+ if ('guild' in data) {
76
+ /**
77
+ * The guild the invite is for. May include welcome screen data.
78
+ *
79
+ * @type {?(Guild|InviteGuild)}
80
+ */
81
+ this.guild = this.client.guilds.cache.get(data.guild.id) ?? new InviteGuild(this.client, data.guild);
82
+ } else {
83
+ this.guild ??= null;
84
+ }
85
+
86
+ if ('channel' in data) {
87
+ /**
88
+ * The channel this invite is for.
89
+ *
90
+ * @type {?GuildInvitableChannel}
91
+ */
92
+ this.channel =
93
+ this.client.channels._add(data.channel, this.guild, { cache: false }) ??
94
+ this.client.channels.cache.get(this.channelId);
95
+
96
+ this.channelId ??= data.channel.id;
97
+ }
98
+
99
+ if ('target_type' in data) {
100
+ /**
101
+ * The target type.
102
+ *
103
+ * @type {?InviteTargetType}
104
+ */
105
+ this.targetType = data.target_type;
106
+ } else {
107
+ this.targetType ??= null;
108
+ }
109
+
110
+ if ('target_user' in data) {
111
+ /**
112
+ * The user whose stream to display for this voice channel stream invite.
113
+ *
114
+ * @type {?User}
115
+ */
116
+ this.targetUser = this.client.users._add(data.target_user);
117
+ } else {
118
+ this.targetUser ??= null;
119
+ }
120
+
121
+ if ('target_application' in data) {
122
+ /**
123
+ * The embedded application to open for this voice channel embedded application invite.
124
+ *
125
+ * @type {?IntegrationApplication}
126
+ */
127
+ this.targetApplication = new IntegrationApplication(this.client, data.target_application);
128
+ } else {
129
+ this.targetApplication ??= null;
130
+ }
131
+
132
+ if ('guild_scheduled_event' in data) {
133
+ /**
134
+ * The guild scheduled event data if there is a {@link GuildScheduledEvent} in the channel.
135
+ *
136
+ * @type {?GuildScheduledEvent}
137
+ */
138
+ this.guildScheduledEvent = new GuildScheduledEvent(this.client, data.guild_scheduled_event);
139
+ } else {
140
+ this.guildScheduledEvent ??= null;
141
+ }
142
+
143
+ if ('uses' in data) {
144
+ /**
145
+ * How many times this invite has been used.
146
+ * <info>This is only available when the invite was fetched through {@link GuildInviteManager#fetch}
147
+ * or created through {@link GuildInviteManager#create}.</info>
148
+ *
149
+ * @type {?number}
150
+ */
151
+ this.uses = data.uses;
152
+ } else {
153
+ this.uses ??= null;
154
+ }
155
+
156
+ if ('max_uses' in data) {
157
+ /**
158
+ * The maximum uses of this invite.
159
+ * <info>This is only available when the invite was fetched through {@link GuildInviteManager#fetch}
160
+ * or created through {@link GuildInviteManager#create}.</info>
161
+ *
162
+ * @type {?number}
163
+ */
164
+ this.maxUses = data.max_uses;
165
+ } else {
166
+ this.maxUses ??= null;
167
+ }
168
+
169
+ if ('temporary' in data) {
170
+ /**
171
+ * Whether this invite grants temporary membership.
172
+ * <info>This is only available when the invite was fetched through {@link GuildInviteManager#fetch}
173
+ * or created through {@link GuildInviteManager#create}.</info>
174
+ *
175
+ * @type {?boolean}
176
+ */
177
+ this.temporary = data.temporary ?? null;
178
+ } else {
179
+ this.temporary ??= null;
180
+ }
181
+
182
+ if ('approximate_presence_count' in data) {
183
+ /**
184
+ * The approximate number of online members of the guild.
185
+ * <info>This is only available when the invite was fetched through {@link Client#fetchInvite}.</info>
186
+ *
187
+ * @type {?number}
188
+ */
189
+ this.approximatePresenceCount = data.approximate_presence_count;
190
+ } else {
191
+ this.approximatePresenceCount ??= null;
192
+ }
193
+ }
194
+
195
+ /**
196
+ * Whether the invite is deletable by the client user.
197
+ *
198
+ * @type {boolean}
199
+ * @readonly
200
+ */
201
+ get deletable() {
202
+ const guild = this.guild;
203
+ if (!guild || !this.client.guilds.cache.has(guild.id)) return false;
204
+ if (!guild.members.me) throw new DiscordjsError(ErrorCodes.GuildUncachedMe);
205
+ return Boolean(
206
+ this.channel?.permissionsFor(this.client.user).has(PermissionFlagsBits.ManageChannels, false) ||
207
+ guild.members.me.permissions.has(PermissionFlagsBits.ManageGuild),
208
+ );
209
+ }
210
+
211
+ /**
212
+ * Delete this invite.
213
+ *
214
+ * @param {string} [reason] Reason for deleting this invite
215
+ * @returns {Promise<void>}
216
+ */
217
+ async delete(reason) {
218
+ await this.client.rest.delete(Routes.invite(this.code), { reason });
219
+ }
220
+
221
+ toJSON() {
222
+ return super.toJSON({
223
+ url: true,
224
+ expiresTimestamp: true,
225
+ presenceCount: false,
226
+ memberCount: false,
227
+ uses: false,
228
+ channel: 'channelId',
229
+ inviter: 'inviterId',
230
+ guild: 'guildId',
231
+ });
232
+ }
233
+ }