@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,155 @@
1
+ import { Events } from '../util/Events.js';
2
+ import { Collector } from './interfaces/Collector.js';
3
+
4
+ /**
5
+ * @typedef {CollectorOptions} MessageCollectorOptions
6
+ * @property {number} max The maximum amount of messages to collect
7
+ * @property {number} maxProcessed The maximum amount of messages to process
8
+ */
9
+
10
+ /**
11
+ * Collects messages on a channel.
12
+ * Will automatically stop if the channel ({@link Client#event:channelDelete channelDelete}),
13
+ * thread ({@link Client#event:threadDelete threadDelete}), or
14
+ * guild ({@link Client#event:guildDelete guildDelete}) is deleted.
15
+ *
16
+ * @extends {Collector}
17
+ */
18
+ export class MessageCollector extends Collector {
19
+ public channel: any;
20
+ public received: any;
21
+ /**
22
+ * @param {TextBasedChannels} channel The channel
23
+ * @param {MessageCollectorOptions} options The options to be applied to this collector
24
+ * @emits MessageCollector#message
25
+ */
26
+ constructor(channel, options = {}) {
27
+ super(channel.client, options);
28
+
29
+ /**
30
+ * The channel
31
+ *
32
+ * @type {TextBasedChannels}
33
+ */
34
+ this.channel = channel;
35
+
36
+ /**
37
+ * Total number of messages that were received in the channel during message collection
38
+ *
39
+ * @type {number}
40
+ */
41
+ this.received = 0;
42
+
43
+ const bulkDeleteListener = async messages => {
44
+ for (const message of messages.values()) await this.handleDispose(message);
45
+ };
46
+
47
+ this._handleChannelDeletion = this._handleChannelDeletion.bind(this);
48
+ this._handleThreadDeletion = this._handleThreadDeletion.bind(this);
49
+ this._handleGuildDeletion = this._handleGuildDeletion.bind(this);
50
+
51
+ this.client.incrementMaxListeners();
52
+ this.client.on(Events.MessageCreate, this.handleCollect);
53
+ this.client.on(Events.MessageDelete, this.handleDispose);
54
+ this.client.on(Events.MessageBulkDelete, bulkDeleteListener);
55
+ this.client.on(Events.ChannelDelete, this._handleChannelDeletion);
56
+ this.client.on(Events.ThreadDelete, this._handleThreadDeletion);
57
+ this.client.on(Events.GuildDelete, this._handleGuildDeletion);
58
+
59
+ this.once('end', () => {
60
+ this.client.removeListener(Events.MessageCreate, this.handleCollect);
61
+ this.client.removeListener(Events.MessageDelete, this.handleDispose);
62
+ this.client.removeListener(Events.MessageBulkDelete, bulkDeleteListener);
63
+ this.client.removeListener(Events.ChannelDelete, this._handleChannelDeletion);
64
+ this.client.removeListener(Events.ThreadDelete, this._handleThreadDeletion);
65
+ this.client.removeListener(Events.GuildDelete, this._handleGuildDeletion);
66
+ this.client.decrementMaxListeners();
67
+ });
68
+ }
69
+
70
+ /**
71
+ * Handles a message for possible collection.
72
+ *
73
+ * @param {Message} message The message that could be collected
74
+ * @returns {?Snowflake}
75
+ * @private
76
+ */
77
+ collect(message) {
78
+ /**
79
+ * Emitted whenever a message is collected.
80
+ *
81
+ * @event MessageCollector#collect
82
+ * @param {Message} message The message that was collected
83
+ */
84
+ if (message.channelId !== this.channel.id) return null;
85
+ this.received++;
86
+ return message.id;
87
+ }
88
+
89
+ /**
90
+ * Handles a message for possible disposal.
91
+ *
92
+ * @param {Message} message The message that could be disposed of
93
+ * @returns {?Snowflake}
94
+ */
95
+ dispose(message) {
96
+ /**
97
+ * Emitted whenever a message is disposed of.
98
+ *
99
+ * @event MessageCollector#dispose
100
+ * @param {Message} message The message that was disposed of
101
+ */
102
+ return message.channelId === this.channel.id ? message.id : null;
103
+ }
104
+
105
+ /**
106
+ * The reason this collector has ended with, or null if it hasn't ended yet
107
+ *
108
+ * @type {?string}
109
+ * @readonly
110
+ */
111
+ get endReason() {
112
+ if (this.options.max && this.collected.size >= this.options.max) return 'limit';
113
+ if (this.options.maxProcessed && this.received === this.options.maxProcessed) return 'processedLimit';
114
+ return super.endReason;
115
+ }
116
+
117
+ /**
118
+ * Handles checking if the channel has been deleted, and if so, stops the collector with the reason 'channelDelete'.
119
+ *
120
+ * @private
121
+ * @param {GuildChannel} channel The channel that was deleted
122
+ * @returns {void}
123
+ */
124
+ _handleChannelDeletion(channel) {
125
+ if (channel.id === this.channel.id || channel.id === this.channel.parentId) {
126
+ this.stop('channelDelete');
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Handles checking if the thread has been deleted, and if so, stops the collector with the reason 'threadDelete'.
132
+ *
133
+ * @private
134
+ * @param {ThreadChannel} thread The thread that was deleted
135
+ * @returns {void}
136
+ */
137
+ _handleThreadDeletion(thread) {
138
+ if (thread.id === this.channel.id) {
139
+ this.stop('threadDelete');
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Handles checking if the guild has been deleted, and if so, stops the collector with the reason 'guildDelete'.
145
+ *
146
+ * @private
147
+ * @param {Guild} guild The guild that was deleted
148
+ * @returns {void}
149
+ */
150
+ _handleGuildDeletion(guild) {
151
+ if (guild.id === this.channel.guild?.id) {
152
+ this.stop('guildDelete');
153
+ }
154
+ }
155
+ }
@@ -0,0 +1,132 @@
1
+ import { lazy } from '@ovencord/util';
2
+ import { findComponentByCustomId } from '../util/Components.js';
3
+ import { BaseInteraction } from './BaseInteraction.js';
4
+ import { InteractionWebhook } from './InteractionWebhook.js';
5
+ import { InteractionResponses } from './interfaces/InteractionResponses.js';
6
+
7
+ const getMessage = lazy(() => require('./Message.js').Message);
8
+
9
+ /**
10
+ * Represents a message component interaction.
11
+ *
12
+ * @extends {BaseInteraction}
13
+ * @implements {InteractionResponses}
14
+ */
15
+ export class MessageComponentInteraction extends BaseInteraction {
16
+ public client: any;
17
+ public message: any;
18
+ public customId: any;
19
+ public componentType: any;
20
+ public deferred: any;
21
+ public ephemeral: any;
22
+ public replied: any;
23
+ public webhook: any;
24
+ constructor(client, data) {
25
+ super(client, data);
26
+
27
+ /**
28
+ * The id of the channel this interaction was sent in
29
+ *
30
+ * @type {Snowflake}
31
+ * @name MessageComponentInteraction#channelId
32
+ */
33
+
34
+ /**
35
+ * The message to which the component was attached
36
+ *
37
+ * @type {Message}
38
+ */
39
+ this.message = this.channel?.messages._add(data.message) ?? new (getMessage())(client, data.message);
40
+
41
+ /**
42
+ * The custom id of the component which was interacted with
43
+ *
44
+ * @type {string}
45
+ */
46
+ this.customId = data.data.custom_id;
47
+
48
+ /**
49
+ * The type of component which was interacted with
50
+ *
51
+ * @type {ComponentType}
52
+ */
53
+ this.componentType = data.data.component_type;
54
+
55
+ /**
56
+ * Whether the reply to this interaction has been deferred
57
+ *
58
+ * @type {boolean}
59
+ */
60
+ this.deferred = false;
61
+
62
+ /**
63
+ * Whether the reply to this interaction is ephemeral
64
+ *
65
+ * @type {?boolean}
66
+ */
67
+ this.ephemeral = null;
68
+
69
+ /**
70
+ * Whether this interaction has already been replied to
71
+ *
72
+ * @type {boolean}
73
+ */
74
+ this.replied = false;
75
+
76
+ /**
77
+ * An associated interaction webhook, can be used to further interact with this interaction
78
+ *
79
+ * @type {InteractionWebhook}
80
+ */
81
+ this.webhook = new InteractionWebhook(this.client, this.applicationId, this.token);
82
+ }
83
+
84
+ /**
85
+ * Components that can be placed in an action row for messages.
86
+ * - ButtonComponent
87
+ * - StringSelectMenuComponent
88
+ * - UserSelectMenuComponent
89
+ * - RoleSelectMenuComponent
90
+ * - MentionableSelectMenuComponent
91
+ * - ChannelSelectMenuComponent
92
+ *
93
+ * @typedef {ButtonComponent|StringSelectMenuComponent|UserSelectMenuComponent|
94
+ * RoleSelectMenuComponent|MentionableSelectMenuComponent|ChannelSelectMenuComponent} MessageActionRowComponent
95
+ */
96
+
97
+ /**
98
+ * The component which was interacted with
99
+ *
100
+ * @type {MessageActionRowComponent|APIComponentInMessageActionRow}
101
+ * @readonly
102
+ */
103
+ get component() {
104
+ return findComponentByCustomId(this.message.components, this.customId);
105
+ }
106
+
107
+ // These are here only for documentation purposes - they are implemented by InteractionResponses
108
+
109
+ deferReply() {}
110
+
111
+ reply() {}
112
+
113
+ fetchReply() {}
114
+
115
+ editReply() {}
116
+
117
+ deleteReply() {}
118
+
119
+ followUp() {}
120
+
121
+ deferUpdate() {}
122
+
123
+ update() {}
124
+
125
+ launchActivity() {}
126
+
127
+ showModal() {}
128
+
129
+ awaitModalSubmit() {}
130
+ }
131
+
132
+ InteractionResponses.applyToClass(MessageComponentInteraction);
@@ -0,0 +1,18 @@
1
+ import { ContextMenuCommandInteraction } from './ContextMenuCommandInteraction.js';
2
+
3
+ /**
4
+ * Represents a message context menu interaction.
5
+ *
6
+ * @extends {ContextMenuCommandInteraction}
7
+ */
8
+ export class MessageContextMenuCommandInteraction extends ContextMenuCommandInteraction {
9
+ /**
10
+ * The message this interaction was sent from
11
+ *
12
+ * @type {Message|APIMessage}
13
+ * @readonly
14
+ */
15
+ get targetMessage() {
16
+ return this.options.getMessage('message');
17
+ }
18
+ }
@@ -0,0 +1,327 @@
1
+ import { Collection } from '@ovencord/collection';
2
+ import { FormattingPatterns } from 'discord-api-types/v10';
3
+ import { flatten } from '../util/Util.js';
4
+
5
+ /**
6
+ * Keeps track of mentions in a {@link Message}.
7
+ */
8
+ export class MessageMentions {
9
+ public everyone: any;
10
+ public users: any;
11
+ public roles: any;
12
+ public _members: any;
13
+ public _channels: any;
14
+ public _parsedUsers: any;
15
+ public crosspostedChannels: any;
16
+ public repliedUser: any;
17
+ /**
18
+ * A regular expression that matches `@everyone` and `@here`.
19
+ * The `mention` group property is present on the `exec` result of this expression.
20
+ *
21
+ * @type {RegExp}
22
+ * @memberof MessageMentions
23
+ */
24
+ static EveryonePattern = /@(?<mention>everyone|here)/;
25
+
26
+ /**
27
+ * A regular expression that matches user mentions like `<@81440962496172032>`.
28
+ * The `id` group property is present on the `exec` result of this expression.
29
+ *
30
+ * @type {RegExp}
31
+ * @memberof MessageMentions
32
+ */
33
+ static UsersPattern = FormattingPatterns.UserWithOptionalNickname;
34
+
35
+ /**
36
+ * A regular expression that matches role mentions like `<@&297577916114403338>`.
37
+ * The `id` group property is present on the `exec` result of this expression.
38
+ *
39
+ * @type {RegExp}
40
+ * @memberof MessageMentions
41
+ */
42
+ static RolesPattern = FormattingPatterns.Role;
43
+
44
+ /**
45
+ * A regular expression that matches channel mentions like `<#222079895583457280>`.
46
+ * The `id` group property is present on the `exec` result of this expression.
47
+ *
48
+ * @type {RegExp}
49
+ * @memberof MessageMentions
50
+ */
51
+ static ChannelsPattern = FormattingPatterns.Channel;
52
+
53
+ /**
54
+ * A global regular expression variant of {@link MessageMentions.ChannelsPattern}.
55
+ *
56
+ * @type {RegExp}
57
+ * @memberof MessageMentions
58
+ * @private
59
+ */
60
+ static GlobalChannelsPattern = new RegExp(this.ChannelsPattern.source, 'g');
61
+
62
+ /**
63
+ * A global regular expression variant of {@link MessageMentions.UsersPattern}.
64
+ *
65
+ * @type {RegExp}
66
+ * @memberof MessageMentions
67
+ * @private
68
+ */
69
+ static GlobalUsersPattern = new RegExp(this.UsersPattern.source, 'g');
70
+
71
+ constructor(message, users, roles, everyone, crosspostedChannels, repliedUser) {
72
+ /**
73
+ * The client the message is from
74
+ *
75
+ * @type {Client}
76
+ * @readonly
77
+ */
78
+ Object.defineProperty(this, 'client', { value: message.client });
79
+
80
+ /**
81
+ * The guild the message is in
82
+ *
83
+ * @type {?Guild}
84
+ * @readonly
85
+ */
86
+ Object.defineProperty(this, 'guild', { value: message.guild });
87
+
88
+ /**
89
+ * The initial message content
90
+ *
91
+ * @type {string}
92
+ * @readonly
93
+ * @private
94
+ */
95
+ Object.defineProperty(this, '_content', { value: message.content });
96
+
97
+ /**
98
+ * Whether `@everyone` or `@here` were mentioned
99
+ *
100
+ * @type {boolean}
101
+ */
102
+ this.everyone = Boolean(everyone);
103
+
104
+ if (users) {
105
+ if (users instanceof Collection) {
106
+ /**
107
+ * Any users that were mentioned
108
+ * <info>Order as received from the API, not as they appear in the message content</info>
109
+ *
110
+ * @type {Collection<Snowflake, User>}
111
+ */
112
+ this.users = new Collection(users);
113
+ } else {
114
+ this.users = new Collection();
115
+ for (const mention of users) {
116
+ if (mention.member && message.guild) {
117
+ message.guild.members._add(Object.assign(mention.member, { user: mention }));
118
+ }
119
+
120
+ const user = message.client.users._add(mention);
121
+ this.users.set(user.id, user);
122
+ }
123
+ }
124
+ } else {
125
+ this.users = new Collection();
126
+ }
127
+
128
+ if (roles instanceof Collection) {
129
+ /**
130
+ * Any roles that were mentioned
131
+ * <info>Order as received from the API, not as they appear in the message content</info>
132
+ *
133
+ * @type {Collection<Snowflake, Role>}
134
+ */
135
+ this.roles = new Collection(roles);
136
+ } else if (roles) {
137
+ this.roles = new Collection();
138
+ const guild = message.guild;
139
+ if (guild) {
140
+ for (const mention of roles) {
141
+ const role = guild.roles.cache.get(mention);
142
+ if (role) this.roles.set(role.id, role);
143
+ }
144
+ }
145
+ } else {
146
+ this.roles = new Collection();
147
+ }
148
+
149
+ /**
150
+ * Cached members for {@link MessageMentions#members}
151
+ *
152
+ * @type {?Collection<Snowflake, GuildMember>}
153
+ * @private
154
+ */
155
+ this._members = null;
156
+
157
+ /**
158
+ * Cached channels for {@link MessageMentions#channels}
159
+ *
160
+ * @type {?Collection<Snowflake, BaseChannel>}
161
+ * @private
162
+ */
163
+ this._channels = null;
164
+
165
+ /**
166
+ * Cached users for {@link MessageMentions#parsedUsers}
167
+ *
168
+ * @type {?Collection<Snowflake, User>}
169
+ * @private
170
+ */
171
+ this._parsedUsers = null;
172
+
173
+ /**
174
+ * Crossposted channel data.
175
+ *
176
+ * @typedef {Object} CrosspostedChannel
177
+ * @property {Snowflake} channelId The mentioned channel's id
178
+ * @property {Snowflake} guildId The id of the guild that has the channel
179
+ * @property {ChannelType} type The channel's type
180
+ * @property {string} name The channel's name
181
+ */
182
+
183
+ if (crosspostedChannels) {
184
+ if (crosspostedChannels instanceof Collection) {
185
+ /**
186
+ * A collection of crossposted channels
187
+ * <info>Order as received from the API, not as they appear in the message content</info>
188
+ *
189
+ * @type {Collection<Snowflake, CrosspostedChannel>}
190
+ */
191
+ this.crosspostedChannels = new Collection(crosspostedChannels);
192
+ } else {
193
+ this.crosspostedChannels = new Collection();
194
+ for (const crosspostedChannel of crosspostedChannels) {
195
+ this.crosspostedChannels.set(crosspostedChannel.id, {
196
+ channelId: crosspostedChannel.id,
197
+ guildId: crosspostedChannel.guild_id,
198
+ type: crosspostedChannel.type,
199
+ name: crosspostedChannel.name,
200
+ });
201
+ }
202
+ }
203
+ } else {
204
+ this.crosspostedChannels = new Collection();
205
+ }
206
+
207
+ /**
208
+ * The author of the message that this message is a reply to
209
+ *
210
+ * @type {?User}
211
+ */
212
+ this.repliedUser = repliedUser ? this.client.users._add(repliedUser) : null;
213
+ }
214
+
215
+ /**
216
+ * Any members that were mentioned (only in {@link Guild}s)
217
+ * <info>Order as received from the API, not as they appear in the message content</info>
218
+ *
219
+ * @type {?Collection<Snowflake, GuildMember>}
220
+ * @readonly
221
+ */
222
+ get members() {
223
+ if (this._members) return this._members;
224
+ if (!this.guild) return null;
225
+ this._members = new Collection();
226
+ for (const user of this.users.values()) {
227
+ const member = this.guild.members.resolve(user);
228
+ if (member) this._members.set(member.user.id, member);
229
+ }
230
+
231
+ return this._members;
232
+ }
233
+
234
+ /**
235
+ * Any channels that were mentioned
236
+ * <info>Order as they appear first in the message content</info>
237
+ *
238
+ * @type {Collection<Snowflake, BaseChannel>}
239
+ * @readonly
240
+ */
241
+ get channels() {
242
+ if (this._channels) return this._channels;
243
+ this._channels = new Collection();
244
+ let matches;
245
+
246
+ while ((matches = this.constructor.GlobalChannelsPattern.exec(this._content)) !== null) {
247
+ const channel = this.client.channels.cache.get(matches.groups.id);
248
+ if (channel) this._channels.set(channel.id, channel);
249
+ }
250
+
251
+ return this._channels;
252
+ }
253
+
254
+ /**
255
+ * Any user mentions that were included in the message content
256
+ * <info>Order as they appear first in the message content</info>
257
+ *
258
+ * @type {Collection<Snowflake, User>}
259
+ * @readonly
260
+ */
261
+ get parsedUsers() {
262
+ if (this._parsedUsers) return this._parsedUsers;
263
+ this._parsedUsers = new Collection();
264
+ let matches;
265
+ while ((matches = this.constructor.GlobalUsersPattern.exec(this._content)) !== null) {
266
+ const user = this.client.users.cache.get(matches[1]);
267
+ if (user) this._parsedUsers.set(user.id, user);
268
+ }
269
+
270
+ return this._parsedUsers;
271
+ }
272
+
273
+ /**
274
+ * Options used to check for a mention.
275
+ *
276
+ * @typedef {Object} MessageMentionsHasOptions
277
+ * @property {boolean} [ignoreDirect=false] Whether to ignore direct mentions to the item
278
+ * @property {boolean} [ignoreRoles=false] Whether to ignore role mentions to a guild member
279
+ * @property {boolean} [ignoreRepliedUser=false] Whether to ignore replied user mention to an user
280
+ * @property {boolean} [ignoreEveryone=false] Whether to ignore `@everyone`/`@here` mentions
281
+ */
282
+
283
+ /**
284
+ * Checks if a user, guild member, thread member, role, or channel is mentioned.
285
+ * Takes into account user mentions, role mentions, channel mentions,
286
+ * replied user mention, and `@everyone`/`@here` mentions.
287
+ *
288
+ * @param {UserResolvable|RoleResolvable|ChannelResolvable} data The User/Role/Channel to check for
289
+ * @param {MessageMentionsHasOptions} [options] The options for the check
290
+ * @returns {boolean}
291
+ */
292
+ has(data, { ignoreDirect = false, ignoreRoles = false, ignoreRepliedUser = false, ignoreEveryone = false } = {}) {
293
+ const user = this.client.users.resolve(data);
294
+
295
+ if (!ignoreEveryone && user && this.everyone) return true;
296
+
297
+ const userWasRepliedTo = user && this.repliedUser?.id === user.id;
298
+
299
+ if (!ignoreRepliedUser && userWasRepliedTo && this.users.has(user.id)) return true;
300
+
301
+ if (!ignoreDirect) {
302
+ if (user && (!ignoreRepliedUser || this.parsedUsers.has(user.id)) && this.users.has(user.id)) return true;
303
+
304
+ const role = this.guild?.roles.resolve(data);
305
+ if (role && this.roles.has(role.id)) return true;
306
+
307
+ const channel = this.client.channels.resolve(data);
308
+ if (channel && this.channels.has(channel.id)) return true;
309
+ }
310
+
311
+ if (!ignoreRoles) {
312
+ const member = this.guild?.members.resolve(data);
313
+ if (member) {
314
+ for (const mentionedRole of this.roles.values()) if (member.roles.cache.has(mentionedRole.id)) return true;
315
+ }
316
+ }
317
+
318
+ return false;
319
+ }
320
+
321
+ toJSON() {
322
+ return flatten(this, {
323
+ members: true,
324
+ channels: true,
325
+ });
326
+ }
327
+ }