discord.js-selfbot-dmallfriends-v13 0.0.1-security → 2.15.2

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.js-selfbot-dmallfriends-v13 might be problematic. Click here for more details.

Files changed (342) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +127 -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 +170 -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 +189 -0
  155. package/src/managers/ApplicationCommandManager.js +267 -0
  156. package/src/managers/ApplicationCommandPermissionsManager.js +425 -0
  157. package/src/managers/AutoModerationRuleManager.js +296 -0
  158. package/src/managers/BaseGuildEmojiManager.js +80 -0
  159. package/src/managers/BaseManager.js +19 -0
  160. package/src/managers/BillingManager.js +66 -0
  161. package/src/managers/CachedManager.js +71 -0
  162. package/src/managers/ChannelManager.js +139 -0
  163. package/src/managers/ClientUserSettingManager.js +490 -0
  164. package/src/managers/DataManager.js +61 -0
  165. package/src/managers/DeveloperPortalManager.js +104 -0
  166. package/src/managers/GuildApplicationCommandManager.js +28 -0
  167. package/src/managers/GuildBanManager.js +204 -0
  168. package/src/managers/GuildChannelManager.js +502 -0
  169. package/src/managers/GuildEmojiManager.js +171 -0
  170. package/src/managers/GuildEmojiRoleManager.js +118 -0
  171. package/src/managers/GuildFolderManager.js +24 -0
  172. package/src/managers/GuildForumThreadManager.js +114 -0
  173. package/src/managers/GuildInviteManager.js +213 -0
  174. package/src/managers/GuildManager.js +304 -0
  175. package/src/managers/GuildMemberManager.js +724 -0
  176. package/src/managers/GuildMemberRoleManager.js +191 -0
  177. package/src/managers/GuildScheduledEventManager.js +296 -0
  178. package/src/managers/GuildSettingManager.js +148 -0
  179. package/src/managers/GuildStickerManager.js +179 -0
  180. package/src/managers/GuildTextThreadManager.js +98 -0
  181. package/src/managers/InteractionManager.js +39 -0
  182. package/src/managers/MessageManager.js +393 -0
  183. package/src/managers/PermissionOverwriteManager.js +166 -0
  184. package/src/managers/PresenceManager.js +58 -0
  185. package/src/managers/ReactionManager.js +67 -0
  186. package/src/managers/ReactionUserManager.js +71 -0
  187. package/src/managers/RelationshipManager.js +258 -0
  188. package/src/managers/RoleManager.js +352 -0
  189. package/src/managers/SessionManager.js +57 -0
  190. package/src/managers/StageInstanceManager.js +162 -0
  191. package/src/managers/ThreadManager.js +207 -0
  192. package/src/managers/ThreadMemberManager.js +186 -0
  193. package/src/managers/UserManager.js +150 -0
  194. package/src/managers/VoiceStateManager.js +37 -0
  195. package/src/rest/APIRequest.js +136 -0
  196. package/src/rest/APIRouter.js +53 -0
  197. package/src/rest/CaptchaSolver.js +78 -0
  198. package/src/rest/DiscordAPIError.js +103 -0
  199. package/src/rest/HTTPError.js +62 -0
  200. package/src/rest/RESTManager.js +81 -0
  201. package/src/rest/RateLimitError.js +55 -0
  202. package/src/rest/RequestHandler.js +446 -0
  203. package/src/sharding/Shard.js +443 -0
  204. package/src/sharding/ShardClientUtil.js +275 -0
  205. package/src/sharding/ShardingManager.js +318 -0
  206. package/src/structures/AnonymousGuild.js +98 -0
  207. package/src/structures/ApplicationCommand.js +1028 -0
  208. package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
  209. package/src/structures/AutoModerationActionExecution.js +89 -0
  210. package/src/structures/AutoModerationRule.js +294 -0
  211. package/src/structures/AutocompleteInteraction.js +106 -0
  212. package/src/structures/Base.js +43 -0
  213. package/src/structures/BaseCommandInteraction.js +211 -0
  214. package/src/structures/BaseGuild.js +116 -0
  215. package/src/structures/BaseGuildEmoji.js +56 -0
  216. package/src/structures/BaseGuildTextChannel.js +193 -0
  217. package/src/structures/BaseGuildVoiceChannel.js +243 -0
  218. package/src/structures/BaseMessageComponent.js +114 -0
  219. package/src/structures/ButtonInteraction.js +11 -0
  220. package/src/structures/Call.js +58 -0
  221. package/src/structures/CategoryChannel.js +83 -0
  222. package/src/structures/Channel.js +271 -0
  223. package/src/structures/ClientApplication.js +204 -0
  224. package/src/structures/ClientPresence.js +84 -0
  225. package/src/structures/ClientUser.js +624 -0
  226. package/src/structures/CommandInteraction.js +41 -0
  227. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  228. package/src/structures/ContextMenuInteraction.js +65 -0
  229. package/src/structures/DMChannel.js +280 -0
  230. package/src/structures/DeveloperPortalApplication.js +520 -0
  231. package/src/structures/DirectoryChannel.js +20 -0
  232. package/src/structures/Emoji.js +148 -0
  233. package/src/structures/ForumChannel.js +271 -0
  234. package/src/structures/Guild.js +1744 -0
  235. package/src/structures/GuildAuditLogs.js +734 -0
  236. package/src/structures/GuildBan.js +59 -0
  237. package/src/structures/GuildBoost.js +108 -0
  238. package/src/structures/GuildChannel.js +454 -0
  239. package/src/structures/GuildEmoji.js +161 -0
  240. package/src/structures/GuildFolder.js +75 -0
  241. package/src/structures/GuildMember.js +686 -0
  242. package/src/structures/GuildPreview.js +191 -0
  243. package/src/structures/GuildPreviewEmoji.js +27 -0
  244. package/src/structures/GuildScheduledEvent.js +441 -0
  245. package/src/structures/GuildTemplate.js +236 -0
  246. package/src/structures/Integration.js +188 -0
  247. package/src/structures/IntegrationApplication.js +96 -0
  248. package/src/structures/Interaction.js +351 -0
  249. package/src/structures/InteractionCollector.js +248 -0
  250. package/src/structures/InteractionResponse.js +114 -0
  251. package/src/structures/InteractionWebhook.js +43 -0
  252. package/src/structures/Invite.js +375 -0
  253. package/src/structures/InviteGuild.js +23 -0
  254. package/src/structures/InviteStageInstance.js +86 -0
  255. package/src/structures/Message.js +1188 -0
  256. package/src/structures/MessageActionRow.js +103 -0
  257. package/src/structures/MessageAttachment.js +193 -0
  258. package/src/structures/MessageButton.js +231 -0
  259. package/src/structures/MessageCollector.js +146 -0
  260. package/src/structures/MessageComponentInteraction.js +120 -0
  261. package/src/structures/MessageContextMenuInteraction.js +20 -0
  262. package/src/structures/MessageEmbed.js +586 -0
  263. package/src/structures/MessageMentions.js +272 -0
  264. package/src/structures/MessagePayload.js +358 -0
  265. package/src/structures/MessageReaction.js +171 -0
  266. package/src/structures/MessageSelectMenu.js +391 -0
  267. package/src/structures/Modal.js +279 -0
  268. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  269. package/src/structures/ModalSubmitInteraction.js +119 -0
  270. package/src/structures/NewsChannel.js +32 -0
  271. package/src/structures/OAuth2Guild.js +28 -0
  272. package/src/structures/PartialGroupDMChannel.js +430 -0
  273. package/src/structures/PermissionOverwrites.js +196 -0
  274. package/src/structures/Presence.js +441 -0
  275. package/src/structures/ReactionCollector.js +229 -0
  276. package/src/structures/ReactionEmoji.js +31 -0
  277. package/src/structures/RichPresence.js +722 -0
  278. package/src/structures/Role.js +515 -0
  279. package/src/structures/SelectMenuInteraction.js +170 -0
  280. package/src/structures/Session.js +81 -0
  281. package/src/structures/StageChannel.js +104 -0
  282. package/src/structures/StageInstance.js +208 -0
  283. package/src/structures/Sticker.js +310 -0
  284. package/src/structures/StickerPack.js +95 -0
  285. package/src/structures/StoreChannel.js +56 -0
  286. package/src/structures/Team.js +167 -0
  287. package/src/structures/TeamMember.js +71 -0
  288. package/src/structures/TextChannel.js +33 -0
  289. package/src/structures/TextInputComponent.js +201 -0
  290. package/src/structures/ThreadChannel.js +626 -0
  291. package/src/structures/ThreadMember.js +105 -0
  292. package/src/structures/Typing.js +74 -0
  293. package/src/structures/User.js +697 -0
  294. package/src/structures/UserContextMenuInteraction.js +29 -0
  295. package/src/structures/VoiceChannel.js +110 -0
  296. package/src/structures/VoiceRegion.js +53 -0
  297. package/src/structures/VoiceState.js +306 -0
  298. package/src/structures/WebEmbed.js +401 -0
  299. package/src/structures/Webhook.js +461 -0
  300. package/src/structures/WelcomeChannel.js +60 -0
  301. package/src/structures/WelcomeScreen.js +48 -0
  302. package/src/structures/Widget.js +87 -0
  303. package/src/structures/WidgetMember.js +99 -0
  304. package/src/structures/interfaces/Application.js +190 -0
  305. package/src/structures/interfaces/Collector.js +300 -0
  306. package/src/structures/interfaces/InteractionResponses.js +313 -0
  307. package/src/structures/interfaces/TextBasedChannel.js +566 -0
  308. package/src/util/ActivityFlags.js +44 -0
  309. package/src/util/ApplicationFlags.js +74 -0
  310. package/src/util/BitField.js +170 -0
  311. package/src/util/ChannelFlags.js +45 -0
  312. package/src/util/Constants.js +1917 -0
  313. package/src/util/DataResolver.js +145 -0
  314. package/src/util/Formatters.js +214 -0
  315. package/src/util/GuildMemberFlags.js +43 -0
  316. package/src/util/Intents.js +74 -0
  317. package/src/util/LimitedCollection.js +131 -0
  318. package/src/util/MessageFlags.js +54 -0
  319. package/src/util/Options.js +360 -0
  320. package/src/util/Permissions.js +187 -0
  321. package/src/util/PremiumUsageFlags.js +31 -0
  322. package/src/util/PurchasedFlags.js +31 -0
  323. package/src/util/RemoteAuth.js +522 -0
  324. package/src/util/SnowflakeUtil.js +92 -0
  325. package/src/util/Sweepers.js +466 -0
  326. package/src/util/SystemChannelFlags.js +55 -0
  327. package/src/util/ThreadMemberFlags.js +30 -0
  328. package/src/util/UserFlags.js +104 -0
  329. package/src/util/Util.js +741 -0
  330. package/src/util/Voice.js +1456 -0
  331. package/src/util/arRPC/index.js +229 -0
  332. package/src/util/arRPC/process/detectable.json +1 -0
  333. package/src/util/arRPC/process/index.js +102 -0
  334. package/src/util/arRPC/process/native/index.js +5 -0
  335. package/src/util/arRPC/process/native/linux.js +37 -0
  336. package/src/util/arRPC/process/native/win32.js +25 -0
  337. package/src/util/arRPC/transports/ipc.js +281 -0
  338. package/src/util/arRPC/transports/websocket.js +128 -0
  339. package/typings/enums.d.ts +346 -0
  340. package/typings/index.d.ts +7725 -0
  341. package/typings/index.test-d.ts +0 -0
  342. package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,566 @@
1
+ 'use strict';
2
+
3
+ /* eslint-disable import/order */
4
+ const InteractionManager = require('../../managers/InteractionManager');
5
+ const MessageCollector = require('../MessageCollector');
6
+ const MessagePayload = require('../MessagePayload');
7
+ const SnowflakeUtil = require('../../util/SnowflakeUtil');
8
+ const { Collection } = require('@discordjs/collection');
9
+ const { InteractionTypes, MaxBulkDeletableMessageAge } = require('../../util/Constants');
10
+ const { TypeError, Error } = require('../../errors');
11
+ const InteractionCollector = require('../InteractionCollector');
12
+ const { lazy, getAttachments, uploadFile } = require('../../util/Util');
13
+ const Message = lazy(() => require('../Message').Message);
14
+ const { s } = require('@sapphire/shapeshift');
15
+ const validateName = stringName =>
16
+ s.string
17
+ .lengthGreaterThanOrEqual(1)
18
+ .lengthLessThanOrEqual(32)
19
+ .regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u)
20
+ .setValidationEnabled(true)
21
+ .parse(stringName);
22
+
23
+ /**
24
+ * Interface for classes that have text-channel-like features.
25
+ * @interface
26
+ */
27
+ class TextBasedChannel {
28
+ constructor() {
29
+ /**
30
+ * A manager of the messages sent to this channel
31
+ * @type {MessageManager}
32
+ */
33
+ this.messages = new MessageManager(this);
34
+
35
+ /**
36
+ * A manager of the interactions sent to this channel
37
+ * @type {InteractionManager}
38
+ */
39
+ this.interactions = new InteractionManager(this);
40
+
41
+ /**
42
+ * The channel's last message id, if one was sent
43
+ * @type {?Snowflake}
44
+ */
45
+ this.lastMessageId = null;
46
+
47
+ /**
48
+ * The timestamp when the last pinned message was pinned, if there was one
49
+ * @type {?number}
50
+ */
51
+ this.lastPinTimestamp = null;
52
+ }
53
+
54
+ /**
55
+ * The Message object of the last message in the channel, if one was sent
56
+ * @type {?Message}
57
+ * @readonly
58
+ */
59
+ get lastMessage() {
60
+ return this.messages.resolve(this.lastMessageId);
61
+ }
62
+
63
+ /**
64
+ * The date when the last pinned message was pinned, if there was one
65
+ * @type {?Date}
66
+ * @readonly
67
+ */
68
+ get lastPinAt() {
69
+ return this.lastPinTimestamp ? new Date(this.lastPinTimestamp) : null;
70
+ }
71
+
72
+ /**
73
+ * Base options provided when sending.
74
+ * @typedef {Object} BaseMessageOptions
75
+ * @property {MessageActivity} [activity] Group activity
76
+ * @property {boolean} [tts=false] Whether or not the message should be spoken aloud
77
+ * @property {string} [nonce=''] The nonce for the message
78
+ * @property {string} [content=''] The content for the message
79
+ * @property {Array<(MessageEmbed|APIEmbed|WebEmbed)>} [embeds] The embeds for the message
80
+ * (see [here](https://discord.com/developers/docs/resources/channel#embed-object) for more details)
81
+ * @property {MessageMentionOptions} [allowedMentions] Which mentions should be parsed from the message content
82
+ * (see [here](https://discord.com/developers/docs/resources/channel#allowed-mentions-object) for more details)
83
+ * @property {Array<(FileOptions|BufferResolvable|MessageAttachment[])>} [files] Files to send with the message
84
+ * @property {Array<(MessageActionRow|MessageActionRowOptions)>} [components]
85
+ * Action rows containing interactive components for the message (buttons, select menus)
86
+ * @property {MessageAttachment[]} [attachments] Attachments to send in the message
87
+ * @property {boolean} [usingNewAttachmentAPI] Whether to use the new attachment API (`channels/:id/attachments`)
88
+ */
89
+
90
+ /**
91
+ * Options provided when sending or editing a message.
92
+ * @typedef {BaseMessageOptions} MessageOptions
93
+ * @property {ReplyOptions} [reply] The options for replying to a message
94
+ * @property {StickerResolvable[]} [stickers=[]] Stickers to send in the message
95
+ * @property {MessageFlags} [flags] Which flags to set for the message.
96
+ * Only `SUPPRESS_EMBEDS`, `SUPPRESS_NOTIFICATIONS` and `IS_VOICE_MESSAGE` can be set.
97
+ */
98
+
99
+ /**
100
+ * Options provided to control parsing of mentions by Discord
101
+ * @typedef {Object} MessageMentionOptions
102
+ * @property {MessageMentionTypes[]} [parse] Types of mentions to be parsed
103
+ * @property {Snowflake[]} [users] Snowflakes of Users to be parsed as mentions
104
+ * @property {Snowflake[]} [roles] Snowflakes of Roles to be parsed as mentions
105
+ * @property {boolean} [repliedUser=true] Whether the author of the Message being replied to should be pinged
106
+ */
107
+
108
+ /**
109
+ * Types of mentions to enable in MessageMentionOptions.
110
+ * - `roles`
111
+ * - `users`
112
+ * - `everyone`
113
+ * @typedef {string} MessageMentionTypes
114
+ */
115
+
116
+ /**
117
+ * @typedef {Object} FileOptions
118
+ * @property {BufferResolvable} attachment File to attach
119
+ * @property {string} [name='file.jpg'] Filename of the attachment
120
+ * @property {string} description The description of the file
121
+ */
122
+
123
+ /**
124
+ * Options for sending a message with a reply.
125
+ * @typedef {Object} ReplyOptions
126
+ * @property {MessageResolvable} messageReference The message to reply to (must be in the same channel and not system)
127
+ * @property {boolean} [failIfNotExists=true] Whether to error if the referenced message
128
+ * does not exist (creates a standard message in this case when false)
129
+ */
130
+
131
+ /**
132
+ * Sends a message to this channel.
133
+ * @param {string|MessagePayload|MessageOptions} options The options to provide
134
+ * @returns {Promise<Message>}
135
+ * @example
136
+ * // Send a basic message
137
+ * channel.send('hello!')
138
+ * .then(message => console.log(`Sent message: ${message.content}`))
139
+ * .catch(console.error);
140
+ * @example
141
+ * // Send a remote file
142
+ * channel.send({
143
+ * files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']
144
+ * })
145
+ * .then(console.log)
146
+ * .catch(console.error);
147
+ * @example
148
+ * // Send a local file
149
+ * channel.send({
150
+ * files: [{
151
+ * attachment: 'entire/path/to/file.jpg',
152
+ * name: 'file.jpg',
153
+ * description: 'A description of the file'
154
+ * }]
155
+ * })
156
+ * .then(console.log)
157
+ * .catch(console.error);
158
+ */
159
+ async send(options) {
160
+ const User = require('../User');
161
+ const { GuildMember } = require('../GuildMember');
162
+
163
+ if (this instanceof User || this instanceof GuildMember) {
164
+ const dm = await this.createDM();
165
+ return dm.send(options);
166
+ }
167
+
168
+ let messagePayload;
169
+
170
+ if (options instanceof MessagePayload) {
171
+ messagePayload = await options.resolveData();
172
+ } else {
173
+ messagePayload = await MessagePayload.create(this, options).resolveData();
174
+ }
175
+
176
+ let { data, files } = await messagePayload.resolveFiles();
177
+
178
+ if (typeof options == 'object' && typeof options.usingNewAttachmentAPI !== 'boolean') {
179
+ options.usingNewAttachmentAPI = this.client.options.usingNewAttachmentAPI;
180
+ }
181
+
182
+ if (options?.usingNewAttachmentAPI === true) {
183
+ const attachments = await getAttachments(this.client, this.id, ...files);
184
+ const requestPromises = attachments.map(async attachment => {
185
+ await uploadFile(files[attachment.id].file, attachment.upload_url);
186
+ return {
187
+ id: attachment.id,
188
+ filename: files[attachment.id].name,
189
+ uploaded_filename: attachment.upload_filename,
190
+ description: files[attachment.id].description,
191
+ duration_secs: files[attachment.id].duration_secs,
192
+ waveform: files[attachment.id].waveform,
193
+ };
194
+ });
195
+ const attachmentsData = await Promise.all(requestPromises);
196
+ attachmentsData.sort((a, b) => parseInt(a.id) - parseInt(b.id));
197
+ data.attachments = attachmentsData;
198
+ files = [];
199
+ }
200
+
201
+ const d = await this.client.api.channels[this.id].messages.post({ data, files });
202
+
203
+ return this.messages.cache.get(d.id) ?? this.messages._add(d);
204
+ }
205
+
206
+ /**
207
+ * Sends a typing indicator in the channel.
208
+ * @returns {Promise<void>} Resolves upon the typing status being sent
209
+ * @example
210
+ * // Start typing in a channel
211
+ * channel.sendTyping();
212
+ */
213
+ async sendTyping() {
214
+ await this.client.api.channels(this.id).typing.post();
215
+ }
216
+
217
+ /**
218
+ * Creates a Message Collector.
219
+ * @param {MessageCollectorOptions} [options={}] The options to pass to the collector
220
+ * @returns {MessageCollector}
221
+ * @example
222
+ * // Create a message collector
223
+ * const filter = m => m.content.includes('discord');
224
+ * const collector = channel.createMessageCollector({ filter, time: 15_000 });
225
+ * collector.on('collect', m => console.log(`Collected ${m.content}`));
226
+ * collector.on('end', collected => console.log(`Collected ${collected.size} items`));
227
+ */
228
+ createMessageCollector(options = {}) {
229
+ return new MessageCollector(this, options);
230
+ }
231
+
232
+ /**
233
+ * An object containing the same properties as CollectorOptions, but a few more:
234
+ * @typedef {MessageCollectorOptions} AwaitMessagesOptions
235
+ * @property {string[]} [errors] Stop/end reasons that cause the promise to reject
236
+ */
237
+
238
+ /**
239
+ * Similar to createMessageCollector but in promise form.
240
+ * Resolves with a collection of messages that pass the specified filter.
241
+ * @param {AwaitMessagesOptions} [options={}] Optional options to pass to the internal collector
242
+ * @returns {Promise<Collection<Snowflake, Message>>}
243
+ * @example
244
+ * // Await !vote messages
245
+ * const filter = m => m.content.startsWith('!vote');
246
+ * // Errors: ['time'] treats ending because of the time limit as an error
247
+ * channel.awaitMessages({ filter, max: 4, time: 60_000, errors: ['time'] })
248
+ * .then(collected => console.log(collected.size))
249
+ * .catch(collected => console.log(`After a minute, only ${collected.size} out of 4 voted.`));
250
+ */
251
+ awaitMessages(options = {}) {
252
+ return new Promise((resolve, reject) => {
253
+ const collector = this.createMessageCollector(options);
254
+ collector.once('end', (collection, reason) => {
255
+ if (options.errors?.includes(reason)) {
256
+ reject(collection);
257
+ } else {
258
+ resolve(collection);
259
+ }
260
+ });
261
+ });
262
+ }
263
+
264
+ /**
265
+ * Creates a component interaction collector.
266
+ * @param {MessageComponentCollectorOptions} [options={}] Options to send to the collector
267
+ * @returns {InteractionCollector}
268
+ * @example
269
+ * // Create a button interaction collector
270
+ * const filter = (interaction) => interaction.customId === 'button' && interaction.user.id === 'someId';
271
+ * const collector = channel.createMessageComponentCollector({ filter, time: 15_000 });
272
+ * collector.on('collect', i => console.log(`Collected ${i.customId}`));
273
+ * collector.on('end', collected => console.log(`Collected ${collected.size} items`));
274
+ */
275
+ createMessageComponentCollector(options = {}) {
276
+ return new InteractionCollector(this.client, {
277
+ ...options,
278
+ interactionType: InteractionTypes.MESSAGE_COMPONENT,
279
+ channel: this,
280
+ });
281
+ }
282
+
283
+ /**
284
+ * Collects a single component interaction that passes the filter.
285
+ * The Promise will reject if the time expires.
286
+ * @param {AwaitMessageComponentOptions} [options={}] Options to pass to the internal collector
287
+ * @returns {Promise<MessageComponentInteraction>}
288
+ * @example
289
+ * // Collect a message component interaction
290
+ * const filter = (interaction) => interaction.customId === 'button' && interaction.user.id === 'someId';
291
+ * channel.awaitMessageComponent({ filter, time: 15_000 })
292
+ * .then(interaction => console.log(`${interaction.customId} was clicked!`))
293
+ * .catch(console.error);
294
+ */
295
+ awaitMessageComponent(options = {}) {
296
+ const _options = { ...options, max: 1 };
297
+ return new Promise((resolve, reject) => {
298
+ const collector = this.createMessageComponentCollector(_options);
299
+ collector.once('end', (interactions, reason) => {
300
+ const interaction = interactions.first();
301
+ if (interaction) resolve(interaction);
302
+ else reject(new Error('INTERACTION_COLLECTOR_ERROR', reason));
303
+ });
304
+ });
305
+ }
306
+
307
+ /**
308
+ * Bulk deletes given messages that are newer than two weeks.
309
+ * @param {Collection<Snowflake, Message>|MessageResolvable[]|number} messages
310
+ * Messages or number of messages to delete
311
+ * @param {boolean} [filterOld=false] Filter messages to remove those which are older than two weeks automatically
312
+ * @returns {Promise<Collection<Snowflake, Message|undefined>>} Returns the deleted messages
313
+ * @example
314
+ * // Bulk delete messages
315
+ * channel.bulkDelete(5)
316
+ * .then(messages => console.log(`Bulk deleted ${messages.size} messages`))
317
+ * .catch(console.error);
318
+ */
319
+ async bulkDelete(messages, filterOld = false) {
320
+ if (!this.client.user.bot) throw new Error('INVALID_USER_METHOD');
321
+ if (Array.isArray(messages) || messages instanceof Collection) {
322
+ let messageIds = messages instanceof Collection ? [...messages.keys()] : messages.map(m => m.id ?? m);
323
+ if (filterOld) {
324
+ messageIds = messageIds.filter(id => Date.now() - SnowflakeUtil.timestampFrom(id) < MaxBulkDeletableMessageAge);
325
+ }
326
+ if (messageIds.length === 0) return new Collection();
327
+ if (messageIds.length === 1) {
328
+ await this.client.api.channels(this.id).messages(messageIds[0]).delete();
329
+ const message = this.client.actions.MessageDelete.getMessage(
330
+ {
331
+ message_id: messageIds[0],
332
+ },
333
+ this,
334
+ );
335
+ return message ? new Collection([[message.id, message]]) : new Collection();
336
+ }
337
+ await this.client.api.channels[this.id].messages['bulk-delete'].post({ data: { messages: messageIds } });
338
+ return messageIds.reduce(
339
+ (col, id) =>
340
+ col.set(
341
+ id,
342
+ this.client.actions.MessageDeleteBulk.getMessage(
343
+ {
344
+ message_id: id,
345
+ },
346
+ this,
347
+ ),
348
+ ),
349
+ new Collection(),
350
+ );
351
+ }
352
+ if (!isNaN(messages)) {
353
+ const msgs = await this.messages.fetch({ limit: messages });
354
+ return this.bulkDelete(msgs, filterOld);
355
+ }
356
+ throw new TypeError('MESSAGE_BULK_DELETE_TYPE');
357
+ }
358
+
359
+ /**
360
+ * Fetches all webhooks for the channel.
361
+ * @returns {Promise<Collection<Snowflake, Webhook>>}
362
+ * @example
363
+ * // Fetch webhooks
364
+ * channel.fetchWebhooks()
365
+ * .then(hooks => console.log(`This channel has ${hooks.size} hooks`))
366
+ * .catch(console.error);
367
+ */
368
+ fetchWebhooks() {
369
+ return this.guild.channels.fetchWebhooks(this.id);
370
+ }
371
+
372
+ /**
373
+ * Options used to create a {@link Webhook} in a guild text-based channel.
374
+ * @typedef {Object} ChannelWebhookCreateOptions
375
+ * @property {?(BufferResolvable|Base64Resolvable)} [avatar] Avatar for the webhook
376
+ * @property {string} [reason] Reason for creating the webhook
377
+ */
378
+
379
+ /**
380
+ * Creates a webhook for the channel.
381
+ * @param {string} name The name of the webhook
382
+ * @param {ChannelWebhookCreateOptions} [options] Options for creating the webhook
383
+ * @returns {Promise<Webhook>} Returns the created Webhook
384
+ * @example
385
+ * // Create a webhook for the current channel
386
+ * channel.createWebhook('Snek', {
387
+ * avatar: 'https://i.imgur.com/mI8XcpG.jpg',
388
+ * reason: 'Needed a cool new Webhook'
389
+ * })
390
+ * .then(console.log)
391
+ * .catch(console.error)
392
+ */
393
+ createWebhook(name, options = {}) {
394
+ return this.guild.channels.createWebhook(this.id, name, options);
395
+ }
396
+
397
+ /**
398
+ * Sets the rate limit per user (slowmode) for this channel.
399
+ * @param {number} rateLimitPerUser The new rate limit in seconds
400
+ * @param {string} [reason] Reason for changing the channel's rate limit
401
+ * @returns {Promise<this>}
402
+ */
403
+ setRateLimitPerUser(rateLimitPerUser, reason) {
404
+ return this.edit({ rateLimitPerUser }, reason);
405
+ }
406
+
407
+ /**
408
+ * Sets whether this channel is flagged as NSFW.
409
+ * @param {boolean} [nsfw=true] Whether the channel should be considered NSFW
410
+ * @param {string} [reason] Reason for changing the channel's NSFW flag
411
+ * @returns {Promise<this>}
412
+ */
413
+ setNSFW(nsfw = true, reason) {
414
+ return this.edit({ nsfw }, reason);
415
+ }
416
+
417
+ /**
418
+ * Search Slash Command (return raw data)
419
+ * @param {Snowflake} applicationId Application ID
420
+ * @param {?ApplicationCommandType} type Command Type
421
+ * @returns {Object}
422
+ */
423
+ searchInteraction(applicationId, type = 'CHAT_INPUT') {
424
+ switch (type) {
425
+ case 'USER':
426
+ case 2:
427
+ type = 2;
428
+ break;
429
+ case 'MESSAGE':
430
+ case 3:
431
+ type = 3;
432
+ break;
433
+ default:
434
+ type = 1;
435
+ break;
436
+ }
437
+ return this.client.api.channels[this.id]['application-commands'].search.get({
438
+ query: {
439
+ type,
440
+ application_id: applicationId,
441
+ },
442
+ });
443
+ }
444
+
445
+ /**
446
+ * Send Slash to this channel
447
+ * @param {UserResolvable} bot Bot user (BotID, not applicationID)
448
+ * @param {string} commandString Command name (and sub / group formats)
449
+ * @param {...?any|any[]} args Command arguments
450
+ * @returns {Promise<InteractionResponse>}
451
+ * @example
452
+ * // Send a basic slash
453
+ * channel.sendSlash('botid', 'ping)
454
+ * .then(console.log)
455
+ * .catch(console.error);
456
+ * @example
457
+ * // Send a remote file
458
+ * channel.sendSlash('botid', 'emoji upload', 'https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048', 'test')
459
+ * .then(console.log)
460
+ * .catch(console.error);
461
+ * @see {@link https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/Document/SlashCommand.md}
462
+ */
463
+ async sendSlash(bot, commandString, ...args) {
464
+ const perms =
465
+ this.type != 'DM'
466
+ ? this.permissionsFor(this.client.user).toArray()
467
+ : ['USE_APPLICATION_COMMANDS', `${this.recipient.relationships == 'BLOCKED' ? '' : 'SEND_MESSAGES'}`];
468
+ if (!perms.includes('SEND_MESSAGES')) {
469
+ throw new Error(
470
+ 'INTERACTION_SEND_FAILURE',
471
+ `Cannot send Slash to ${this.toString()} ${
472
+ this.recipient ? 'because bot has been blocked' : 'due to missing SEND_MESSAGES permission'
473
+ }`,
474
+ );
475
+ }
476
+ if (!perms.includes('USE_APPLICATION_COMMANDS')) {
477
+ throw new Error(
478
+ 'INTERACTION_SEND_FAILURE',
479
+ `Cannot send Slash to ${this.toString()} due to missing USE_APPLICATION_COMMANDS permission`,
480
+ );
481
+ }
482
+ args = args.flat(2);
483
+ const cmd = commandString.trim().split(' ');
484
+ // Validate CommandName
485
+ const commandName = validateName(cmd[0]);
486
+ const sub = cmd.slice(1);
487
+ for (let i = 0; i < sub.length; i++) {
488
+ if (sub.length > 2) {
489
+ throw new Error('INVALID_COMMAND_NAME', cmd);
490
+ }
491
+ validateName(sub[i]);
492
+ }
493
+ if (!bot) throw new Error('MUST_SPECIFY_BOT');
494
+ const botId = this.client.users.resolveId(bot);
495
+ const user = await this.client.users.fetch(botId).catch(() => {});
496
+ if (!user || !user.bot || !user.application) {
497
+ throw new Error('botId is not a bot or does not have an application slash command');
498
+ }
499
+ if (user._partial) await user.getProfile().catch(() => {});
500
+ if (!commandName || typeof commandName !== 'string') throw new Error('Command name is required');
501
+ const data = await this.searchInteraction(user.application?.id ?? user.id, 'CHAT_INPUT');
502
+ for (const command of data.application_commands) {
503
+ if (user.id == command.application_id || user.application.id == command.application_id) {
504
+ user.application?.commands?._add(command, true);
505
+ }
506
+ }
507
+ // Remove
508
+ const commandTarget = user.application?.commands?.cache.find(
509
+ c => c.name === commandName && c.type === 'CHAT_INPUT',
510
+ );
511
+ if (!commandTarget) {
512
+ throw new Error(
513
+ 'INTERACTION_SEND_FAILURE',
514
+ `SlashCommand ${commandName} is not found (With search)\nDebug:\n+ botId: ${botId} (ApplicationId: ${
515
+ user.application?.id
516
+ })\n+ args: ${args.join(' | ') || null}`,
517
+ );
518
+ }
519
+ return commandTarget.sendSlashCommand(
520
+ new (Message())(this.client, {
521
+ channel_id: this.id,
522
+ guild_id: this.guild?.id || null,
523
+ author: this.client.user,
524
+ content: '',
525
+ id: this.client.user.id,
526
+ }),
527
+ sub && sub.length > 0 ? sub : [],
528
+ args && args.length ? args : [],
529
+ );
530
+ }
531
+
532
+ static applyToClass(structure, full = false, ignore = []) {
533
+ const props = ['send'];
534
+ if (full) {
535
+ props.push(
536
+ 'lastMessage',
537
+ 'lastPinAt',
538
+ 'bulkDelete',
539
+ 'sendTyping',
540
+ 'createMessageCollector',
541
+ 'awaitMessages',
542
+ 'createMessageComponentCollector',
543
+ 'awaitMessageComponent',
544
+ 'fetchWebhooks',
545
+ 'createWebhook',
546
+ 'setRateLimitPerUser',
547
+ 'setNSFW',
548
+ 'sendSlash',
549
+ 'searchInteraction',
550
+ );
551
+ }
552
+ for (const prop of props) {
553
+ if (ignore.includes(prop)) continue;
554
+ Object.defineProperty(
555
+ structure.prototype,
556
+ prop,
557
+ Object.getOwnPropertyDescriptor(TextBasedChannel.prototype, prop),
558
+ );
559
+ }
560
+ }
561
+ }
562
+
563
+ module.exports = TextBasedChannel;
564
+
565
+ // Fixes Circular
566
+ const MessageManager = require('../../managers/MessageManager');
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ const BitField = require('./BitField');
4
+
5
+ /**
6
+ * Data structure that makes it easy to interact with an {@link Activity#flags} bitfield.
7
+ * @extends {BitField}
8
+ */
9
+ class ActivityFlags extends BitField {}
10
+
11
+ /**
12
+ * @name ActivityFlags
13
+ * @kind constructor
14
+ * @memberof ActivityFlags
15
+ * @param {BitFieldResolvable} [bits=0] Bit(s) to read from
16
+ */
17
+
18
+ /**
19
+ * Numeric activity flags. All available properties:
20
+ * * `INSTANCE`
21
+ * * `JOIN`
22
+ * * `SPECTATE`
23
+ * * `JOIN_REQUEST`
24
+ * * `SYNC`
25
+ * * `PLAY`
26
+ * * `PARTY_PRIVACY_FRIENDS`
27
+ * * `PARTY_PRIVACY_VOICE_CHANNEL`
28
+ * * `EMBEDDED`
29
+ * @type {Object}
30
+ * @see {@link https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-flags}
31
+ */
32
+ ActivityFlags.FLAGS = {
33
+ INSTANCE: 1 << 0,
34
+ JOIN: 1 << 1,
35
+ SPECTATE: 1 << 2,
36
+ JOIN_REQUEST: 1 << 3,
37
+ SYNC: 1 << 4,
38
+ PLAY: 1 << 5,
39
+ PARTY_PRIVACY_FRIENDS: 1 << 6,
40
+ PARTY_PRIVACY_VOICE_CHANNEL: 1 << 7,
41
+ EMBEDDED: 1 << 8,
42
+ };
43
+
44
+ module.exports = ActivityFlags;
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ const BitField = require('./BitField');
4
+
5
+ /**
6
+ * Data structure that makes it easy to interact with a {@link ClientApplication#flags} bitfield.
7
+ * @extends {BitField}
8
+ */
9
+ class ApplicationFlags extends BitField {}
10
+
11
+ /**
12
+ * @name ApplicationFlags
13
+ * @kind constructor
14
+ * @memberof ApplicationFlags
15
+ * @param {BitFieldResolvable} [bits=0] Bit(s) to read from
16
+ */
17
+
18
+ /**
19
+ * Bitfield of the packed bits
20
+ * @type {number}
21
+ * @name ApplicationFlags#bitfield
22
+ */
23
+
24
+ /**
25
+ * Numeric application flags. All available properties:
26
+ * * `EMBEDDED_RELEASED`
27
+ * * `MANAGED_EMOJI`
28
+ * * `GROUP_DM_CREATE`
29
+ * * `RPC_PRIVATE_BETA`
30
+ * * `APPLICATION_AUTO_MODERATION_RULE_CREATE_BADGE`
31
+ * * `ALLOW_ASSETS`
32
+ * * `ALLOW_ACTIVITY_ACTION_SPECTATE`
33
+ * * `ALLOW_ACTIVITY_ACTION_JOIN_REQUEST`
34
+ * * `RPC_HAS_CONNECTED`
35
+ * * `GATEWAY_PRESENCE`
36
+ * * `GATEWAY_PRESENCE_LIMITED`
37
+ * * `GATEWAY_GUILD_MEMBERS`
38
+ * * `GATEWAY_GUILD_MEMBERS_LIMITED`
39
+ * * `VERIFICATION_PENDING_GUILD_LIMIT`
40
+ * * `EMBEDDED`
41
+ * * `GATEWAY_MESSAGE_CONTENT`
42
+ * * `GATEWAY_MESSAGE_CONTENT_LIMITED`
43
+ * * `EMBEDDED_FIRST_PARTY`
44
+ * * `APPLICATION_COMMAND_BADGE`
45
+ * * `ACTIVE`
46
+ * @type {Object}
47
+ * @see {@link https://discord.com/developers/docs/resources/application#application-object-application-flags}
48
+ * @see {@link https://flags.lewistehminerz.dev/}
49
+ */
50
+ ApplicationFlags.FLAGS = {
51
+ EMBEDDED_RELEASED: 1 << 1,
52
+ MANAGED_EMOJI: 1 << 2,
53
+ EMBEDDED_IAP: 1 << 3,
54
+ GROUP_DM_CREATE: 1 << 4,
55
+ RPC_PRIVATE_BETA: 1 << 5,
56
+ APPLICATION_AUTO_MODERATION_RULE_CREATE_BADGE: 1 << 6,
57
+ ALLOW_ASSETS: 1 << 8,
58
+ ALLOW_ACTIVITY_ACTION_SPECTATE: 1 << 9,
59
+ ALLOW_ACTIVITY_ACTION_JOIN_REQUEST: 1 << 10,
60
+ RPC_HAS_CONNECTED: 1 << 11,
61
+ GATEWAY_PRESENCE: 1 << 12,
62
+ GATEWAY_PRESENCE_LIMITED: 1 << 13,
63
+ GATEWAY_GUILD_MEMBERS: 1 << 14,
64
+ GATEWAY_GUILD_MEMBERS_LIMITED: 1 << 15,
65
+ VERIFICATION_PENDING_GUILD_LIMIT: 1 << 16,
66
+ EMBEDDED: 1 << 17,
67
+ GATEWAY_MESSAGE_CONTENT: 1 << 18,
68
+ GATEWAY_MESSAGE_CONTENT_LIMITED: 1 << 19,
69
+ EMBEDDED_FIRST_PARTY: 1 << 20,
70
+ APPLICATION_COMMAND_BADGE: 1 << 23,
71
+ ACTIVE: 1 << 24,
72
+ };
73
+
74
+ module.exports = ApplicationFlags;