safeness-sb-new 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/README.md +115 -0
  2. package/package.json +96 -0
  3. package/src/WebSocket.js +39 -0
  4. package/src/client/BaseClient.js +86 -0
  5. package/src/client/Client.js +836 -0
  6. package/src/client/WebhookClient.js +61 -0
  7. package/src/client/actions/Action.js +120 -0
  8. package/src/client/actions/ActionsManager.js +78 -0
  9. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  10. package/src/client/actions/AutoModerationActionExecution.js +27 -0
  11. package/src/client/actions/AutoModerationRuleCreate.js +28 -0
  12. package/src/client/actions/AutoModerationRuleDelete.js +32 -0
  13. package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
  14. package/src/client/actions/ChannelCreate.js +23 -0
  15. package/src/client/actions/ChannelDelete.js +39 -0
  16. package/src/client/actions/ChannelUpdate.js +43 -0
  17. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  18. package/src/client/actions/GuildBanAdd.js +20 -0
  19. package/src/client/actions/GuildBanRemove.js +25 -0
  20. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  21. package/src/client/actions/GuildDelete.js +65 -0
  22. package/src/client/actions/GuildEmojiCreate.js +20 -0
  23. package/src/client/actions/GuildEmojiDelete.js +21 -0
  24. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  25. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  26. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  27. package/src/client/actions/GuildMemberRemove.js +33 -0
  28. package/src/client/actions/GuildMemberUpdate.js +44 -0
  29. package/src/client/actions/GuildRoleCreate.js +25 -0
  30. package/src/client/actions/GuildRoleDelete.js +31 -0
  31. package/src/client/actions/GuildRoleUpdate.js +39 -0
  32. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  33. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  34. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  35. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  36. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  37. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  38. package/src/client/actions/GuildStickerCreate.js +20 -0
  39. package/src/client/actions/GuildStickerDelete.js +21 -0
  40. package/src/client/actions/GuildStickerUpdate.js +20 -0
  41. package/src/client/actions/GuildStickersUpdate.js +34 -0
  42. package/src/client/actions/GuildUpdate.js +33 -0
  43. package/src/client/actions/InviteCreate.js +28 -0
  44. package/src/client/actions/InviteDelete.js +30 -0
  45. package/src/client/actions/MessageCreate.js +46 -0
  46. package/src/client/actions/MessageDelete.js +32 -0
  47. package/src/client/actions/MessageDeleteBulk.js +46 -0
  48. package/src/client/actions/MessageReactionAdd.js +56 -0
  49. package/src/client/actions/MessageReactionRemove.js +45 -0
  50. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  51. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  52. package/src/client/actions/MessageUpdate.js +26 -0
  53. package/src/client/actions/PresenceUpdate.js +46 -0
  54. package/src/client/actions/StageInstanceCreate.js +28 -0
  55. package/src/client/actions/StageInstanceDelete.js +33 -0
  56. package/src/client/actions/StageInstanceUpdate.js +30 -0
  57. package/src/client/actions/ThreadCreate.js +24 -0
  58. package/src/client/actions/ThreadDelete.js +32 -0
  59. package/src/client/actions/ThreadListSync.js +59 -0
  60. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  61. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  62. package/src/client/actions/TypingStart.js +29 -0
  63. package/src/client/actions/UserUpdate.js +35 -0
  64. package/src/client/actions/VoiceStateUpdate.js +57 -0
  65. package/src/client/actions/WebhooksUpdate.js +20 -0
  66. package/src/client/voice/ClientVoiceManager.js +150 -0
  67. package/src/client/voice/VoiceConnection.js +849 -0
  68. package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
  69. package/src/client/voice/dispatcher/AudioDispatcher.js +115 -0
  70. package/src/client/voice/dispatcher/BaseDispatcher.js +405 -0
  71. package/src/client/voice/dispatcher/VPxDispatcher.js +52 -0
  72. package/src/client/voice/dispatcher/VideoDispatcher.js +31 -0
  73. package/src/client/voice/networking/VoiceUDPClient.js +188 -0
  74. package/src/client/voice/networking/VoiceWebSocket.js +280 -0
  75. package/src/client/voice/player/MediaPlayer.js +294 -0
  76. package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
  77. package/src/client/voice/player/processing/IvfSplitter.js +106 -0
  78. package/src/client/voice/receiver/PacketHandler.js +170 -0
  79. package/src/client/voice/receiver/Receiver.js +82 -0
  80. package/src/client/voice/receiver/video/IvfJoinner.js +106 -0
  81. package/src/client/voice/util/Function.js +14 -0
  82. package/src/client/voice/util/PlayInterface.js +122 -0
  83. package/src/client/voice/util/Secretbox.js +42 -0
  84. package/src/client/voice/util/Silence.js +16 -0
  85. package/src/client/voice/util/Socket.js +62 -0
  86. package/src/client/voice/util/VolumeInterface.js +104 -0
  87. package/src/client/websocket/WebSocketManager.js +392 -0
  88. package/src/client/websocket/WebSocketShard.js +906 -0
  89. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  90. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  91. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  92. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  93. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  94. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  95. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  96. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  97. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  98. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  99. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  100. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  101. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  102. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  103. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
  104. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  105. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  106. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  107. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  108. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  109. package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
  110. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  113. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  114. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  115. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  116. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  117. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  118. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  119. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  120. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  121. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  122. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  123. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  124. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  125. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  126. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  127. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
  128. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  129. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  130. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  131. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  132. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  133. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +22 -0
  134. package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +12 -0
  135. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  136. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  137. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  138. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  139. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  140. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  141. package/src/client/websocket/handlers/READY.js +120 -0
  142. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
  143. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
  144. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
  145. package/src/client/websocket/handlers/RESUMED.js +14 -0
  146. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  147. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  148. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  149. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  150. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  151. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  152. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  153. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  154. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  155. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  156. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
  157. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  158. package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
  159. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
  160. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  161. package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
  162. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  163. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  164. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  165. package/src/client/websocket/handlers/index.js +83 -0
  166. package/src/errors/DJSError.js +61 -0
  167. package/src/errors/Messages.js +208 -0
  168. package/src/errors/index.js +4 -0
  169. package/src/index.js +159 -0
  170. package/src/managers/ApplicationCommandManager.js +264 -0
  171. package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
  172. package/src/managers/AutoModerationRuleManager.js +296 -0
  173. package/src/managers/BaseGuildEmojiManager.js +80 -0
  174. package/src/managers/BaseManager.js +19 -0
  175. package/src/managers/BillingManager.js +66 -0
  176. package/src/managers/CachedManager.js +71 -0
  177. package/src/managers/ChannelManager.js +138 -0
  178. package/src/managers/ClientUserSettingManager.js +372 -0
  179. package/src/managers/DataManager.js +61 -0
  180. package/src/managers/GuildBanManager.js +204 -0
  181. package/src/managers/GuildChannelManager.js +488 -0
  182. package/src/managers/GuildEmojiManager.js +171 -0
  183. package/src/managers/GuildEmojiRoleManager.js +118 -0
  184. package/src/managers/GuildForumThreadManager.js +108 -0
  185. package/src/managers/GuildInviteManager.js +213 -0
  186. package/src/managers/GuildManager.js +304 -0
  187. package/src/managers/GuildMemberManager.js +597 -0
  188. package/src/managers/GuildMemberRoleManager.js +191 -0
  189. package/src/managers/GuildScheduledEventManager.js +296 -0
  190. package/src/managers/GuildSettingManager.js +155 -0
  191. package/src/managers/GuildStickerManager.js +179 -0
  192. package/src/managers/GuildTextThreadManager.js +98 -0
  193. package/src/managers/InteractionManager.js +39 -0
  194. package/src/managers/MessageManager.js +391 -0
  195. package/src/managers/PermissionOverwriteManager.js +166 -0
  196. package/src/managers/PresenceManager.js +58 -0
  197. package/src/managers/ReactionManager.js +67 -0
  198. package/src/managers/ReactionUserManager.js +71 -0
  199. package/src/managers/RelationshipManager.js +265 -0
  200. package/src/managers/RoleManager.js +352 -0
  201. package/src/managers/StageInstanceManager.js +162 -0
  202. package/src/managers/ThreadManager.js +174 -0
  203. package/src/managers/ThreadMemberManager.js +186 -0
  204. package/src/managers/UserManager.js +146 -0
  205. package/src/managers/UserNoteManager.js +53 -0
  206. package/src/managers/VoiceStateManager.js +37 -0
  207. package/src/rest/APIRequest.js +159 -0
  208. package/src/rest/APIRouter.js +53 -0
  209. package/src/rest/DiscordAPIError.js +104 -0
  210. package/src/rest/HTTPError.js +62 -0
  211. package/src/rest/RESTManager.js +62 -0
  212. package/src/rest/RateLimitError.js +55 -0
  213. package/src/rest/RequestHandler.js +444 -0
  214. package/src/sharding/Shard.js +443 -0
  215. package/src/sharding/ShardClientUtil.js +275 -0
  216. package/src/sharding/ShardingManager.js +318 -0
  217. package/src/structures/AnonymousGuild.js +98 -0
  218. package/src/structures/ApplicationCommand.js +593 -0
  219. package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
  220. package/src/structures/AutoModerationActionExecution.js +89 -0
  221. package/src/structures/AutoModerationRule.js +294 -0
  222. package/src/structures/AutocompleteInteraction.js +107 -0
  223. package/src/structures/Base.js +43 -0
  224. package/src/structures/BaseCommandInteraction.js +211 -0
  225. package/src/structures/BaseGuild.js +116 -0
  226. package/src/structures/BaseGuildEmoji.js +56 -0
  227. package/src/structures/BaseGuildTextChannel.js +191 -0
  228. package/src/structures/BaseGuildVoiceChannel.js +241 -0
  229. package/src/structures/BaseMessageComponent.js +114 -0
  230. package/src/structures/ButtonInteraction.js +11 -0
  231. package/src/structures/CallState.js +63 -0
  232. package/src/structures/CategoryChannel.js +85 -0
  233. package/src/structures/Channel.js +270 -0
  234. package/src/structures/ClientPresence.js +77 -0
  235. package/src/structures/ClientUser.js +450 -0
  236. package/src/structures/CommandInteraction.js +41 -0
  237. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  238. package/src/structures/ContextMenuInteraction.js +65 -0
  239. package/src/structures/DMChannel.js +217 -0
  240. package/src/structures/DirectoryChannel.js +20 -0
  241. package/src/structures/Emoji.js +148 -0
  242. package/src/structures/ForumChannel.js +261 -0
  243. package/src/structures/GroupDMChannel.js +387 -0
  244. package/src/structures/Guild.js +1608 -0
  245. package/src/structures/GuildAuditLogs.js +729 -0
  246. package/src/structures/GuildBan.js +59 -0
  247. package/src/structures/GuildBoost.js +108 -0
  248. package/src/structures/GuildChannel.js +468 -0
  249. package/src/structures/GuildEmoji.js +161 -0
  250. package/src/structures/GuildMember.js +568 -0
  251. package/src/structures/GuildPreview.js +191 -0
  252. package/src/structures/GuildPreviewEmoji.js +27 -0
  253. package/src/structures/GuildScheduledEvent.js +441 -0
  254. package/src/structures/GuildTemplate.js +236 -0
  255. package/src/structures/Integration.js +188 -0
  256. package/src/structures/IntegrationApplication.js +96 -0
  257. package/src/structures/Interaction.js +290 -0
  258. package/src/structures/InteractionCollector.js +248 -0
  259. package/src/structures/InteractionWebhook.js +43 -0
  260. package/src/structures/Invite.js +358 -0
  261. package/src/structures/InviteGuild.js +23 -0
  262. package/src/structures/InviteStageInstance.js +86 -0
  263. package/src/structures/Message.js +1227 -0
  264. package/src/structures/MessageActionRow.js +103 -0
  265. package/src/structures/MessageAttachment.js +204 -0
  266. package/src/structures/MessageButton.js +165 -0
  267. package/src/structures/MessageCollector.js +146 -0
  268. package/src/structures/MessageComponentInteraction.js +120 -0
  269. package/src/structures/MessageContextMenuInteraction.js +20 -0
  270. package/src/structures/MessageEmbed.js +586 -0
  271. package/src/structures/MessageMentions.js +273 -0
  272. package/src/structures/MessagePayload.js +318 -0
  273. package/src/structures/MessagePoll.js +238 -0
  274. package/src/structures/MessageReaction.js +171 -0
  275. package/src/structures/MessageSelectMenu.js +140 -0
  276. package/src/structures/Modal.js +161 -0
  277. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  278. package/src/structures/ModalSubmitInteraction.js +119 -0
  279. package/src/structures/NewsChannel.js +32 -0
  280. package/src/structures/OAuth2Guild.js +28 -0
  281. package/src/structures/PermissionOverwrites.js +196 -0
  282. package/src/structures/Presence.js +1131 -0
  283. package/src/structures/ReactionCollector.js +229 -0
  284. package/src/structures/ReactionEmoji.js +31 -0
  285. package/src/structures/Role.js +531 -0
  286. package/src/structures/SelectMenuInteraction.js +21 -0
  287. package/src/structures/StageChannel.js +104 -0
  288. package/src/structures/StageInstance.js +208 -0
  289. package/src/structures/Sticker.js +310 -0
  290. package/src/structures/StickerPack.js +95 -0
  291. package/src/structures/StoreChannel.js +56 -0
  292. package/src/structures/Team.js +118 -0
  293. package/src/structures/TeamMember.js +71 -0
  294. package/src/structures/TextChannel.js +33 -0
  295. package/src/structures/TextInputComponent.js +131 -0
  296. package/src/structures/ThreadChannel.js +607 -0
  297. package/src/structures/ThreadMember.js +105 -0
  298. package/src/structures/Typing.js +74 -0
  299. package/src/structures/User.js +543 -0
  300. package/src/structures/UserContextMenuInteraction.js +29 -0
  301. package/src/structures/VoiceChannel.js +110 -0
  302. package/src/structures/VoiceRegion.js +53 -0
  303. package/src/structures/VoiceState.js +345 -0
  304. package/src/structures/WebEmbed.js +373 -0
  305. package/src/structures/Webhook.js +467 -0
  306. package/src/structures/WelcomeChannel.js +60 -0
  307. package/src/structures/WelcomeScreen.js +48 -0
  308. package/src/structures/Widget.js +87 -0
  309. package/src/structures/WidgetMember.js +99 -0
  310. package/src/structures/interfaces/Application.js +313 -0
  311. package/src/structures/interfaces/Collector.js +300 -0
  312. package/src/structures/interfaces/InteractionResponses.js +313 -0
  313. package/src/structures/interfaces/TextBasedChannel.js +719 -0
  314. package/src/util/ActivityFlags.js +44 -0
  315. package/src/util/ApplicationFlags.js +76 -0
  316. package/src/util/AttachmentFlags.js +38 -0
  317. package/src/util/BitField.js +170 -0
  318. package/src/util/ChannelFlags.js +45 -0
  319. package/src/util/Constants.js +1815 -0
  320. package/src/util/DataResolver.js +145 -0
  321. package/src/util/Formatters.js +228 -0
  322. package/src/util/GuildMemberFlags.js +43 -0
  323. package/src/util/Intents.js +74 -0
  324. package/src/util/InviteFlags.js +29 -0
  325. package/src/util/LimitedCollection.js +131 -0
  326. package/src/util/MessageFlags.js +54 -0
  327. package/src/util/Options.js +336 -0
  328. package/src/util/Permissions.js +202 -0
  329. package/src/util/PremiumUsageFlags.js +31 -0
  330. package/src/util/PurchasedFlags.js +33 -0
  331. package/src/util/RemoteAuth.js +382 -0
  332. package/src/util/RoleFlags.js +37 -0
  333. package/src/util/SnowflakeUtil.js +92 -0
  334. package/src/util/Speaking.js +33 -0
  335. package/src/util/Sweepers.js +466 -0
  336. package/src/util/SystemChannelFlags.js +55 -0
  337. package/src/util/ThreadMemberFlags.js +30 -0
  338. package/src/util/UserFlags.js +104 -0
  339. package/src/util/Util.js +889 -0
  340. package/typings/enums.d.ts +297 -0
  341. package/typings/index.d.ts +7670 -0
  342. package/typings/index.test-d.ts +0 -0
  343. package/typings/rawDataTypes.d.ts +342 -0
@@ -0,0 +1,531 @@
1
+ 'use strict';
2
+
3
+ const process = require('node:process');
4
+ const Base = require('./Base');
5
+ const { Error } = require('../errors');
6
+ const Permissions = require('../util/Permissions');
7
+ const RoleFlags = require('../util/RoleFlags');
8
+ const SnowflakeUtil = require('../util/SnowflakeUtil');
9
+
10
+ let deprecationEmittedForComparePositions = false;
11
+
12
+ /**
13
+ * @type {WeakSet<Role>}
14
+ * @private
15
+ * @internal
16
+ */
17
+ const deletedRoles = new WeakSet();
18
+ let deprecationEmittedForDeleted = false;
19
+
20
+ /**
21
+ * Represents a role on Discord.
22
+ * @extends {Base}
23
+ */
24
+ class Role extends Base {
25
+ constructor(client, data, guild) {
26
+ super(client);
27
+
28
+ /**
29
+ * The guild that the role belongs to
30
+ * @type {Guild}
31
+ */
32
+ this.guild = guild;
33
+
34
+ /**
35
+ * The icon hash of the role
36
+ * @type {?string}
37
+ */
38
+ this.icon = null;
39
+
40
+ /**
41
+ * The unicode emoji for the role
42
+ * @type {?string}
43
+ */
44
+ this.unicodeEmoji = null;
45
+
46
+ if (data) this._patch(data);
47
+ }
48
+
49
+ _patch(data) {
50
+ /**
51
+ * The role's id (unique to the guild it is part of)
52
+ * @type {Snowflake}
53
+ */
54
+ this.id = data.id;
55
+ if ('name' in data) {
56
+ /**
57
+ * The name of the role
58
+ * @type {string}
59
+ */
60
+ this.name = data.name;
61
+ }
62
+
63
+ if ('color' in data) {
64
+ /**
65
+ * The base 10 color of the role
66
+ * @type {number}
67
+ */
68
+ this.color = data.color;
69
+ }
70
+
71
+ if ('hoist' in data) {
72
+ /**
73
+ * If true, users that are part of this role will appear in a separate category in the users list
74
+ * @type {boolean}
75
+ */
76
+ this.hoist = data.hoist;
77
+ }
78
+
79
+ if ('position' in data) {
80
+ /**
81
+ * The raw position of the role from the API
82
+ * @type {number}
83
+ */
84
+ this.rawPosition = data.position;
85
+ }
86
+
87
+ if ('permissions' in data) {
88
+ /**
89
+ * The permissions of the role
90
+ * @type {Readonly<Permissions>}
91
+ */
92
+ this.permissions = new Permissions(BigInt(data.permissions)).freeze();
93
+ }
94
+
95
+ if ('managed' in data) {
96
+ /**
97
+ * Whether or not the role is managed by an external service
98
+ * @type {boolean}
99
+ */
100
+ this.managed = data.managed;
101
+ }
102
+
103
+ if ('mentionable' in data) {
104
+ /**
105
+ * Whether or not the role can be mentioned by anyone
106
+ * @type {boolean}
107
+ */
108
+ this.mentionable = data.mentionable;
109
+ }
110
+
111
+ if ('icon' in data) this.icon = data.icon;
112
+
113
+ if ('unicode_emoji' in data) this.unicodeEmoji = data.unicode_emoji;
114
+
115
+ /**
116
+ * The tags this role has
117
+ * @type {?Object}
118
+ * @property {Snowflake} [botId] The id of the bot this role belongs to
119
+ * @property {Snowflake|string} [integrationId] The id of the integration this role belongs to
120
+ * @property {true} [premiumSubscriberRole] Whether this is the guild's premium subscription role
121
+ * @property {Snowflake} [subscriptionListingId] The id of this role's subscription SKU and listing
122
+ * @property {true} [availableForPurchase] Whether this role is available for purchase
123
+ * @property {true} [guildConnections] Whether this role is a guild's linked role
124
+ */
125
+ this.tags = data.tags ? {} : null;
126
+ if (data.tags) {
127
+ if ('bot_id' in data.tags) {
128
+ this.tags.botId = data.tags.bot_id;
129
+ }
130
+ if ('integration_id' in data.tags) {
131
+ this.tags.integrationId = data.tags.integration_id;
132
+ }
133
+ if ('premium_subscriber' in data.tags) {
134
+ this.tags.premiumSubscriberRole = true;
135
+ }
136
+ if ('subscription_listing_id' in data.tags) {
137
+ this.tags.subscriptionListingId = data.tags.subscription_listing_id;
138
+ }
139
+ if ('available_for_purchase' in data.tags) {
140
+ this.tags.availableForPurchase = true;
141
+ }
142
+ if ('guild_connections' in data.tags) {
143
+ this.tags.guildConnections = true;
144
+ }
145
+ }
146
+
147
+ if ('flags' in data) {
148
+ /**
149
+ * The flags of this role
150
+ * @type {Readonly<RoleFlags>}
151
+ */
152
+ this.flags = new RoleFlags(data.flags).freeze();
153
+ } else {
154
+ this.flags ??= new RoleFlags().freeze();
155
+ }
156
+ }
157
+
158
+ /**
159
+ * The timestamp the role was created at
160
+ * @type {number}
161
+ * @readonly
162
+ */
163
+ get createdTimestamp() {
164
+ return SnowflakeUtil.timestampFrom(this.id);
165
+ }
166
+
167
+ /**
168
+ * The time the role was created at
169
+ * @type {Date}
170
+ * @readonly
171
+ */
172
+ get createdAt() {
173
+ return new Date(this.createdTimestamp);
174
+ }
175
+
176
+ /**
177
+ * Whether or not the role has been deleted
178
+ * @type {boolean}
179
+ * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091
180
+ */
181
+ get deleted() {
182
+ if (!deprecationEmittedForDeleted) {
183
+ deprecationEmittedForDeleted = true;
184
+ process.emitWarning(
185
+ 'Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
186
+ 'DeprecationWarning',
187
+ );
188
+ }
189
+
190
+ return deletedRoles.has(this);
191
+ }
192
+
193
+ set deleted(value) {
194
+ if (!deprecationEmittedForDeleted) {
195
+ deprecationEmittedForDeleted = true;
196
+ process.emitWarning(
197
+ 'Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.',
198
+ 'DeprecationWarning',
199
+ );
200
+ }
201
+
202
+ if (value) deletedRoles.add(this);
203
+ else deletedRoles.delete(this);
204
+ }
205
+
206
+ /**
207
+ * The hexadecimal version of the role color, with a leading hashtag
208
+ * @type {string}
209
+ * @readonly
210
+ */
211
+ get hexColor() {
212
+ return `#${this.color.toString(16).padStart(6, '0')}`;
213
+ }
214
+
215
+ /**
216
+ * The cached guild members that have this role
217
+ * @type {Collection<Snowflake, GuildMember>}
218
+ * @readonly
219
+ */
220
+ get members() {
221
+ return this.guild.members.cache.filter(m => m.roles.cache.has(this.id));
222
+ }
223
+
224
+ /**
225
+ * Whether the role is editable by the client user
226
+ * @type {boolean}
227
+ * @readonly
228
+ */
229
+ get editable() {
230
+ if (this.managed) return false;
231
+ const clientMember = this.guild.members.resolve(this.client.user);
232
+ if (!clientMember.permissions.has(Permissions.FLAGS.MANAGE_ROLES)) return false;
233
+ return clientMember.roles.highest.comparePositionTo(this) > 0;
234
+ }
235
+
236
+ /**
237
+ * The position of the role in the role manager
238
+ * @type {number}
239
+ * @readonly
240
+ */
241
+ get position() {
242
+ let count = 0;
243
+ for (const role of this.guild.roles.cache.values()) {
244
+ if (this.rawPosition > role.rawPosition) count++;
245
+ else if (this.rawPosition === role.rawPosition && BigInt(this.id) < BigInt(role.id)) count++;
246
+ }
247
+
248
+ return count;
249
+ }
250
+
251
+ /**
252
+ * Compares this role's position to another role's.
253
+ * @param {RoleResolvable} role Role to compare to this one
254
+ * @returns {number} Negative number if this role's position is lower (other role's is higher),
255
+ * positive number if this one is higher (other's is lower), 0 if equal
256
+ * @example
257
+ * // Compare the position of a role to another
258
+ * const roleCompare = role.comparePositionTo(otherRole);
259
+ * if (roleCompare >= 1) console.log(`${role.name} is higher than ${otherRole.name}`);
260
+ */
261
+ comparePositionTo(role) {
262
+ return this.guild.roles.comparePositions(this, role);
263
+ }
264
+
265
+ /**
266
+ * The data for a role.
267
+ * @typedef {Object} RoleData
268
+ * @property {string} [name] The name of the role
269
+ * @property {ColorResolvable} [color] The color of the role, either a hex string or a base 10 number
270
+ * @property {boolean} [hoist] Whether or not the role should be hoisted
271
+ * @property {number} [position] The position of the role
272
+ * @property {PermissionResolvable} [permissions] The permissions of the role
273
+ * @property {boolean} [mentionable] Whether or not the role should be mentionable
274
+ * @property {?(BufferResolvable|Base64Resolvable|EmojiResolvable)} [icon] The icon for the role
275
+ * <warn>The `EmojiResolvable` should belong to the same guild as the role.
276
+ * If not, pass the emoji's URL directly</warn>
277
+ * @property {?string} [unicodeEmoji] The unicode emoji for the role
278
+ */
279
+
280
+ /**
281
+ * Edits the role.
282
+ * @param {RoleData} data The new data for the role
283
+ * @param {string} [reason] Reason for editing this role
284
+ * @returns {Promise<Role>}
285
+ * @example
286
+ * // Edit a role
287
+ * role.edit({ name: 'new role' })
288
+ * .then(updated => console.log(`Edited role name to ${updated.name}`))
289
+ * .catch(console.error);
290
+ */
291
+ edit(data, reason) {
292
+ return this.guild.roles.edit(this, data, reason);
293
+ }
294
+
295
+ /**
296
+ * Returns `channel.permissionsFor(role)`. Returns permissions for a role in a guild channel,
297
+ * taking into account permission overwrites.
298
+ * @param {GuildChannel|Snowflake} channel The guild channel to use as context
299
+ * @param {boolean} [checkAdmin=true] Whether having `ADMINISTRATOR` will return all permissions
300
+ * @returns {Readonly<Permissions>}
301
+ */
302
+ permissionsIn(channel, checkAdmin = true) {
303
+ channel = this.guild.channels.resolve(channel);
304
+ if (!channel) throw new Error('GUILD_CHANNEL_RESOLVE');
305
+ return channel.rolePermissions(this, checkAdmin);
306
+ }
307
+
308
+ /**
309
+ * Sets a new name for the role.
310
+ * @param {string} name The new name of the role
311
+ * @param {string} [reason] Reason for changing the role's name
312
+ * @returns {Promise<Role>}
313
+ * @example
314
+ * // Set the name of the role
315
+ * role.setName('new role')
316
+ * .then(updated => console.log(`Updated role name to ${updated.name}`))
317
+ * .catch(console.error);
318
+ */
319
+ setName(name, reason) {
320
+ return this.edit({ name }, reason);
321
+ }
322
+
323
+ /**
324
+ * Sets a new color for the role.
325
+ * @param {ColorResolvable} color The color of the role
326
+ * @param {string} [reason] Reason for changing the role's color
327
+ * @returns {Promise<Role>}
328
+ * @example
329
+ * // Set the color of a role
330
+ * role.setColor('#FF0000')
331
+ * .then(updated => console.log(`Set color of role to ${updated.color}`))
332
+ * .catch(console.error);
333
+ */
334
+ setColor(color, reason) {
335
+ return this.edit({ color }, reason);
336
+ }
337
+
338
+ /**
339
+ * Sets whether or not the role should be hoisted.
340
+ * @param {boolean} [hoist=true] Whether or not to hoist the role
341
+ * @param {string} [reason] Reason for setting whether or not the role should be hoisted
342
+ * @returns {Promise<Role>}
343
+ * @example
344
+ * // Set the hoist of the role
345
+ * role.setHoist(true)
346
+ * .then(updated => console.log(`Role hoisted: ${updated.hoist}`))
347
+ * .catch(console.error);
348
+ */
349
+ setHoist(hoist = true, reason) {
350
+ return this.edit({ hoist }, reason);
351
+ }
352
+
353
+ /**
354
+ * Sets the permissions of the role.
355
+ * @param {PermissionResolvable} permissions The permissions of the role
356
+ * @param {string} [reason] Reason for changing the role's permissions
357
+ * @returns {Promise<Role>}
358
+ * @example
359
+ * // Set the permissions of the role
360
+ * role.setPermissions([Permissions.FLAGS.KICK_MEMBERS, Permissions.FLAGS.BAN_MEMBERS])
361
+ * .then(updated => console.log(`Updated permissions to ${updated.permissions.bitfield}`))
362
+ * .catch(console.error);
363
+ * @example
364
+ * // Remove all permissions from a role
365
+ * role.setPermissions(0n)
366
+ * .then(updated => console.log(`Updated permissions to ${updated.permissions.bitfield}`))
367
+ * .catch(console.error);
368
+ */
369
+ setPermissions(permissions, reason) {
370
+ return this.edit({ permissions }, reason);
371
+ }
372
+
373
+ /**
374
+ * Sets whether this role is mentionable.
375
+ * @param {boolean} [mentionable=true] Whether this role should be mentionable
376
+ * @param {string} [reason] Reason for setting whether or not this role should be mentionable
377
+ * @returns {Promise<Role>}
378
+ * @example
379
+ * // Make the role mentionable
380
+ * role.setMentionable(true)
381
+ * .then(updated => console.log(`Role updated ${updated.name}`))
382
+ * .catch(console.error);
383
+ */
384
+ setMentionable(mentionable = true, reason) {
385
+ return this.edit({ mentionable }, reason);
386
+ }
387
+
388
+ /**
389
+ * Sets a new icon for the role.
390
+ * @param {?(BufferResolvable|Base64Resolvable|EmojiResolvable)} icon The icon for the role
391
+ * <warn>The `EmojiResolvable` should belong to the same guild as the role.
392
+ * If not, pass the emoji's URL directly</warn>
393
+ * @param {string} [reason] Reason for changing the role's icon
394
+ * @returns {Promise<Role>}
395
+ */
396
+ setIcon(icon, reason) {
397
+ return this.edit({ icon }, reason);
398
+ }
399
+
400
+ /**
401
+ * Sets a new unicode emoji for the role.
402
+ * @param {?string} unicodeEmoji The new unicode emoji for the role
403
+ * @param {string} [reason] Reason for changing the role's unicode emoji
404
+ * @returns {Promise<Role>}
405
+ * @example
406
+ * // Set a new unicode emoji for the role
407
+ * role.setUnicodeEmoji('🤖')
408
+ * .then(updated => console.log(`Set unicode emoji for the role to ${updated.unicodeEmoji}`))
409
+ * .catch(console.error);
410
+ */
411
+ setUnicodeEmoji(unicodeEmoji, reason) {
412
+ return this.edit({ unicodeEmoji }, reason);
413
+ }
414
+
415
+ /**
416
+ * Options used to set the position of a role.
417
+ * @typedef {Object} SetRolePositionOptions
418
+ * @property {boolean} [relative=false] Whether to change the position relative to its current value or not
419
+ * @property {string} [reason] The reason for changing the position
420
+ */
421
+
422
+ /**
423
+ * Sets the new position of the role.
424
+ * @param {number} position The new position for the role
425
+ * @param {SetRolePositionOptions} [options] Options for setting the position
426
+ * @returns {Promise<Role>}
427
+ * @example
428
+ * // Set the position of the role
429
+ * role.setPosition(1)
430
+ * .then(updated => console.log(`Role position: ${updated.position}`))
431
+ * .catch(console.error);
432
+ */
433
+ setPosition(position, options = {}) {
434
+ return this.guild.roles.setPosition(this, position, options);
435
+ }
436
+
437
+ /**
438
+ * Deletes the role.
439
+ * @param {string} [reason] Reason for deleting this role
440
+ * @returns {Promise<Role>}
441
+ * @example
442
+ * // Delete a role
443
+ * role.delete('The role needed to go')
444
+ * .then(deleted => console.log(`Deleted role ${deleted.name}`))
445
+ * .catch(console.error);
446
+ */
447
+ async delete(reason) {
448
+ await this.guild.roles.delete(this.id, reason);
449
+ return this;
450
+ }
451
+
452
+ /**
453
+ * A link to the role's icon
454
+ * @param {StaticImageURLOptions} [options={}] Options for the image URL
455
+ * @returns {?string}
456
+ */
457
+ iconURL({ format, size } = {}) {
458
+ if (!this.icon) return null;
459
+ return this.client.rest.cdn.RoleIcon(this.id, this.icon, format, size);
460
+ }
461
+
462
+ /**
463
+ * Whether this role equals another role. It compares all properties, so for most operations
464
+ * it is advisable to just compare `role.id === role2.id` as it is much faster and is often
465
+ * what most users need.
466
+ * @param {Role} role Role to compare with
467
+ * @returns {boolean}
468
+ */
469
+ equals(role) {
470
+ return (
471
+ role &&
472
+ this.id === role.id &&
473
+ this.name === role.name &&
474
+ this.color === role.color &&
475
+ this.hoist === role.hoist &&
476
+ this.position === role.position &&
477
+ this.permissions.bitfield === role.permissions.bitfield &&
478
+ this.managed === role.managed &&
479
+ this.icon === role.icon &&
480
+ this.unicodeEmoji === role.unicodeEmoji
481
+ );
482
+ }
483
+
484
+ /**
485
+ * When concatenated with a string, this automatically returns the role's mention instead of the Role object.
486
+ * @returns {string}
487
+ * @example
488
+ * // Logs: Role: <@&123456789012345678>
489
+ * console.log(`Role: ${role}`);
490
+ */
491
+ toString() {
492
+ if (this.id === this.guild.id) return '@everyone';
493
+ return `<@&${this.id}>`;
494
+ }
495
+
496
+ toJSON() {
497
+ return {
498
+ ...super.toJSON({ createdTimestamp: true }),
499
+ permissions: this.permissions.toJSON(),
500
+ };
501
+ }
502
+
503
+ /**
504
+ * Compares the positions of two roles.
505
+ * @param {Role} role1 First role to compare
506
+ * @param {Role} role2 Second role to compare
507
+ * @returns {number} Negative number if the first role's position is lower (second role's is higher),
508
+ * positive number if the first's is higher (second's is lower), 0 if equal
509
+ * @deprecated Use {@link RoleManager#comparePositions} instead.
510
+ */
511
+ static comparePositions(role1, role2) {
512
+ if (!deprecationEmittedForComparePositions) {
513
+ process.emitWarning(
514
+ 'The Role.comparePositions method is deprecated. Use RoleManager#comparePositions instead.',
515
+ 'DeprecationWarning',
516
+ );
517
+
518
+ deprecationEmittedForComparePositions = true;
519
+ }
520
+
521
+ return role1.guild.roles.comparePositions(role1, role2);
522
+ }
523
+ }
524
+
525
+ exports.Role = Role;
526
+ exports.deletedRoles = deletedRoles;
527
+
528
+ /**
529
+ * @external APIRole
530
+ * @see {@link https://discord.com/developers/docs/topics/permissions#role-object}
531
+ */
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ const MessageComponentInteraction = require('./MessageComponentInteraction');
4
+
5
+ /**
6
+ * Represents a select menu interaction.
7
+ * @extends {MessageComponentInteraction}
8
+ */
9
+ class SelectMenuInteraction extends MessageComponentInteraction {
10
+ constructor(client, data) {
11
+ super(client, data);
12
+
13
+ /**
14
+ * The values selected, if the component which was interacted with was a select menu
15
+ * @type {string[]}
16
+ */
17
+ this.values = data.data.values ?? [];
18
+ }
19
+ }
20
+
21
+ module.exports = SelectMenuInteraction;
@@ -0,0 +1,104 @@
1
+ 'use strict';
2
+
3
+ const BaseGuildVoiceChannel = require('./BaseGuildVoiceChannel');
4
+
5
+ /**
6
+ * Represents a guild stage channel on Discord.
7
+ * @extends {BaseGuildVoiceChannel}
8
+ */
9
+ class StageChannel extends BaseGuildVoiceChannel {
10
+ _patch(data) {
11
+ super._patch(data);
12
+
13
+ if ('topic' in data) {
14
+ /**
15
+ * The topic of the stage channel
16
+ * @type {?string}
17
+ */
18
+ this.topic = data.topic;
19
+ }
20
+ }
21
+
22
+ /**
23
+ * The stage instance of this stage channel, if it exists
24
+ * @type {?StageInstance}
25
+ * @readonly
26
+ */
27
+ get stageInstance() {
28
+ return this.guild.stageInstances.cache.find(stageInstance => stageInstance.channelId === this.id) ?? null;
29
+ }
30
+
31
+ /**
32
+ * Creates a stage instance associated with this stage channel.
33
+ * @param {StageInstanceCreateOptions} options The options to create the stage instance
34
+ * @returns {Promise<StageInstance>}
35
+ */
36
+ createStageInstance(options) {
37
+ return this.guild.stageInstances.create(this.id, options);
38
+ }
39
+
40
+ /**
41
+ * Sets a new topic for the guild channel.
42
+ * @param {?string} topic The new topic for the guild channel
43
+ * @param {string} [reason] Reason for changing the guild channel's topic
44
+ * @returns {Promise<GuildChannel>}
45
+ * @example
46
+ * // Set a new channel topic
47
+ * channel.setTopic('needs more rate limiting')
48
+ * .then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))
49
+ * .catch(console.error);
50
+ */
51
+ setTopic(topic, reason) {
52
+ return this.edit({ topic }, reason);
53
+ }
54
+
55
+ /**
56
+ * Sets the bitrate of the channel.
57
+ * @name StageChannel#setBitrate
58
+ * @param {number} bitrate The new bitrate
59
+ * @param {string} [reason] Reason for changing the channel's bitrate
60
+ * @returns {Promise<StageChannel>}
61
+ * @example
62
+ * // Set the bitrate of a voice channel
63
+ * stageChannel.setBitrate(48_000)
64
+ * .then(channel => console.log(`Set bitrate to ${channel.bitrate}bps for ${channel.name}`))
65
+ * .catch(console.error);
66
+ */
67
+
68
+ /**
69
+ * Sets the RTC region of the channel.
70
+ * @name StageChannel#setRTCRegion
71
+ * @param {?string} rtcRegion The new region of the channel. Set to `null` to remove a specific region for the channel
72
+ * @param {string} [reason] The reason for modifying this region.
73
+ * @returns {Promise<StageChannel>}
74
+ * @example
75
+ * // Set the RTC region to sydney
76
+ * stageChannel.setRTCRegion('sydney');
77
+ * @example
78
+ * // Remove a fixed region for this channel - let Discord decide automatically
79
+ * stageChannel.setRTCRegion(null, 'We want to let Discord decide.');
80
+ */
81
+
82
+ /**
83
+ * Sets the user limit of the channel.
84
+ * @name StageChannel#setUserLimit
85
+ * @param {number} userLimit The new user limit
86
+ * @param {string} [reason] Reason for changing the user limit
87
+ * @returns {Promise<StageChannel>}
88
+ * @example
89
+ * // Set the user limit of a voice channel
90
+ * stageChannel.setUserLimit(42)
91
+ * .then(channel => console.log(`Set user limit to ${channel.userLimit} for ${channel.name}`))
92
+ * .catch(console.error);
93
+ */
94
+
95
+ /**
96
+ * Sets the camera video quality mode of the channel.
97
+ * @name StageChannel#setVideoQualityMode
98
+ * @param {VideoQualityMode|number} videoQualityMode The new camera video quality mode.
99
+ * @param {string} [reason] Reason for changing the camera video quality mode.
100
+ * @returns {Promise<StageChannel>}
101
+ */
102
+ }
103
+
104
+ module.exports = StageChannel;