discord-selfbot-v13.js 0.0.1-security → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of discord-selfbot-v13.js might be problematic. Click here for more details.

Files changed (343) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +119 -5
  3. package/package.json +101 -6
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +87 -0
  6. package/src/client/Client.js +1154 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +115 -0
  9. package/src/client/actions/ActionsManager.js +72 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +26 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +27 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +31 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
  15. package/src/client/actions/ChannelCreate.js +23 -0
  16. package/src/client/actions/ChannelDelete.js +39 -0
  17. package/src/client/actions/ChannelUpdate.js +34 -0
  18. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  19. package/src/client/actions/GuildBanAdd.js +20 -0
  20. package/src/client/actions/GuildBanRemove.js +25 -0
  21. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  22. package/src/client/actions/GuildDelete.js +65 -0
  23. package/src/client/actions/GuildEmojiCreate.js +20 -0
  24. package/src/client/actions/GuildEmojiDelete.js +21 -0
  25. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  26. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  27. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  28. package/src/client/actions/GuildMemberRemove.js +33 -0
  29. package/src/client/actions/GuildMemberUpdate.js +44 -0
  30. package/src/client/actions/GuildRoleCreate.js +25 -0
  31. package/src/client/actions/GuildRoleDelete.js +31 -0
  32. package/src/client/actions/GuildRoleUpdate.js +39 -0
  33. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  34. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  35. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  36. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  37. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  38. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  39. package/src/client/actions/GuildStickerCreate.js +20 -0
  40. package/src/client/actions/GuildStickerDelete.js +21 -0
  41. package/src/client/actions/GuildStickerUpdate.js +20 -0
  42. package/src/client/actions/GuildStickersUpdate.js +34 -0
  43. package/src/client/actions/GuildUpdate.js +33 -0
  44. package/src/client/actions/InteractionCreate.js +115 -0
  45. package/src/client/actions/InviteCreate.js +28 -0
  46. package/src/client/actions/InviteDelete.js +30 -0
  47. package/src/client/actions/MessageCreate.js +50 -0
  48. package/src/client/actions/MessageDelete.js +32 -0
  49. package/src/client/actions/MessageDeleteBulk.js +46 -0
  50. package/src/client/actions/MessageReactionAdd.js +56 -0
  51. package/src/client/actions/MessageReactionRemove.js +45 -0
  52. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  53. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  54. package/src/client/actions/MessageUpdate.js +26 -0
  55. package/src/client/actions/PresenceUpdate.js +45 -0
  56. package/src/client/actions/StageInstanceCreate.js +28 -0
  57. package/src/client/actions/StageInstanceDelete.js +33 -0
  58. package/src/client/actions/StageInstanceUpdate.js +30 -0
  59. package/src/client/actions/ThreadCreate.js +24 -0
  60. package/src/client/actions/ThreadDelete.js +32 -0
  61. package/src/client/actions/ThreadListSync.js +59 -0
  62. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  63. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  64. package/src/client/actions/TypingStart.js +29 -0
  65. package/src/client/actions/UserUpdate.js +35 -0
  66. package/src/client/actions/VoiceStateUpdate.js +57 -0
  67. package/src/client/actions/WebhooksUpdate.js +20 -0
  68. package/src/client/voice/ClientVoiceManager.js +51 -0
  69. package/src/client/websocket/WebSocketManager.js +412 -0
  70. package/src/client/websocket/WebSocketShard.js +908 -0
  71. package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +23 -0
  72. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  73. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  74. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  75. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  76. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  77. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  78. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  79. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  80. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  81. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  82. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  83. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  84. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  85. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  86. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +16 -0
  87. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  88. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  89. package/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js +11 -0
  90. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  91. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  92. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  93. package/src/client/websocket/handlers/GUILD_CREATE.js +46 -0
  94. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  95. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  97. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  98. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  99. package/src/client/websocket/handlers/GUILD_MEMBER_LIST_UPDATE.js +55 -0
  100. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  101. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  102. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  103. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  104. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  105. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  106. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  107. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  108. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  109. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  110. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/INTERACTION_CREATE.js +16 -0
  113. package/src/client/websocket/handlers/INTERACTION_FAILURE.js +18 -0
  114. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +11 -0
  115. package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +30 -0
  116. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  117. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  118. package/src/client/websocket/handlers/MESSAGE_ACK.js +16 -0
  119. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  120. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  121. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  122. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  123. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  124. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  125. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  126. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  127. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  128. package/src/client/websocket/handlers/READY.js +172 -0
  129. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +17 -0
  130. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +15 -0
  131. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +18 -0
  132. package/src/client/websocket/handlers/RESUMED.js +14 -0
  133. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  134. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  135. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  136. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  137. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  138. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  139. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  140. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  141. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  142. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  143. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +12 -0
  144. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  145. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +9 -0
  146. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  147. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  148. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  149. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  150. package/src/client/websocket/handlers/index.js +86 -0
  151. package/src/errors/DJSError.js +61 -0
  152. package/src/errors/Messages.js +227 -0
  153. package/src/errors/index.js +4 -0
  154. package/src/index.js +190 -0
  155. package/src/main.js +42 -0
  156. package/src/managers/ApplicationCommandManager.js +267 -0
  157. package/src/managers/ApplicationCommandPermissionsManager.js +425 -0
  158. package/src/managers/AutoModerationRuleManager.js +296 -0
  159. package/src/managers/BaseGuildEmojiManager.js +80 -0
  160. package/src/managers/BaseManager.js +19 -0
  161. package/src/managers/BillingManager.js +66 -0
  162. package/src/managers/CachedManager.js +71 -0
  163. package/src/managers/ChannelManager.js +139 -0
  164. package/src/managers/ClientUserSettingManager.js +490 -0
  165. package/src/managers/DataManager.js +61 -0
  166. package/src/managers/DeveloperPortalManager.js +104 -0
  167. package/src/managers/GuildApplicationCommandManager.js +28 -0
  168. package/src/managers/GuildBanManager.js +204 -0
  169. package/src/managers/GuildChannelManager.js +502 -0
  170. package/src/managers/GuildEmojiManager.js +171 -0
  171. package/src/managers/GuildEmojiRoleManager.js +118 -0
  172. package/src/managers/GuildFolderManager.js +24 -0
  173. package/src/managers/GuildForumThreadManager.js +114 -0
  174. package/src/managers/GuildInviteManager.js +213 -0
  175. package/src/managers/GuildManager.js +304 -0
  176. package/src/managers/GuildMemberManager.js +724 -0
  177. package/src/managers/GuildMemberRoleManager.js +191 -0
  178. package/src/managers/GuildScheduledEventManager.js +296 -0
  179. package/src/managers/GuildSettingManager.js +148 -0
  180. package/src/managers/GuildStickerManager.js +179 -0
  181. package/src/managers/GuildTextThreadManager.js +98 -0
  182. package/src/managers/InteractionManager.js +39 -0
  183. package/src/managers/MessageManager.js +393 -0
  184. package/src/managers/PermissionOverwriteManager.js +166 -0
  185. package/src/managers/PresenceManager.js +58 -0
  186. package/src/managers/ReactionManager.js +67 -0
  187. package/src/managers/ReactionUserManager.js +71 -0
  188. package/src/managers/RelationshipManager.js +258 -0
  189. package/src/managers/RoleManager.js +352 -0
  190. package/src/managers/SessionManager.js +57 -0
  191. package/src/managers/StageInstanceManager.js +162 -0
  192. package/src/managers/ThreadManager.js +207 -0
  193. package/src/managers/ThreadMemberManager.js +186 -0
  194. package/src/managers/UserManager.js +150 -0
  195. package/src/managers/VoiceStateManager.js +37 -0
  196. package/src/rest/APIRequest.js +136 -0
  197. package/src/rest/APIRouter.js +53 -0
  198. package/src/rest/CaptchaSolver.js +78 -0
  199. package/src/rest/DiscordAPIError.js +103 -0
  200. package/src/rest/HTTPError.js +62 -0
  201. package/src/rest/RESTManager.js +81 -0
  202. package/src/rest/RateLimitError.js +55 -0
  203. package/src/rest/RequestHandler.js +446 -0
  204. package/src/sharding/Shard.js +443 -0
  205. package/src/sharding/ShardClientUtil.js +275 -0
  206. package/src/sharding/ShardingManager.js +318 -0
  207. package/src/structures/AnonymousGuild.js +98 -0
  208. package/src/structures/ApplicationCommand.js +1028 -0
  209. package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
  210. package/src/structures/AutoModerationActionExecution.js +89 -0
  211. package/src/structures/AutoModerationRule.js +294 -0
  212. package/src/structures/AutocompleteInteraction.js +106 -0
  213. package/src/structures/Base.js +43 -0
  214. package/src/structures/BaseCommandInteraction.js +211 -0
  215. package/src/structures/BaseGuild.js +116 -0
  216. package/src/structures/BaseGuildEmoji.js +56 -0
  217. package/src/structures/BaseGuildTextChannel.js +193 -0
  218. package/src/structures/BaseGuildVoiceChannel.js +243 -0
  219. package/src/structures/BaseMessageComponent.js +114 -0
  220. package/src/structures/ButtonInteraction.js +11 -0
  221. package/src/structures/Call.js +58 -0
  222. package/src/structures/CategoryChannel.js +83 -0
  223. package/src/structures/Channel.js +271 -0
  224. package/src/structures/ClientApplication.js +204 -0
  225. package/src/structures/ClientPresence.js +84 -0
  226. package/src/structures/ClientUser.js +624 -0
  227. package/src/structures/CommandInteraction.js +41 -0
  228. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  229. package/src/structures/ContextMenuInteraction.js +65 -0
  230. package/src/structures/DMChannel.js +280 -0
  231. package/src/structures/DeveloperPortalApplication.js +520 -0
  232. package/src/structures/DirectoryChannel.js +20 -0
  233. package/src/structures/Emoji.js +148 -0
  234. package/src/structures/ForumChannel.js +271 -0
  235. package/src/structures/Guild.js +1744 -0
  236. package/src/structures/GuildAuditLogs.js +734 -0
  237. package/src/structures/GuildBan.js +59 -0
  238. package/src/structures/GuildBoost.js +108 -0
  239. package/src/structures/GuildChannel.js +454 -0
  240. package/src/structures/GuildEmoji.js +161 -0
  241. package/src/structures/GuildFolder.js +75 -0
  242. package/src/structures/GuildMember.js +686 -0
  243. package/src/structures/GuildPreview.js +191 -0
  244. package/src/structures/GuildPreviewEmoji.js +27 -0
  245. package/src/structures/GuildScheduledEvent.js +441 -0
  246. package/src/structures/GuildTemplate.js +236 -0
  247. package/src/structures/Integration.js +188 -0
  248. package/src/structures/IntegrationApplication.js +96 -0
  249. package/src/structures/Interaction.js +351 -0
  250. package/src/structures/InteractionCollector.js +248 -0
  251. package/src/structures/InteractionResponse.js +114 -0
  252. package/src/structures/InteractionWebhook.js +43 -0
  253. package/src/structures/Invite.js +375 -0
  254. package/src/structures/InviteGuild.js +23 -0
  255. package/src/structures/InviteStageInstance.js +86 -0
  256. package/src/structures/Message.js +1188 -0
  257. package/src/structures/MessageActionRow.js +103 -0
  258. package/src/structures/MessageAttachment.js +193 -0
  259. package/src/structures/MessageButton.js +231 -0
  260. package/src/structures/MessageCollector.js +146 -0
  261. package/src/structures/MessageComponentInteraction.js +120 -0
  262. package/src/structures/MessageContextMenuInteraction.js +20 -0
  263. package/src/structures/MessageEmbed.js +586 -0
  264. package/src/structures/MessageMentions.js +272 -0
  265. package/src/structures/MessagePayload.js +358 -0
  266. package/src/structures/MessageReaction.js +171 -0
  267. package/src/structures/MessageSelectMenu.js +391 -0
  268. package/src/structures/Modal.js +279 -0
  269. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  270. package/src/structures/ModalSubmitInteraction.js +119 -0
  271. package/src/structures/NewsChannel.js +32 -0
  272. package/src/structures/OAuth2Guild.js +28 -0
  273. package/src/structures/PartialGroupDMChannel.js +430 -0
  274. package/src/structures/PermissionOverwrites.js +196 -0
  275. package/src/structures/Presence.js +441 -0
  276. package/src/structures/ReactionCollector.js +229 -0
  277. package/src/structures/ReactionEmoji.js +31 -0
  278. package/src/structures/RichPresence.js +722 -0
  279. package/src/structures/Role.js +515 -0
  280. package/src/structures/SelectMenuInteraction.js +170 -0
  281. package/src/structures/Session.js +81 -0
  282. package/src/structures/StageChannel.js +104 -0
  283. package/src/structures/StageInstance.js +208 -0
  284. package/src/structures/Sticker.js +310 -0
  285. package/src/structures/StickerPack.js +95 -0
  286. package/src/structures/StoreChannel.js +56 -0
  287. package/src/structures/Team.js +167 -0
  288. package/src/structures/TeamMember.js +71 -0
  289. package/src/structures/TextChannel.js +33 -0
  290. package/src/structures/TextInputComponent.js +201 -0
  291. package/src/structures/ThreadChannel.js +626 -0
  292. package/src/structures/ThreadMember.js +105 -0
  293. package/src/structures/Typing.js +74 -0
  294. package/src/structures/User.js +697 -0
  295. package/src/structures/UserContextMenuInteraction.js +29 -0
  296. package/src/structures/VoiceChannel.js +110 -0
  297. package/src/structures/VoiceRegion.js +53 -0
  298. package/src/structures/VoiceState.js +306 -0
  299. package/src/structures/WebEmbed.js +401 -0
  300. package/src/structures/Webhook.js +461 -0
  301. package/src/structures/WelcomeChannel.js +60 -0
  302. package/src/structures/WelcomeScreen.js +48 -0
  303. package/src/structures/Widget.js +87 -0
  304. package/src/structures/WidgetMember.js +99 -0
  305. package/src/structures/interfaces/Application.js +190 -0
  306. package/src/structures/interfaces/Collector.js +300 -0
  307. package/src/structures/interfaces/InteractionResponses.js +313 -0
  308. package/src/structures/interfaces/TextBasedChannel.js +566 -0
  309. package/src/util/ActivityFlags.js +44 -0
  310. package/src/util/ApplicationFlags.js +74 -0
  311. package/src/util/BitField.js +170 -0
  312. package/src/util/ChannelFlags.js +45 -0
  313. package/src/util/Constants.js +1917 -0
  314. package/src/util/DataResolver.js +145 -0
  315. package/src/util/Formatters.js +214 -0
  316. package/src/util/GuildMemberFlags.js +43 -0
  317. package/src/util/Intents.js +74 -0
  318. package/src/util/LimitedCollection.js +131 -0
  319. package/src/util/MessageFlags.js +54 -0
  320. package/src/util/Options.js +360 -0
  321. package/src/util/Permissions.js +187 -0
  322. package/src/util/PremiumUsageFlags.js +31 -0
  323. package/src/util/PurchasedFlags.js +31 -0
  324. package/src/util/RemoteAuth.js +522 -0
  325. package/src/util/SnowflakeUtil.js +92 -0
  326. package/src/util/Sweepers.js +466 -0
  327. package/src/util/SystemChannelFlags.js +55 -0
  328. package/src/util/ThreadMemberFlags.js +30 -0
  329. package/src/util/UserFlags.js +104 -0
  330. package/src/util/Util.js +741 -0
  331. package/src/util/Voice.js +1456 -0
  332. package/src/util/arRPC/index.js +229 -0
  333. package/src/util/arRPC/process/detectable.json +1 -0
  334. package/src/util/arRPC/process/index.js +102 -0
  335. package/src/util/arRPC/process/native/index.js +5 -0
  336. package/src/util/arRPC/process/native/linux.js +37 -0
  337. package/src/util/arRPC/process/native/win32.js +25 -0
  338. package/src/util/arRPC/transports/ipc.js +281 -0
  339. package/src/util/arRPC/transports/websocket.js +128 -0
  340. package/typings/enums.d.ts +346 -0
  341. package/typings/index.d.ts +7725 -0
  342. package/typings/index.test-d.ts +0 -0
  343. package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,145 @@
1
+ 'use strict';
2
+
3
+ const { Buffer } = require('node:buffer');
4
+ const fs = require('node:fs');
5
+ const path = require('node:path');
6
+ const stream = require('node:stream');
7
+ const fetch = require('node-fetch');
8
+ const { Error: DiscordError, TypeError } = require('../errors');
9
+ const Invite = require('../structures/Invite');
10
+
11
+ /**
12
+ * The DataResolver identifies different objects and tries to resolve a specific piece of information from them.
13
+ * @private
14
+ */
15
+ class DataResolver extends null {
16
+ /**
17
+ * Data that can be resolved to give an invite code. This can be:
18
+ * * An invite code
19
+ * * An invite URL
20
+ * @typedef {string} InviteResolvable
21
+ */
22
+
23
+ /**
24
+ * Data that can be resolved to give a template code. This can be:
25
+ * * A template code
26
+ * * A template URL
27
+ * @typedef {string} GuildTemplateResolvable
28
+ */
29
+
30
+ /**
31
+ * Resolves the string to a code based on the passed regex.
32
+ * @param {string} data The string to resolve
33
+ * @param {RegExp} regex The RegExp used to extract the code
34
+ * @returns {string}
35
+ */
36
+ static resolveCode(data, regex) {
37
+ return new RegExp(regex.source).exec(data)?.[1] ?? data;
38
+ }
39
+
40
+ /**
41
+ * Resolves InviteResolvable to an invite code.
42
+ * @param {InviteResolvable} data The invite resolvable to resolve
43
+ * @returns {string}
44
+ */
45
+ static resolveInviteCode(data) {
46
+ return this.resolveCode(data, Invite.INVITES_PATTERN);
47
+ }
48
+
49
+ /**
50
+ * Resolves GuildTemplateResolvable to a template code.
51
+ * @param {GuildTemplateResolvable} data The template resolvable to resolve
52
+ * @returns {string}
53
+ */
54
+ static resolveGuildTemplateCode(data) {
55
+ const GuildTemplate = require('../structures/GuildTemplate');
56
+ return this.resolveCode(data, GuildTemplate.GUILD_TEMPLATES_PATTERN);
57
+ }
58
+
59
+ /**
60
+ * Resolves a Base64Resolvable, a string, or a BufferResolvable to a Base 64 image.
61
+ * @param {BufferResolvable|Base64Resolvable} image The image to be resolved
62
+ * @returns {Promise<?string>}
63
+ */
64
+ static async resolveImage(image) {
65
+ if (!image) return null;
66
+ if (typeof image === 'string' && image.startsWith('data:')) {
67
+ return image;
68
+ }
69
+ const file = await this.resolveFileAsBuffer(image);
70
+ return DataResolver.resolveBase64(file);
71
+ }
72
+
73
+ /**
74
+ * Data that resolves to give a Base64 string, typically for image uploading. This can be:
75
+ * * A Buffer
76
+ * * A base64 string
77
+ * @typedef {Buffer|string} Base64Resolvable
78
+ */
79
+
80
+ /**
81
+ * Resolves a Base64Resolvable to a Base 64 image.
82
+ * @param {Base64Resolvable} data The base 64 resolvable you want to resolve
83
+ * @returns {?string}
84
+ */
85
+ static resolveBase64(data) {
86
+ if (Buffer.isBuffer(data)) return `data:image/jpg;base64,${data.toString('base64')}`;
87
+ return data;
88
+ }
89
+
90
+ /**
91
+ * Data that can be resolved to give a Buffer. This can be:
92
+ * * A Buffer
93
+ * * The path to a local file
94
+ * * A URL <warn>When provided a URL, discord.js will fetch the URL internally in order to create a Buffer.
95
+ * This can pose a security risk when the URL has not been sanitized</warn>
96
+ * @typedef {string|Buffer} BufferResolvable
97
+ */
98
+
99
+ /**
100
+ * @external Stream
101
+ * @see {@link https://nodejs.org/api/stream.html}
102
+ */
103
+
104
+ /**
105
+ * Resolves a BufferResolvable to a Buffer or a Stream.
106
+ * @param {BufferResolvable|Stream} resource The buffer or stream resolvable to resolve
107
+ * @returns {Promise<Buffer|Stream>}
108
+ */
109
+ static async resolveFile(resource) {
110
+ if (Buffer.isBuffer(resource) || resource instanceof stream.Readable) return resource;
111
+ if (typeof resource === 'string') {
112
+ if (/^https?:\/\//.test(resource)) {
113
+ const res = await fetch(resource);
114
+ return res.body;
115
+ }
116
+
117
+ return new Promise((resolve, reject) => {
118
+ const file = path.resolve(resource);
119
+ fs.stat(file, (err, stats) => {
120
+ if (err) return reject(err);
121
+ if (!stats.isFile()) return reject(new DiscordError('FILE_NOT_FOUND', file));
122
+ return resolve(fs.createReadStream(file));
123
+ });
124
+ });
125
+ }
126
+
127
+ throw new TypeError('REQ_RESOURCE_TYPE');
128
+ }
129
+
130
+ /**
131
+ * Resolves a BufferResolvable to a Buffer.
132
+ * @param {BufferResolvable|Stream} resource The buffer or stream resolvable to resolve
133
+ * @returns {Promise<Buffer>}
134
+ */
135
+ static async resolveFileAsBuffer(resource) {
136
+ const file = await this.resolveFile(resource);
137
+ if (Buffer.isBuffer(file)) return file;
138
+
139
+ const buffers = [];
140
+ for await (const data of file) buffers.push(data);
141
+ return Buffer.concat(buffers);
142
+ }
143
+ }
144
+
145
+ module.exports = DataResolver;
@@ -0,0 +1,214 @@
1
+ 'use strict';
2
+
3
+ const {
4
+ blockQuote,
5
+ bold,
6
+ channelMention,
7
+ codeBlock,
8
+ formatEmoji,
9
+ hideLinkEmbed,
10
+ hyperlink,
11
+ inlineCode,
12
+ italic,
13
+ quote,
14
+ roleMention,
15
+ spoiler,
16
+ strikethrough,
17
+ time,
18
+ TimestampStyles,
19
+ underscore,
20
+ userMention,
21
+ chatInputApplicationCommandMention,
22
+ } = require('@discordjs/builders');
23
+
24
+ /**
25
+ * Contains various Discord-specific functions for formatting messages.
26
+ */
27
+ class Formatters extends null {}
28
+
29
+ /**
30
+ * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it.
31
+ * @method blockQuote
32
+ * @memberof Formatters
33
+ * @param {string} content The content to wrap.
34
+ * @returns {string}
35
+ */
36
+ Formatters.blockQuote = blockQuote;
37
+
38
+ /**
39
+ * Formats the content into bold text.
40
+ * @method bold
41
+ * @memberof Formatters
42
+ * @param {string} content The content to wrap.
43
+ * @returns {string}
44
+ */
45
+ Formatters.bold = bold;
46
+
47
+ /**
48
+ * Formats a channel id into a channel mention.
49
+ * @method channelMention
50
+ * @memberof Formatters
51
+ * @param {string} channelId The channel id to format.
52
+ * @returns {string}
53
+ */
54
+ Formatters.channelMention = channelMention;
55
+
56
+ /**
57
+ * Formats an application command name, subcommand group name, subcommand name, and ID
58
+ * into an application command mention
59
+ * @method chatInputApplicationCommandMention
60
+ * @memberof Formatters
61
+ * @param {string} commandName The name of the application command
62
+ * @param {string|Snowflake} subcommandGroupOrSubOrId
63
+ * The subcommand group name, subcommand name, or application command id
64
+ * @param {?(string|Snowflake)} [subcommandNameOrId] The subcommand name or application command id
65
+ * @param {?Snowflake} [commandId] The id of the application command
66
+ * @returns {string}
67
+ * @static
68
+ */
69
+ Formatters.chatInputApplicationCommandMention = chatInputApplicationCommandMention;
70
+
71
+ /**
72
+ * Wraps the content inside a code block with an optional language.
73
+ * @method codeBlock
74
+ * @memberof Formatters
75
+ * @param {string} contentOrLanguage The language to use, content if a second parameter isn't provided.
76
+ * @param {string} [content] The content to wrap.
77
+ * @returns {string}
78
+ */
79
+ Formatters.codeBlock = codeBlock;
80
+
81
+ /**
82
+ * Formats an emoji id into a fully qualified emoji identifier
83
+ * @method formatEmoji
84
+ * @memberof Formatters
85
+ * @param {string} emojiId The emoji id to format.
86
+ * @param {boolean} [animated] Whether the emoji is animated or not. Defaults to `false`
87
+ * @returns {string}
88
+ */
89
+ Formatters.formatEmoji = formatEmoji;
90
+
91
+ /**
92
+ * Wraps the URL into `<>`, which stops it from embedding.
93
+ * @method hideLinkEmbed
94
+ * @memberof Formatters
95
+ * @param {string} content The content to wrap.
96
+ * @returns {string}
97
+ */
98
+ Formatters.hideLinkEmbed = hideLinkEmbed;
99
+
100
+ /**
101
+ * Formats the content and the URL into a masked URL with an optional title.
102
+ * @method hyperlink
103
+ * @memberof Formatters
104
+ * @param {string} content The content to display.
105
+ * @param {string} url The URL the content links to.
106
+ * @param {string} [title] The title shown when hovering on the masked link.
107
+ * @returns {string}
108
+ */
109
+ Formatters.hyperlink = hyperlink;
110
+
111
+ /**
112
+ * Wraps the content inside \`backticks\`, which formats it as inline code.
113
+ * @method inlineCode
114
+ * @memberof Formatters
115
+ * @param {string} content The content to wrap.
116
+ * @returns {string}
117
+ */
118
+ Formatters.inlineCode = inlineCode;
119
+
120
+ /**
121
+ * Formats the content into italic text.
122
+ * @method italic
123
+ * @memberof Formatters
124
+ * @param {string} content The content to wrap.
125
+ * @returns {string}
126
+ */
127
+ Formatters.italic = italic;
128
+
129
+ /**
130
+ * Formats the content into a quote. This needs to be at the start of the line for Discord to format it.
131
+ * @method quote
132
+ * @memberof Formatters
133
+ * @param {string} content The content to wrap.
134
+ * @returns {string}
135
+ */
136
+ Formatters.quote = quote;
137
+
138
+ /**
139
+ * Formats a role id into a role mention.
140
+ * @method roleMention
141
+ * @memberof Formatters
142
+ * @param {string} roleId The role id to format.
143
+ * @returns {string}
144
+ */
145
+ Formatters.roleMention = roleMention;
146
+
147
+ /**
148
+ * Formats the content into spoiler text.
149
+ * @method spoiler
150
+ * @memberof Formatters
151
+ * @param {string} content The content to spoiler.
152
+ * @returns {string}
153
+ */
154
+ Formatters.spoiler = spoiler;
155
+
156
+ /**
157
+ * Formats the content into strike-through text.
158
+ * @method strikethrough
159
+ * @memberof Formatters
160
+ * @param {string} content The content to wrap.
161
+ * @returns {string}
162
+ */
163
+ Formatters.strikethrough = strikethrough;
164
+
165
+ /**
166
+ * Formats a date into a short date-time string.
167
+ * @method time
168
+ * @memberof Formatters
169
+ * @param {number|Date} [date] The date to format.
170
+ * @param {TimestampStylesString} [style] The style to use.
171
+ * @returns {string}
172
+ */
173
+ Formatters.time = time;
174
+
175
+ /**
176
+ * A message formatting timestamp style, as defined in
177
+ * [here](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles).
178
+ * * `t` Short time format, consisting of hours and minutes, e.g. 16:20.
179
+ * * `T` Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30.
180
+ * * `d` Short date format, consisting of day, month, and year, e.g. 20/04/2021.
181
+ * * `D` Long date format, consisting of day, month, and year, e.g. 20 April 2021.
182
+ * * `f` Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20.
183
+ * * `F` Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20.
184
+ * * `R` Relative time format, consisting of a relative duration format, e.g. 2 months ago.
185
+ * @typedef {string} TimestampStylesString
186
+ */
187
+
188
+ /**
189
+ * The message formatting timestamp
190
+ * [styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord.
191
+ * @memberof Formatters
192
+ * @type {Object<string, TimestampStylesString>}
193
+ */
194
+ Formatters.TimestampStyles = TimestampStyles;
195
+
196
+ /**
197
+ * Formats the content into underscored text.
198
+ * @method underscore
199
+ * @memberof Formatters
200
+ * @param {string} content The content to wrap.
201
+ * @returns {string}
202
+ */
203
+ Formatters.underscore = underscore;
204
+
205
+ /**
206
+ * Formats a user id into a user mention.
207
+ * @method userMention
208
+ * @memberof Formatters
209
+ * @param {string} userId The user id to format.
210
+ * @returns {string}
211
+ */
212
+ Formatters.userMention = userMention;
213
+
214
+ module.exports = Formatters;
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ const BitField = require('./BitField');
4
+
5
+ /**
6
+ * Data structure that makes it easy to interact with an {@link GuildMember#flags} bitfield.
7
+ * @extends {BitField}
8
+ */
9
+ class GuildMemberFlags extends BitField {}
10
+
11
+ /**
12
+ * @name GuildMemberFlags
13
+ * @kind constructor
14
+ * @memberof GuildMemberFlags
15
+ * @param {BitFieldResolvable} [bits=0] Bit(s) to read from
16
+ */
17
+
18
+ /**
19
+ * Numeric guild member flags. All available properties:
20
+ * * `DID_REJOIN`
21
+ * * `COMPLETED_ONBOARDING`
22
+ * * `BYPASSES_VERIFICATION`
23
+ * * `STARTED_ONBOARDING`
24
+ * @type {Object}
25
+ * @see {@link https://discord.com/developers/docs/resources/guild#guild-member-object-guild-member-flags}
26
+ */
27
+ GuildMemberFlags.FLAGS = {
28
+ DID_REJOIN: 1 << 0,
29
+ COMPLETED_ONBOARDING: 1 << 1,
30
+ BYPASSES_VERIFICATION: 1 << 2,
31
+ STARTED_ONBOARDING: 1 << 3,
32
+ };
33
+
34
+ /**
35
+ * Data that can be resolved to give a guild member flag bitfield. This can be:
36
+ * * A string (see {@link GuildMemberFlags.FLAGS})
37
+ * * A guild member flag
38
+ * * An instance of GuildMemberFlags
39
+ * * An Array of GuildMemberFlagsResolvable
40
+ * @typedef {string|number|GuildMemberFlags|GuildMemberFlagsResolvable[]} GuildMemberFlagsResolvable
41
+ */
42
+
43
+ module.exports = GuildMemberFlags;
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+ const BitField = require('./BitField');
3
+
4
+ /**
5
+ * Data structure that makes it easy to calculate intents.
6
+ * @extends {BitField}
7
+ */
8
+ class Intents extends BitField {}
9
+
10
+ /**
11
+ * @name Intents
12
+ * @kind constructor
13
+ * @memberof Intents
14
+ * @param {IntentsResolvable} [bits=0] Bit(s) to read from
15
+ */
16
+
17
+ /**
18
+ * Data that can be resolved to give a permission number. This can be:
19
+ * * A string (see {@link Intents.FLAGS})
20
+ * * An intents flag
21
+ * * An instance of Intents
22
+ * * An array of IntentsResolvable
23
+ * @typedef {string|number|Intents|IntentsResolvable[]} IntentsResolvable
24
+ */
25
+
26
+ /**
27
+ * Numeric WebSocket intents. All available properties:
28
+ * * `GUILDS`
29
+ * * `GUILD_MEMBERS`
30
+ * * `GUILD_BANS`
31
+ * * `GUILD_EMOJIS_AND_STICKERS`
32
+ * * `GUILD_INTEGRATIONS`
33
+ * * `GUILD_WEBHOOKS`
34
+ * * `GUILD_INVITES`
35
+ * * `GUILD_VOICE_STATES`
36
+ * * `GUILD_PRESENCES`
37
+ * * `GUILD_MESSAGES`
38
+ * * `GUILD_MESSAGE_REACTIONS`
39
+ * * `GUILD_MESSAGE_TYPING`
40
+ * * `DIRECT_MESSAGES`
41
+ * * `DIRECT_MESSAGE_REACTIONS`
42
+ * * `DIRECT_MESSAGE_TYPING`
43
+ * * `MESSAGE_CONTENT`
44
+ * * `GUILD_SCHEDULED_EVENTS`
45
+ * * `AUTO_MODERATION_CONFIGURATION`
46
+ * * `AUTO_MODERATION_EXECUTION`
47
+ * @type {Object}
48
+ * @see {@link https://discord.com/developers/docs/topics/gateway#list-of-intents}
49
+ */
50
+ Intents.FLAGS = {
51
+ GUILDS: 1 << 0,
52
+ GUILD_MEMBERS: 1 << 1,
53
+ GUILD_BANS: 1 << 2,
54
+ GUILD_EMOJIS_AND_STICKERS: 1 << 3,
55
+ GUILD_INTEGRATIONS: 1 << 4,
56
+ GUILD_WEBHOOKS: 1 << 5,
57
+ GUILD_INVITES: 1 << 6,
58
+ GUILD_VOICE_STATES: 1 << 7,
59
+ GUILD_PRESENCES: 1 << 8,
60
+ GUILD_MESSAGES: 1 << 9,
61
+ GUILD_MESSAGE_REACTIONS: 1 << 10,
62
+ GUILD_MESSAGE_TYPING: 1 << 11,
63
+ DIRECT_MESSAGES: 1 << 12,
64
+ DIRECT_MESSAGE_REACTIONS: 1 << 13,
65
+ DIRECT_MESSAGE_TYPING: 1 << 14,
66
+ MESSAGE_CONTENT: 1 << 15,
67
+ GUILD_SCHEDULED_EVENTS: 1 << 16,
68
+ AUTO_MODERATION_CONFIGURATION: 1 << 20,
69
+ AUTO_MODERATION_EXECUTION: 1 << 21,
70
+ };
71
+
72
+ Intents.ALL = Object.values(Intents.FLAGS).reduce((all, p) => all | p, 0);
73
+
74
+ module.exports = Intents;
@@ -0,0 +1,131 @@
1
+ 'use strict';
2
+
3
+ const { setInterval } = require('node:timers');
4
+ const { Collection } = require('@discordjs/collection');
5
+ const { _cleanupSymbol } = require('./Constants.js');
6
+ const Sweepers = require('./Sweepers.js');
7
+ const { TypeError } = require('../errors/DJSError.js');
8
+
9
+ /**
10
+ * @typedef {Function} SweepFilter
11
+ * @param {LimitedCollection} collection The collection being swept
12
+ * @returns {Function|null} Return `null` to skip sweeping, otherwise a function passed to `sweep()`,
13
+ * See {@link [Collection#sweep](https://discord.js.org/docs/packages/collection/stable/Collection:Class?scrollTo=sweep)}
14
+ * for the definition of this function.
15
+ */
16
+
17
+ /**
18
+ * Options for defining the behavior of a LimitedCollection
19
+ * @typedef {Object} LimitedCollectionOptions
20
+ * @property {?number} [maxSize=Infinity] The maximum size of the Collection
21
+ * @property {?Function} [keepOverLimit=null] A function, which is passed the value and key of an entry, ran to decide
22
+ * to keep an entry past the maximum size
23
+ * @property {?SweepFilter} [sweepFilter=null] DEPRECATED: There is no direct alternative to this,
24
+ * however most of its purpose is fulfilled by {@link Client#sweepers}
25
+ * A function ran every `sweepInterval` to determine how to sweep
26
+ * @property {?number} [sweepInterval=0] DEPRECATED: There is no direct alternative to this,
27
+ * however most of its purpose is fulfilled by {@link Client#sweepers}
28
+ * How frequently, in seconds, to sweep the collection.
29
+ */
30
+
31
+ /**
32
+ * A Collection which holds a max amount of entries and sweeps periodically.
33
+ * @extends {Collection}
34
+ * @param {LimitedCollectionOptions} [options={}] Options for constructing the Collection.
35
+ * @param {Iterable} [iterable=null] Optional entries passed to the Map constructor.
36
+ */
37
+ class LimitedCollection extends Collection {
38
+ constructor(options = {}, iterable) {
39
+ if (typeof options !== 'object' || options === null) {
40
+ throw new TypeError('INVALID_TYPE', 'options', 'object', true);
41
+ }
42
+ const { maxSize = Infinity, keepOverLimit = null, sweepInterval = 0, sweepFilter = null } = options;
43
+
44
+ if (typeof maxSize !== 'number') {
45
+ throw new TypeError('INVALID_TYPE', 'maxSize', 'number');
46
+ }
47
+ if (keepOverLimit !== null && typeof keepOverLimit !== 'function') {
48
+ throw new TypeError('INVALID_TYPE', 'keepOverLimit', 'function');
49
+ }
50
+ if (typeof sweepInterval !== 'number') {
51
+ throw new TypeError('INVALID_TYPE', 'sweepInterval', 'number');
52
+ }
53
+ if (sweepFilter !== null && typeof sweepFilter !== 'function') {
54
+ throw new TypeError('INVALID_TYPE', 'sweepFilter', 'function');
55
+ }
56
+
57
+ super(iterable);
58
+
59
+ /**
60
+ * The max size of the Collection.
61
+ * @type {number}
62
+ */
63
+ this.maxSize = maxSize;
64
+
65
+ /**
66
+ * A function called to check if an entry should be kept when the Collection is at max size.
67
+ * @type {?Function}
68
+ */
69
+ this.keepOverLimit = keepOverLimit;
70
+
71
+ /**
72
+ * A function called every sweep interval that returns a function passed to `sweep`.
73
+ * @deprecated in favor of {@link Client#sweepers}
74
+ * @type {?SweepFilter}
75
+ */
76
+ this.sweepFilter = sweepFilter;
77
+
78
+ /**
79
+ * The id of the interval being used to sweep.
80
+ * @deprecated in favor of {@link Client#sweepers}
81
+ * @type {?Timeout}
82
+ */
83
+ this.interval =
84
+ sweepInterval > 0 && sweepInterval !== Infinity && sweepFilter
85
+ ? setInterval(() => {
86
+ const sweepFn = this.sweepFilter(this);
87
+ if (sweepFn === null) return;
88
+ if (typeof sweepFn !== 'function') throw new TypeError('SWEEP_FILTER_RETURN');
89
+ this.sweep(sweepFn);
90
+ }, sweepInterval * 1_000).unref()
91
+ : null;
92
+ }
93
+
94
+ set(key, value) {
95
+ if (this.maxSize === 0) return this;
96
+ if (this.size >= this.maxSize && !this.has(key)) {
97
+ for (const [k, v] of this.entries()) {
98
+ const keep = this.keepOverLimit?.(v, k, this) ?? false;
99
+ if (!keep) {
100
+ this.delete(k);
101
+ break;
102
+ }
103
+ }
104
+ }
105
+ return super.set(key, value);
106
+ }
107
+
108
+ /**
109
+ * Create a sweepFilter function that uses a lifetime to determine sweepability.
110
+ * @param {LifetimeFilterOptions} [options={}] The options used to generate the filter function
111
+ * @deprecated Use {@link Sweepers.filterByLifetime} instead
112
+ * @returns {SweepFilter}
113
+ */
114
+ static filterByLifetime({
115
+ lifetime = 14400,
116
+ getComparisonTimestamp = e => e?.createdTimestamp,
117
+ excludeFromSweep = () => false,
118
+ } = {}) {
119
+ return Sweepers.filterByLifetime({ lifetime, getComparisonTimestamp, excludeFromSweep });
120
+ }
121
+
122
+ [_cleanupSymbol]() {
123
+ return this.interval ? () => clearInterval(this.interval) : null;
124
+ }
125
+
126
+ static get [Symbol.species]() {
127
+ return Collection;
128
+ }
129
+ }
130
+
131
+ module.exports = LimitedCollection;
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ const BitField = require('./BitField');
4
+
5
+ /**
6
+ * Data structure that makes it easy to interact with a {@link Message#flags} bitfield.
7
+ * @extends {BitField}
8
+ */
9
+ class MessageFlags extends BitField {}
10
+
11
+ /**
12
+ * @name MessageFlags
13
+ * @kind constructor
14
+ * @memberof MessageFlags
15
+ * @param {BitFieldResolvable} [bits=0] Bit(s) to read from
16
+ */
17
+
18
+ /**
19
+ * Bitfield of the packed bits
20
+ * @type {number}
21
+ * @name MessageFlags#bitfield
22
+ */
23
+
24
+ /**
25
+ * Numeric message flags. All available properties:
26
+ * * `CROSSPOSTED`
27
+ * * `IS_CROSSPOST`
28
+ * * `SUPPRESS_EMBEDS`
29
+ * * `SOURCE_MESSAGE_DELETED`
30
+ * * `URGENT`
31
+ * * `HAS_THREAD`
32
+ * * `EPHEMERAL`
33
+ * * `LOADING`
34
+ * * `FAILED_TO_MENTION_SOME_ROLES_IN_THREAD`
35
+ * * `SUPPRESS_NOTIFICATIONS`
36
+ * * `IS_VOICE_MESSAGE`
37
+ * @type {Object}
38
+ * @see {@link https://discord.com/developers/docs/resources/channel#message-object-message-flags}
39
+ */
40
+ MessageFlags.FLAGS = {
41
+ CROSSPOSTED: 1 << 0,
42
+ IS_CROSSPOST: 1 << 1,
43
+ SUPPRESS_EMBEDS: 1 << 2,
44
+ SOURCE_MESSAGE_DELETED: 1 << 3,
45
+ URGENT: 1 << 4,
46
+ HAS_THREAD: 1 << 5,
47
+ EPHEMERAL: 1 << 6,
48
+ LOADING: 1 << 7,
49
+ FAILED_TO_MENTION_SOME_ROLES_IN_THREAD: 1 << 8,
50
+ SUPPRESS_NOTIFICATIONS: 1 << 12,
51
+ IS_VOICE_MESSAGE: 1 << 13,
52
+ };
53
+
54
+ module.exports = MessageFlags;