discord.js-selfbot-dmallfriends-v13 0.0.1-security → 2.14.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 +100 -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 +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,191 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const DataManager = require('./DataManager');
5
+ const { TypeError } = require('../errors');
6
+ const { Role } = require('../structures/Role');
7
+
8
+ /**
9
+ * Manages API methods for roles of a GuildMember and stores their cache.
10
+ * @extends {DataManager}
11
+ */
12
+ class GuildMemberRoleManager extends DataManager {
13
+ constructor(member) {
14
+ super(member.client, Role);
15
+
16
+ /**
17
+ * The GuildMember this manager belongs to
18
+ * @type {GuildMember}
19
+ */
20
+ this.member = member;
21
+
22
+ /**
23
+ * The Guild this manager belongs to
24
+ * @type {Guild}
25
+ */
26
+ this.guild = member.guild;
27
+ }
28
+
29
+ /**
30
+ * The roles of this member
31
+ * @type {Collection<Snowflake, Role>}
32
+ * @readonly
33
+ */
34
+ get cache() {
35
+ const everyone = this.guild.roles.everyone;
36
+ return this.guild.roles.cache.filter(role => this.member._roles.includes(role.id)).set(everyone.id, everyone);
37
+ }
38
+
39
+ /**
40
+ * The role of the member used to hoist them in a separate category in the users list
41
+ * @type {?Role}
42
+ * @readonly
43
+ */
44
+ get hoist() {
45
+ const hoistedRoles = this.cache.filter(role => role.hoist);
46
+ if (!hoistedRoles.size) return null;
47
+ return hoistedRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));
48
+ }
49
+
50
+ /**
51
+ * The role of the member used to set their role icon
52
+ * @type {?Role}
53
+ * @readonly
54
+ */
55
+ get icon() {
56
+ const iconRoles = this.cache.filter(role => role.icon || role.unicodeEmoji);
57
+ if (!iconRoles.size) return null;
58
+ return iconRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));
59
+ }
60
+
61
+ /**
62
+ * The role of the member used to set their color
63
+ * @type {?Role}
64
+ * @readonly
65
+ */
66
+ get color() {
67
+ const coloredRoles = this.cache.filter(role => role.color);
68
+ if (!coloredRoles.size) return null;
69
+ return coloredRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev));
70
+ }
71
+
72
+ /**
73
+ * The role of the member with the highest position
74
+ * @type {Role}
75
+ * @readonly
76
+ */
77
+ get highest() {
78
+ return this.cache.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev), this.cache.first());
79
+ }
80
+
81
+ /**
82
+ * The premium subscriber role of the guild, if present on the member
83
+ * @type {?Role}
84
+ * @readonly
85
+ */
86
+ get premiumSubscriberRole() {
87
+ return this.cache.find(role => role.tags?.premiumSubscriberRole) ?? null;
88
+ }
89
+
90
+ /**
91
+ * The managed role this member created when joining the guild, if any
92
+ * <info>Only ever available on bots</info>
93
+ * @type {?Role}
94
+ * @readonly
95
+ */
96
+ get botRole() {
97
+ if (!this.member.user.bot) return null;
98
+ return this.cache.find(role => role.tags?.botId === this.member.user.id) ?? null;
99
+ }
100
+
101
+ /**
102
+ * Adds a role (or multiple roles) to the member.
103
+ * @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to add
104
+ * @param {string} [reason] Reason for adding the role(s)
105
+ * @returns {Promise<GuildMember>}
106
+ */
107
+ async add(roleOrRoles, reason) {
108
+ if (roleOrRoles instanceof Collection || Array.isArray(roleOrRoles)) {
109
+ const resolvedRoles = [];
110
+ for (const role of roleOrRoles.values()) {
111
+ const resolvedRole = this.guild.roles.resolveId(role);
112
+ if (!resolvedRole) throw new TypeError('INVALID_ELEMENT', 'Array or Collection', 'roles', role);
113
+ resolvedRoles.push(resolvedRole);
114
+ }
115
+
116
+ const newRoles = [...new Set(resolvedRoles.concat(...this.cache.keys()))];
117
+ return this.set(newRoles, reason);
118
+ } else {
119
+ roleOrRoles = this.guild.roles.resolveId(roleOrRoles);
120
+ if (roleOrRoles === null) {
121
+ throw new TypeError('INVALID_TYPE', 'roles', 'Role, Snowflake or Array or Collection of Roles or Snowflakes');
122
+ }
123
+
124
+ await this.client.api.guilds[this.guild.id].members[this.member.id].roles[roleOrRoles].put({ reason });
125
+
126
+ const clone = this.member._clone();
127
+ clone._roles = [...this.cache.keys(), roleOrRoles];
128
+ return clone;
129
+ }
130
+ }
131
+
132
+ /**
133
+ * Removes a role (or multiple roles) from the member.
134
+ * @param {RoleResolvable|RoleResolvable[]|Collection<Snowflake, Role>} roleOrRoles The role or roles to remove
135
+ * @param {string} [reason] Reason for removing the role(s)
136
+ * @returns {Promise<GuildMember>}
137
+ */
138
+ async remove(roleOrRoles, reason) {
139
+ if (roleOrRoles instanceof Collection || Array.isArray(roleOrRoles)) {
140
+ const resolvedRoles = [];
141
+ for (const role of roleOrRoles.values()) {
142
+ const resolvedRole = this.guild.roles.resolveId(role);
143
+ if (!resolvedRole) throw new TypeError('INVALID_ELEMENT', 'Array or Collection', 'roles', role);
144
+ resolvedRoles.push(resolvedRole);
145
+ }
146
+
147
+ const newRoles = this.cache.filter(role => !resolvedRoles.includes(role.id));
148
+ return this.set(newRoles, reason);
149
+ } else {
150
+ roleOrRoles = this.guild.roles.resolveId(roleOrRoles);
151
+ if (roleOrRoles === null) {
152
+ throw new TypeError('INVALID_TYPE', 'roles', 'Role, Snowflake or Array or Collection of Roles or Snowflakes');
153
+ }
154
+
155
+ await this.client.api.guilds[this.guild.id].members[this.member.id].roles[roleOrRoles].delete({ reason });
156
+
157
+ const clone = this.member._clone();
158
+ const newRoles = this.cache.filter(role => role.id !== roleOrRoles);
159
+ clone._roles = [...newRoles.keys()];
160
+ return clone;
161
+ }
162
+ }
163
+
164
+ /**
165
+ * Sets the roles applied to the member.
166
+ * @param {Collection<Snowflake, Role>|RoleResolvable[]} roles The roles or role ids to apply
167
+ * @param {string} [reason] Reason for applying the roles
168
+ * @returns {Promise<GuildMember>}
169
+ * @example
170
+ * // Set the member's roles to a single role
171
+ * guildMember.roles.set(['391156570408615936'])
172
+ * .then(console.log)
173
+ * .catch(console.error);
174
+ * @example
175
+ * // Remove all the roles from a member
176
+ * guildMember.roles.set([])
177
+ * .then(member => console.log(`Member roles is now of ${member.roles.cache.size} size`))
178
+ * .catch(console.error);
179
+ */
180
+ set(roles, reason) {
181
+ return this.member.edit({ roles }, reason);
182
+ }
183
+
184
+ clone() {
185
+ const clone = new this.constructor(this.member);
186
+ clone.member._roles = [...this.cache.keys()];
187
+ return clone;
188
+ }
189
+ }
190
+
191
+ module.exports = GuildMemberRoleManager;
@@ -0,0 +1,296 @@
1
+ 'use strict';
2
+
3
+ const { Collection } = require('@discordjs/collection');
4
+ const CachedManager = require('./CachedManager');
5
+ const { TypeError, Error } = require('../errors');
6
+ const { GuildScheduledEvent } = require('../structures/GuildScheduledEvent');
7
+ const { PrivacyLevels, GuildScheduledEventEntityTypes, GuildScheduledEventStatuses } = require('../util/Constants');
8
+ const DataResolver = require('../util/DataResolver');
9
+
10
+ /**
11
+ * Manages API methods for GuildScheduledEvents and stores their cache.
12
+ * @extends {CachedManager}
13
+ */
14
+ class GuildScheduledEventManager extends CachedManager {
15
+ constructor(guild, iterable) {
16
+ super(guild.client, GuildScheduledEvent, iterable);
17
+
18
+ /**
19
+ * The guild this manager belongs to
20
+ * @type {Guild}
21
+ */
22
+ this.guild = guild;
23
+ }
24
+
25
+ /**
26
+ * The cache of this manager
27
+ * @type {Collection<Snowflake, GuildScheduledEvent>}
28
+ * @name GuildScheduledEventManager#cache
29
+ */
30
+
31
+ /**
32
+ * Data that resolves to give a GuildScheduledEvent object. This can be:
33
+ * * A Snowflake
34
+ * * A GuildScheduledEvent object
35
+ * @typedef {Snowflake|GuildScheduledEvent} GuildScheduledEventResolvable
36
+ */
37
+
38
+ /**
39
+ * Options used to create a guild scheduled event.
40
+ * @typedef {Object} GuildScheduledEventCreateOptions
41
+ * @property {string} name The name of the guild scheduled event
42
+ * @property {DateResolvable} scheduledStartTime The time to schedule the event at
43
+ * @property {DateResolvable} [scheduledEndTime] The time to end the event at
44
+ * <warn>This is required if `entityType` is 'EXTERNAL'</warn>
45
+ * @property {PrivacyLevel|number} privacyLevel The privacy level of the guild scheduled event
46
+ * @property {GuildScheduledEventEntityType|number} entityType The scheduled entity type of the event
47
+ * @property {string} [description] The description of the guild scheduled event
48
+ * @property {GuildVoiceChannelResolvable} [channel] The channel of the guild scheduled event
49
+ * <warn>This is required if `entityType` is 'STAGE_INSTANCE' or `VOICE`</warn>
50
+ * @property {GuildScheduledEventEntityMetadataOptions} [entityMetadata] The entity metadata of the
51
+ * guild scheduled event
52
+ * <warn>This is required if `entityType` is 'EXTERNAL'</warn>
53
+ * @property {?(BufferResolvable|Base64Resolvable)} [image] The cover image of the guild scheduled event
54
+ * @property {string} [reason] The reason for creating the guild scheduled event
55
+ */
56
+
57
+ /**
58
+ * Options used to set entity metadata of a guild scheduled event.
59
+ * @typedef {Object} GuildScheduledEventEntityMetadataOptions
60
+ * @property {string} [location] The location of the guild scheduled event
61
+ * <warn>This is required if `entityType` is 'EXTERNAL'</warn>
62
+ */
63
+
64
+ /**
65
+ * Creates a new guild scheduled event.
66
+ * @param {GuildScheduledEventCreateOptions} options Options for creating the guild scheduled event
67
+ * @returns {Promise<GuildScheduledEvent>}
68
+ */
69
+ async create(options) {
70
+ if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);
71
+ let {
72
+ privacyLevel,
73
+ entityType,
74
+ channel,
75
+ name,
76
+ scheduledStartTime,
77
+ description,
78
+ scheduledEndTime,
79
+ entityMetadata,
80
+ reason,
81
+ image,
82
+ } = options;
83
+
84
+ if (typeof privacyLevel === 'string') privacyLevel = PrivacyLevels[privacyLevel];
85
+ if (typeof entityType === 'string') entityType = GuildScheduledEventEntityTypes[entityType];
86
+
87
+ let entity_metadata, channel_id;
88
+ if (entityType === GuildScheduledEventEntityTypes.EXTERNAL) {
89
+ channel_id = typeof channel === 'undefined' ? channel : null;
90
+ entity_metadata = { location: entityMetadata?.location };
91
+ } else {
92
+ channel_id = this.guild.channels.resolveId(channel);
93
+ if (!channel_id) throw new Error('GUILD_VOICE_CHANNEL_RESOLVE');
94
+ entity_metadata = typeof entityMetadata === 'undefined' ? entityMetadata : null;
95
+ }
96
+
97
+ const data = await this.client.api.guilds(this.guild.id, 'scheduled-events').post({
98
+ data: {
99
+ channel_id,
100
+ name,
101
+ privacy_level: privacyLevel,
102
+ scheduled_start_time: new Date(scheduledStartTime).toISOString(),
103
+ scheduled_end_time: scheduledEndTime ? new Date(scheduledEndTime).toISOString() : scheduledEndTime,
104
+ description,
105
+ image: image && (await DataResolver.resolveImage(image)),
106
+ entity_type: entityType,
107
+ entity_metadata,
108
+ },
109
+ reason,
110
+ });
111
+
112
+ return this._add(data);
113
+ }
114
+
115
+ /**
116
+ * Options used to fetch a single guild scheduled event from a guild.
117
+ * @typedef {BaseFetchOptions} FetchGuildScheduledEventOptions
118
+ * @property {GuildScheduledEventResolvable} guildScheduledEvent The guild scheduled event to fetch
119
+ * @property {boolean} [withUserCount=true] Whether to fetch the number of users subscribed to the scheduled event
120
+ */
121
+
122
+ /**
123
+ * Options used to fetch multiple guild scheduled events from a guild.
124
+ * @typedef {Object} FetchGuildScheduledEventsOptions
125
+ * @property {boolean} [cache] Whether or not to cache the fetched guild scheduled events
126
+ * @property {boolean} [withUserCount=true] Whether to fetch the number of users subscribed to each scheduled event
127
+ * should be returned
128
+ */
129
+
130
+ /**
131
+ * Obtains one or more guild scheduled events from Discord, or the guild cache if it's already available.
132
+ * @param {GuildScheduledEventResolvable|FetchGuildScheduledEventOptions|FetchGuildScheduledEventsOptions} [options]
133
+ * The id of the guild scheduled event or options
134
+ * @returns {Promise<GuildScheduledEvent|Collection<Snowflake, GuildScheduledEvent>>}
135
+ */
136
+ async fetch(options = {}) {
137
+ const id = this.resolveId(options.guildScheduledEvent ?? options);
138
+
139
+ if (id) {
140
+ if (!options.force) {
141
+ const existing = this.cache.get(id);
142
+ if (existing) return existing;
143
+ }
144
+
145
+ const data = await this.client.api
146
+ .guilds(this.guild.id, 'scheduled-events', id)
147
+ .get({ query: { with_user_count: options.withUserCount ?? true } });
148
+ return this._add(data, options.cache);
149
+ }
150
+
151
+ const data = await this.client.api
152
+ .guilds(this.guild.id, 'scheduled-events')
153
+ .get({ query: { with_user_count: options.withUserCount ?? true } });
154
+
155
+ return data.reduce(
156
+ (coll, rawGuildScheduledEventData) =>
157
+ coll.set(
158
+ rawGuildScheduledEventData.id,
159
+ this.guild.scheduledEvents._add(rawGuildScheduledEventData, options.cache),
160
+ ),
161
+ new Collection(),
162
+ );
163
+ }
164
+
165
+ /**
166
+ * Options used to edit a guild scheduled event.
167
+ * @typedef {Object} GuildScheduledEventEditOptions
168
+ * @property {string} [name] The name of the guild scheduled event
169
+ * @property {DateResolvable} [scheduledStartTime] The time to schedule the event at
170
+ * @property {DateResolvable} [scheduledEndTime] The time to end the event at
171
+ * @property {PrivacyLevel|number} [privacyLevel] The privacy level of the guild scheduled event
172
+ * @property {GuildScheduledEventEntityType|number} [entityType] The scheduled entity type of the event
173
+ * @property {string} [description] The description of the guild scheduled event
174
+ * @property {?GuildVoiceChannelResolvable} [channel] The channel of the guild scheduled event
175
+ * @property {GuildScheduledEventStatus|number} [status] The status of the guild scheduled event
176
+ * @property {GuildScheduledEventEntityMetadataOptions} [entityMetadata] The entity metadata of the
177
+ * guild scheduled event
178
+ * <warn>This can be modified only if `entityType` of the `GuildScheduledEvent` to be edited is 'EXTERNAL'</warn>
179
+ * @property {?(BufferResolvable|Base64Resolvable)} [image] The cover image of the guild scheduled event
180
+ * @property {string} [reason] The reason for editing the guild scheduled event
181
+ */
182
+
183
+ /**
184
+ * Edits a guild scheduled event.
185
+ * @param {GuildScheduledEventResolvable} guildScheduledEvent The guild scheduled event to edit
186
+ * @param {GuildScheduledEventEditOptions} options Options to edit the guild scheduled event
187
+ * @returns {Promise<GuildScheduledEvent>}
188
+ */
189
+ async edit(guildScheduledEvent, options) {
190
+ const guildScheduledEventId = this.resolveId(guildScheduledEvent);
191
+ if (!guildScheduledEventId) throw new Error('GUILD_SCHEDULED_EVENT_RESOLVE');
192
+
193
+ if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);
194
+ let {
195
+ privacyLevel,
196
+ entityType,
197
+ channel,
198
+ status,
199
+ name,
200
+ scheduledStartTime,
201
+ description,
202
+ scheduledEndTime,
203
+ entityMetadata,
204
+ reason,
205
+ image,
206
+ } = options;
207
+
208
+ if (typeof privacyLevel === 'string') privacyLevel = PrivacyLevels[privacyLevel];
209
+ if (typeof entityType === 'string') entityType = GuildScheduledEventEntityTypes[entityType];
210
+ if (typeof status === 'string') status = GuildScheduledEventStatuses[status];
211
+
212
+ let entity_metadata;
213
+ if (entityMetadata) {
214
+ entity_metadata = {
215
+ location: entityMetadata.location,
216
+ };
217
+ }
218
+
219
+ const data = await this.client.api.guilds(this.guild.id, 'scheduled-events', guildScheduledEventId).patch({
220
+ data: {
221
+ channel_id: typeof channel === 'undefined' ? channel : this.guild.channels.resolveId(channel),
222
+ name,
223
+ privacy_level: privacyLevel,
224
+ scheduled_start_time: scheduledStartTime ? new Date(scheduledStartTime).toISOString() : undefined,
225
+ scheduled_end_time: scheduledEndTime ? new Date(scheduledEndTime).toISOString() : scheduledEndTime,
226
+ description,
227
+ entity_type: entityType,
228
+ status,
229
+ image: image && (await DataResolver.resolveImage(image)),
230
+ entity_metadata,
231
+ },
232
+ reason,
233
+ });
234
+
235
+ return this._add(data);
236
+ }
237
+
238
+ /**
239
+ * Deletes a guild scheduled event.
240
+ * @param {GuildScheduledEventResolvable} guildScheduledEvent The guild scheduled event to delete
241
+ * @returns {Promise<void>}
242
+ */
243
+ async delete(guildScheduledEvent) {
244
+ const guildScheduledEventId = this.resolveId(guildScheduledEvent);
245
+ if (!guildScheduledEventId) throw new Error('GUILD_SCHEDULED_EVENT_RESOLVE');
246
+
247
+ await this.client.api.guilds(this.guild.id, 'scheduled-events', guildScheduledEventId).delete();
248
+ }
249
+
250
+ /**
251
+ * Options used to fetch subscribers of a guild scheduled event
252
+ * @typedef {Object} FetchGuildScheduledEventSubscribersOptions
253
+ * @property {number} [limit] The maximum numbers of users to fetch
254
+ * @property {boolean} [withMember] Whether to fetch guild member data of the users
255
+ * @property {Snowflake} [before] Consider only users before this user id
256
+ * @property {Snowflake} [after] Consider only users after this user id
257
+ * <warn>If both `before` and `after` are provided, only `before` is respected</warn>
258
+ */
259
+
260
+ /**
261
+ * Represents a subscriber of a {@link GuildScheduledEvent}
262
+ * @typedef {Object} GuildScheduledEventUser
263
+ * @property {Snowflake} guildScheduledEventId The id of the guild scheduled event which the user subscribed to
264
+ * @property {User} user The user that subscribed to the guild scheduled event
265
+ * @property {?GuildMember} member The guild member associated with the user, if any
266
+ */
267
+
268
+ /**
269
+ * Fetches subscribers of a guild scheduled event.
270
+ * @param {GuildScheduledEventResolvable} guildScheduledEvent The guild scheduled event to fetch subscribers of
271
+ * @param {FetchGuildScheduledEventSubscribersOptions} [options={}] Options for fetching the subscribers
272
+ * @returns {Promise<Collection<Snowflake, GuildScheduledEventUser>>}
273
+ */
274
+ async fetchSubscribers(guildScheduledEvent, options = {}) {
275
+ const guildScheduledEventId = this.resolveId(guildScheduledEvent);
276
+ if (!guildScheduledEventId) throw new Error('GUILD_SCHEDULED_EVENT_RESOLVE');
277
+
278
+ let { limit, withMember, before, after } = options;
279
+
280
+ const data = await this.client.api.guilds(this.guild.id, 'scheduled-events', guildScheduledEventId).users.get({
281
+ query: { limit, with_member: withMember, before, after },
282
+ });
283
+
284
+ return data.reduce(
285
+ (coll, rawData) =>
286
+ coll.set(rawData.user.id, {
287
+ guildScheduledEventId: rawData.guild_scheduled_event_id,
288
+ user: this.client.users._add(rawData.user),
289
+ member: rawData.member ? this.guild.members._add({ ...rawData.member, user: rawData.user }) : null,
290
+ }),
291
+ new Collection(),
292
+ );
293
+ }
294
+ }
295
+
296
+ module.exports = GuildScheduledEventManager;
@@ -0,0 +1,148 @@
1
+ 'use strict';
2
+
3
+ const BaseManager = require('./BaseManager');
4
+ /**
5
+ * Manages API methods for users and stores their cache.
6
+ * @extends {BaseManager}
7
+ * @see {@link https://luna.gitlab.io/discord-unofficial-docs/user_settings.html}
8
+ */
9
+ class GuildSettingManager extends BaseManager {
10
+ constructor(client, guildId = null) {
11
+ super(client);
12
+ /**
13
+ * Raw data
14
+ * @type {Object}
15
+ */
16
+ this.rawSetting = {};
17
+ /**
18
+ * Guild Id
19
+ * @type {?Snowflake}
20
+ */
21
+ this.guildId = guildId;
22
+ }
23
+ /**
24
+ * Get the guild
25
+ * @type {?Guild}
26
+ * @readonly
27
+ */
28
+ get guild() {
29
+ return this.client.guilds.cache.get(this.guildId);
30
+ }
31
+ /**
32
+ * Patch data file
33
+ * @private
34
+ * @param {Object} data Raw Data to patch
35
+ */
36
+ _patch(data = {}) {
37
+ this.rawSetting = Object.assign(this.rawSetting, data);
38
+ if ('suppress_everyone' in data) {
39
+ /**
40
+ * Notification setting > Suppress `@everyone` and `@here`
41
+ * @type {?boolean}
42
+ */
43
+ this.suppressEveryone = data.suppress_everyone;
44
+ }
45
+ if ('suppress_roles' in data) {
46
+ /**
47
+ * Notification setting > Suppress all role `@mention`
48
+ * @type {?boolean}
49
+ */
50
+ this.suppressRoles = data.suppress_roles;
51
+ }
52
+ if ('mute_scheduled_events' in data) {
53
+ /**
54
+ * Notification setting > Mute new events
55
+ * @type {?boolean}
56
+ */
57
+ this.muteScheduledEvents = data.mute_scheduled_events;
58
+ }
59
+ if ('message_notifications' in data) {
60
+ /**
61
+ * Notification setting > Message notifications
62
+ * * `0` = All messages
63
+ * * `1` = Only @mentions
64
+ * * `2` = Nothing
65
+ * @type {?number}
66
+ */
67
+ this.messageNotifications = data.message_notifications;
68
+ }
69
+ if ('flags' in data) {
70
+ /**
71
+ * Flags (unknown)
72
+ * @type {?number}
73
+ */
74
+ this.flags = data.flags;
75
+ }
76
+ if ('mobile_push' in data) {
77
+ /**
78
+ * Notification setting > Mobile push notifications
79
+ * @type {?boolean}
80
+ */
81
+ this.mobilePush = data.mobile_push;
82
+ }
83
+ if ('muted' in data) {
84
+ /**
85
+ * Mute server
86
+ * @type {?boolean}
87
+ */
88
+ this.muted = data.muted;
89
+ }
90
+ if ('mute_config' in data && data.mute_config !== null) {
91
+ /**
92
+ * Mute config (muted = true)
93
+ * * `muteConfig.endTime`: End time (Date)
94
+ * * `muteConfig.selectedTimeWindow`: Selected time window (seconds) (number)
95
+ * @type {?Object}
96
+ */
97
+ this.muteConfig = {
98
+ endTime: new Date(data.mute_config.end_time),
99
+ selectedTimeWindow: data.mute_config.selected_time_window,
100
+ };
101
+ } else {
102
+ this.muteConfig = null;
103
+ }
104
+ if ('hide_muted_channels' in data) {
105
+ /**
106
+ * Hide muted channels
107
+ * @type {?boolean}
108
+ */
109
+ this.hideMutedChannels = data.hide_muted_channels;
110
+ }
111
+ if ('channel_overrides' in data) {
112
+ /**
113
+ * Channel overrides (unknown)
114
+ * @type {?Array}
115
+ */
116
+ this.channelOverrides = data.channel_overrides;
117
+ }
118
+ if ('notify_highlights' in data) {
119
+ /**
120
+ * Notification setting > Suppress highlights
121
+ * * `0` = ??? (unknown)
122
+ * * `1` = Enable
123
+ * * `2` = Disable
124
+ * @type {?number}
125
+ */
126
+ this.notifyHighlights = data.notify_highlights;
127
+ }
128
+ if ('version' in data) {
129
+ /**
130
+ * Version (unknown)
131
+ * @type {?number}
132
+ */
133
+ this.version = data.version;
134
+ }
135
+ }
136
+ /**
137
+ * Edit guild settings
138
+ * @param {Object} data Data to edit
139
+ * @returns {Promise<GuildSettingManager>}
140
+ */
141
+ async edit(data) {
142
+ const data_ = await this.client.api.users('@me').settings.patch(data);
143
+ this._patch(data_);
144
+ return this;
145
+ }
146
+ }
147
+
148
+ module.exports = GuildSettingManager;