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

Sign up to get free protection for your applications and to get access to all the features.

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 +48 -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,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;