djs-selfbot-v13 3.2.2 → 3.7.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.
- package/README.md +37 -36
- package/package.json +89 -85
- package/src/WebSocket.js +39 -39
- package/src/client/BaseClient.js +86 -86
- package/src/client/Client.js +934 -836
- package/src/client/WebhookClient.js +61 -61
- package/src/client/actions/Action.js +116 -120
- package/src/client/actions/ActionsManager.js +80 -78
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -34
- package/src/client/actions/AutoModerationActionExecution.js +27 -27
- package/src/client/actions/AutoModerationRuleCreate.js +28 -28
- package/src/client/actions/AutoModerationRuleDelete.js +32 -32
- package/src/client/actions/AutoModerationRuleUpdate.js +30 -30
- package/src/client/actions/ChannelCreate.js +23 -23
- package/src/client/actions/ChannelDelete.js +39 -39
- package/src/client/actions/ChannelUpdate.js +43 -43
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -29
- package/src/client/actions/GuildBanAdd.js +20 -20
- package/src/client/actions/GuildBanRemove.js +25 -25
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -21
- package/src/client/actions/GuildDelete.js +65 -65
- package/src/client/actions/GuildEmojiCreate.js +20 -20
- package/src/client/actions/GuildEmojiDelete.js +21 -21
- package/src/client/actions/GuildEmojiUpdate.js +20 -20
- package/src/client/actions/GuildEmojisUpdate.js +34 -34
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -19
- package/src/client/actions/GuildMemberRemove.js +33 -32
- package/src/client/actions/GuildMemberUpdate.js +44 -43
- package/src/client/actions/GuildRoleCreate.js +25 -25
- package/src/client/actions/GuildRoleDelete.js +31 -31
- package/src/client/actions/GuildRoleUpdate.js +39 -39
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -21
- package/src/client/actions/GuildScheduledEventCreate.js +27 -27
- package/src/client/actions/GuildScheduledEventDelete.js +31 -31
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -30
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -32
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -32
- package/src/client/actions/GuildStickerCreate.js +20 -20
- package/src/client/actions/GuildStickerDelete.js +21 -21
- package/src/client/actions/GuildStickerUpdate.js +20 -20
- package/src/client/actions/GuildStickersUpdate.js +34 -34
- package/src/client/actions/GuildUpdate.js +33 -33
- package/src/client/actions/InviteCreate.js +28 -28
- package/src/client/actions/InviteDelete.js +30 -30
- package/src/client/actions/MessageCreate.js +50 -46
- package/src/client/actions/MessageDelete.js +32 -32
- package/src/client/actions/MessageDeleteBulk.js +46 -46
- package/src/client/actions/MessagePollVoteAdd.js +33 -0
- package/src/client/actions/MessagePollVoteRemove.js +33 -0
- package/src/client/actions/MessageReactionAdd.js +68 -56
- package/src/client/actions/MessageReactionRemove.js +50 -45
- package/src/client/actions/MessageReactionRemoveAll.js +33 -33
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -28
- package/src/client/actions/MessageUpdate.js +26 -26
- package/src/client/actions/PresenceUpdate.js +50 -46
- package/src/client/actions/StageInstanceCreate.js +28 -28
- package/src/client/actions/StageInstanceDelete.js +33 -33
- package/src/client/actions/StageInstanceUpdate.js +30 -30
- package/src/client/actions/ThreadCreate.js +24 -24
- package/src/client/actions/ThreadDelete.js +32 -32
- package/src/client/actions/ThreadListSync.js +59 -59
- package/src/client/actions/ThreadMemberUpdate.js +30 -30
- package/src/client/actions/ThreadMembersUpdate.js +34 -34
- package/src/client/actions/TypingStart.js +29 -29
- package/src/client/actions/UserUpdate.js +35 -35
- package/src/client/actions/VoiceStateUpdate.js +50 -57
- package/src/client/actions/WebhooksUpdate.js +20 -20
- package/src/client/voice/ClientVoiceManager.js +151 -51
- package/src/client/voice/VoiceConnection.js +1249 -0
- package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
- package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
- package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
- package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
- package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
- package/src/client/voice/networking/VoiceUDPClient.js +173 -0
- package/src/client/voice/networking/VoiceWebSocket.js +286 -0
- package/src/client/voice/player/MediaPlayer.js +321 -0
- package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
- package/src/client/voice/player/processing/IvfSplitter.js +106 -0
- package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
- package/src/client/voice/receiver/PacketHandler.js +260 -0
- package/src/client/voice/receiver/Receiver.js +96 -0
- package/src/client/voice/receiver/Recorder.js +173 -0
- package/src/client/voice/util/Function.js +116 -0
- package/src/client/voice/util/PlayInterface.js +122 -0
- package/src/client/voice/util/Secretbox.js +64 -0
- package/src/client/voice/util/Silence.js +16 -0
- package/src/client/voice/util/Socket.js +62 -0
- package/src/client/voice/util/VolumeInterface.js +104 -0
- package/src/client/websocket/WebSocketManager.js +392 -392
- package/src/client/websocket/WebSocketShard.js +907 -906
- package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -18
- package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -20
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -20
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/CALL_CREATE.js +14 -14
- package/src/client/websocket/handlers/CALL_DELETE.js +11 -11
- package/src/client/websocket/handlers/CALL_UPDATE.js +11 -11
- package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -5
- package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -5
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -22
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -19
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -16
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -16
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -5
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_CREATE.js +52 -52
- package/src/client/websocket/handlers/GUILD_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -39
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -19
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -5
- package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -12
- package/src/client/websocket/handlers/INVITE_CREATE.js +5 -5
- package/src/client/websocket/handlers/INVITE_DELETE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -22
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -12
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -16
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/READY.js +121 -120
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -19
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -17
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -41
- package/src/client/websocket/handlers/RESUMED.js +14 -14
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -5
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -5
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_CREATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_DELETE.js +5 -5
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -5
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -16
- package/src/client/websocket/handlers/TYPING_START.js +5 -5
- package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -6
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -78
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -12
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -6
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/index.js +84 -83
- package/src/errors/DJSError.js +61 -61
- package/src/errors/Messages.js +217 -183
- package/src/errors/index.js +4 -4
- package/src/index.js +172 -159
- package/src/managers/ApplicationCommandManager.js +264 -264
- package/src/managers/ApplicationCommandPermissionsManager.js +417 -417
- package/src/managers/AutoModerationRuleManager.js +296 -296
- package/src/managers/BaseGuildEmojiManager.js +80 -80
- package/src/managers/BaseManager.js +19 -19
- package/src/managers/BillingManager.js +66 -66
- package/src/managers/CachedManager.js +71 -71
- package/src/managers/ChannelManager.js +148 -138
- package/src/managers/ClientUserSettingManager.js +372 -372
- package/src/managers/DataManager.js +61 -61
- package/src/managers/GuildBanManager.js +250 -250
- package/src/managers/GuildChannelManager.js +488 -488
- package/src/managers/GuildEmojiManager.js +171 -171
- package/src/managers/GuildEmojiRoleManager.js +118 -118
- package/src/managers/GuildForumThreadManager.js +108 -108
- package/src/managers/GuildInviteManager.js +213 -213
- package/src/managers/GuildManager.js +338 -304
- package/src/managers/GuildMemberManager.js +599 -597
- package/src/managers/GuildMemberRoleManager.js +195 -191
- package/src/managers/GuildScheduledEventManager.js +314 -296
- package/src/managers/GuildSettingManager.js +155 -155
- package/src/managers/GuildStickerManager.js +179 -179
- package/src/managers/GuildTextThreadManager.js +98 -98
- package/src/managers/InteractionManager.js +39 -39
- package/src/managers/MessageManager.js +423 -391
- package/src/managers/PermissionOverwriteManager.js +164 -166
- package/src/managers/PresenceManager.js +71 -58
- package/src/managers/ReactionManager.js +67 -67
- package/src/managers/ReactionUserManager.js +73 -71
- package/src/managers/RelationshipManager.js +278 -265
- package/src/managers/RoleManager.js +448 -352
- package/src/managers/SessionManager.js +66 -0
- package/src/managers/StageInstanceManager.js +162 -162
- package/src/managers/ThreadManager.js +175 -174
- package/src/managers/ThreadMemberManager.js +186 -186
- package/src/managers/UserManager.js +136 -146
- package/src/managers/UserNoteManager.js +53 -53
- package/src/managers/VoiceStateManager.js +59 -37
- package/src/rest/APIRequest.js +154 -160
- package/src/rest/APIRouter.js +53 -53
- package/src/rest/DiscordAPIError.js +119 -104
- package/src/rest/HTTPError.js +62 -62
- package/src/rest/RESTManager.js +67 -62
- package/src/rest/RateLimitError.js +55 -55
- package/src/rest/RequestHandler.js +466 -444
- package/src/sharding/Shard.js +444 -443
- package/src/sharding/ShardClientUtil.js +279 -275
- package/src/sharding/ShardingManager.js +319 -318
- package/src/structures/AnonymousGuild.js +98 -98
- package/src/structures/ApplicationCommand.js +593 -593
- package/src/structures/ApplicationRoleConnectionMetadata.js +48 -48
- package/src/structures/AutoModerationActionExecution.js +89 -89
- package/src/structures/AutoModerationRule.js +294 -294
- package/src/structures/AutocompleteInteraction.js +107 -107
- package/src/structures/Base.js +43 -43
- package/src/structures/BaseCommandInteraction.js +211 -211
- package/src/structures/BaseGuild.js +116 -116
- package/src/structures/BaseGuildEmoji.js +56 -56
- package/src/structures/BaseGuildTextChannel.js +191 -191
- package/src/structures/BaseGuildVoiceChannel.js +241 -241
- package/src/structures/BaseMessageComponent.js +181 -114
- package/src/structures/ButtonInteraction.js +11 -11
- package/src/structures/CallState.js +63 -63
- package/src/structures/CategoryChannel.js +85 -85
- package/src/structures/Channel.js +284 -270
- package/src/structures/ClientPresence.js +77 -85
- package/src/structures/ClientUser.js +479 -448
- package/src/structures/CommandInteraction.js +41 -41
- package/src/structures/CommandInteractionOptionResolver.js +276 -276
- package/src/structures/ContainerComponent.js +68 -0
- package/src/structures/ContextMenuInteraction.js +65 -65
- package/src/structures/DMChannel.js +219 -217
- package/src/structures/DirectoryChannel.js +20 -20
- package/src/structures/Emoji.js +148 -148
- package/src/structures/FileComponent.js +49 -0
- package/src/structures/ForumChannel.js +31 -261
- package/src/structures/GroupDMChannel.js +394 -387
- package/src/structures/Guild.js +1643 -1608
- package/src/structures/GuildAuditLogs.js +746 -729
- package/src/structures/GuildBan.js +59 -59
- package/src/structures/GuildBoost.js +108 -108
- package/src/structures/GuildChannel.js +470 -468
- package/src/structures/GuildEmoji.js +161 -161
- package/src/structures/GuildMember.js +636 -568
- package/src/structures/GuildPreview.js +191 -191
- package/src/structures/GuildPreviewEmoji.js +27 -27
- package/src/structures/GuildScheduledEvent.js +536 -441
- package/src/structures/GuildTemplate.js +236 -236
- package/src/structures/Integration.js +188 -188
- package/src/structures/IntegrationApplication.js +96 -96
- package/src/structures/Interaction.js +290 -290
- package/src/structures/InteractionCollector.js +248 -248
- package/src/structures/InteractionWebhook.js +43 -43
- package/src/structures/Invite.js +358 -358
- package/src/structures/InviteGuild.js +23 -23
- package/src/structures/InviteStageInstance.js +86 -86
- package/src/structures/MediaChannel.js +11 -0
- package/src/structures/MediaGalleryComponent.js +41 -0
- package/src/structures/MediaGalleryItem.js +47 -0
- package/src/structures/Message.js +1252 -1227
- package/src/structures/MessageActionRow.js +105 -103
- package/src/structures/MessageAttachment.js +216 -204
- package/src/structures/MessageButton.js +166 -165
- package/src/structures/MessageCollector.js +146 -146
- package/src/structures/MessageComponentInteraction.js +120 -120
- package/src/structures/MessageContextMenuInteraction.js +20 -20
- package/src/structures/MessageEmbed.js +596 -586
- package/src/structures/MessageMentions.js +273 -273
- package/src/structures/MessagePayload.js +354 -318
- package/src/structures/MessageReaction.js +181 -171
- package/src/structures/MessageSelectMenu.js +141 -140
- package/src/structures/Modal.js +161 -161
- package/src/structures/ModalSubmitFieldsResolver.js +53 -53
- package/src/structures/ModalSubmitInteraction.js +119 -119
- package/src/structures/NewsChannel.js +32 -32
- package/src/structures/OAuth2Guild.js +28 -28
- package/src/structures/PermissionOverwrites.js +198 -196
- package/src/structures/Poll.js +108 -0
- package/src/structures/PollAnswer.js +88 -0
- package/src/structures/Presence.js +1105 -1101
- package/src/structures/ReactionCollector.js +229 -229
- package/src/structures/ReactionEmoji.js +31 -31
- package/src/structures/Role.js +590 -531
- package/src/structures/SectionComponent.js +48 -0
- package/src/structures/SelectMenuInteraction.js +21 -21
- package/src/structures/SeparatorComponent.js +48 -0
- package/src/structures/Session.js +81 -0
- package/src/structures/StageChannel.js +104 -104
- package/src/structures/StageInstance.js +208 -208
- package/src/structures/Sticker.js +310 -310
- package/src/structures/StickerPack.js +95 -95
- package/src/structures/StoreChannel.js +56 -56
- package/src/structures/Team.js +118 -118
- package/src/structures/TeamMember.js +80 -71
- package/src/structures/TextChannel.js +33 -33
- package/src/structures/TextDisplayComponent.js +40 -0
- package/src/structures/TextInputComponent.js +132 -131
- package/src/structures/ThreadChannel.js +605 -607
- package/src/structures/ThreadMember.js +105 -105
- package/src/structures/ThreadOnlyChannel.js +249 -0
- package/src/structures/ThumbnailComponent.js +57 -0
- package/src/structures/Typing.js +74 -74
- package/src/structures/UnfurledMediaItem.js +29 -0
- package/src/structures/User.js +640 -543
- package/src/structures/UserContextMenuInteraction.js +29 -29
- package/src/structures/VoiceChannel.js +110 -110
- package/src/structures/VoiceChannelEffect.js +69 -0
- package/src/structures/VoiceRegion.js +53 -53
- package/src/structures/VoiceState.js +354 -341
- package/src/structures/WebEmbed.js +373 -373
- package/src/structures/Webhook.js +478 -467
- package/src/structures/WelcomeChannel.js +60 -60
- package/src/structures/WelcomeScreen.js +48 -48
- package/src/structures/Widget.js +87 -87
- package/src/structures/WidgetMember.js +99 -99
- package/src/structures/interfaces/Application.js +825 -313
- package/src/structures/interfaces/Collector.js +300 -300
- package/src/structures/interfaces/InteractionResponses.js +313 -313
- package/src/structures/interfaces/TextBasedChannel.js +759 -719
- package/src/util/APITypes.js +59 -0
- package/src/util/ActivityFlags.js +44 -44
- package/src/util/ApplicationFlags.js +76 -76
- package/src/util/AttachmentFlags.js +38 -38
- package/src/util/BitField.js +170 -170
- package/src/util/ChannelFlags.js +45 -45
- package/src/util/Constants.js +1914 -1773
- package/src/util/DataResolver.js +146 -145
- package/src/util/Formatters.js +228 -228
- package/src/util/GuildMemberFlags.js +43 -43
- package/src/util/Intents.js +74 -74
- package/src/util/InviteFlags.js +34 -29
- package/src/util/LimitedCollection.js +131 -131
- package/src/util/MessageFlags.js +63 -54
- package/src/util/Options.js +358 -336
- package/src/util/Permissions.js +202 -202
- package/src/util/PremiumUsageFlags.js +31 -31
- package/src/util/PurchasedFlags.js +33 -33
- package/src/util/RemoteAuth.js +382 -379
- package/src/util/RoleFlags.js +37 -37
- package/src/util/SnowflakeUtil.js +92 -92
- package/src/util/Speaking.js +33 -0
- package/src/util/Sweepers.js +466 -466
- package/src/util/SystemChannelFlags.js +55 -55
- package/src/util/ThreadMemberFlags.js +30 -30
- package/src/util/UserFlags.js +104 -104
- package/src/util/Util.js +1048 -889
- package/typings/enums.d.ts +439 -297
- package/typings/index.d.ts +8247 -7432
- package/typings/rawDataTypes.d.ts +403 -342
- package/src/structures/MessagePoll.js +0 -238
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ThreadManager = require('./ThreadManager');
|
|
4
|
-
const { TypeError } = require('../errors');
|
|
5
|
-
const MessagePayload = require('../structures/MessagePayload');
|
|
6
|
-
const { resolveAutoArchiveMaxLimit, getUploadURL, uploadFile } = require('../util/Util');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Manages API methods for threads in forum channels and stores their cache.
|
|
10
|
-
* @extends {ThreadManager}
|
|
11
|
-
*/
|
|
12
|
-
class GuildForumThreadManager extends ThreadManager {
|
|
13
|
-
/**
|
|
14
|
-
* The channel this Manager belongs to
|
|
15
|
-
* @name GuildForumThreadManager#channel
|
|
16
|
-
* @type {ForumChannel}
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @typedef {BaseMessageOptions} GuildForumThreadMessageCreateOptions
|
|
21
|
-
* @property {StickerResolvable} [stickers] The stickers to send with the message
|
|
22
|
-
* @property {BitFieldResolvable} [flags] The flags to send with the message.
|
|
23
|
-
* Only `SUPPRESS_EMBEDS` and `SUPPRESS_NOTIFICATIONS` can be set.
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Options for creating a thread.
|
|
28
|
-
* @typedef {StartThreadOptions} GuildForumThreadCreateOptions
|
|
29
|
-
* @property {GuildForumThreadMessageCreateOptions|MessagePayload} message The message associated with the thread post
|
|
30
|
-
* @property {Snowflake[]} [appliedTags] The tags to apply to the thread
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Creates a new thread in the channel.
|
|
35
|
-
* @param {GuildForumThreadCreateOptions} [options] Options to create a new thread
|
|
36
|
-
* @returns {Promise<ThreadChannel>}
|
|
37
|
-
* @example
|
|
38
|
-
* // Create a new forum post
|
|
39
|
-
* forum.threads
|
|
40
|
-
* .create({
|
|
41
|
-
* name: 'Food Talk',
|
|
42
|
-
* autoArchiveDuration: 60,
|
|
43
|
-
* message: {
|
|
44
|
-
* content: 'Discuss your favorite food!',
|
|
45
|
-
* },
|
|
46
|
-
* reason: 'Needed a separate thread for food',
|
|
47
|
-
* })
|
|
48
|
-
* .then(threadChannel => console.log(threadChannel))
|
|
49
|
-
* .catch(console.error);
|
|
50
|
-
*/
|
|
51
|
-
async create({
|
|
52
|
-
name,
|
|
53
|
-
autoArchiveDuration = this.channel.defaultAutoArchiveDuration,
|
|
54
|
-
message,
|
|
55
|
-
reason,
|
|
56
|
-
rateLimitPerUser,
|
|
57
|
-
appliedTags,
|
|
58
|
-
} = {}) {
|
|
59
|
-
if (!message) {
|
|
60
|
-
throw new TypeError('GUILD_FORUM_MESSAGE_REQUIRED');
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
let messagePayload;
|
|
64
|
-
|
|
65
|
-
if (message instanceof MessagePayload) {
|
|
66
|
-
messagePayload = message.resolveData();
|
|
67
|
-
} else {
|
|
68
|
-
messagePayload = MessagePayload.create(this, message).resolveData();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const { data: body, files } = await messagePayload.resolveFiles();
|
|
72
|
-
|
|
73
|
-
// New API
|
|
74
|
-
const attachments = await getUploadURL(this.client, this.channel.id, files);
|
|
75
|
-
const requestPromises = attachments.map(async attachment => {
|
|
76
|
-
await uploadFile(files[attachment.id].file, attachment.upload_url);
|
|
77
|
-
return {
|
|
78
|
-
id: attachment.id,
|
|
79
|
-
filename: files[attachment.id].name,
|
|
80
|
-
uploaded_filename: attachment.upload_filename,
|
|
81
|
-
description: files[attachment.id].description,
|
|
82
|
-
duration_secs: files[attachment.id].duration_secs,
|
|
83
|
-
waveform: files[attachment.id].waveform,
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
const attachmentsData = await Promise.all(requestPromises);
|
|
87
|
-
attachmentsData.sort((a, b) => parseInt(a.id) - parseInt(b.id));
|
|
88
|
-
|
|
89
|
-
if (autoArchiveDuration === 'MAX') autoArchiveDuration = resolveAutoArchiveMaxLimit(this.channel.guild);
|
|
90
|
-
|
|
91
|
-
const post_data = await this.client.api.channels(this.channel.id).threads.post({
|
|
92
|
-
data: {
|
|
93
|
-
name,
|
|
94
|
-
auto_archive_duration: autoArchiveDuration,
|
|
95
|
-
rate_limit_per_user: rateLimitPerUser,
|
|
96
|
-
applied_tags: appliedTags,
|
|
97
|
-
message: body,
|
|
98
|
-
attachments: attachmentsData,
|
|
99
|
-
},
|
|
100
|
-
files: [],
|
|
101
|
-
reason,
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
return this.client.actions.ThreadCreate.handle(post_data).thread;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
module.exports = GuildForumThreadManager;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const ThreadManager = require('./ThreadManager');
|
|
4
|
+
const { TypeError } = require('../errors');
|
|
5
|
+
const MessagePayload = require('../structures/MessagePayload');
|
|
6
|
+
const { resolveAutoArchiveMaxLimit, getUploadURL, uploadFile } = require('../util/Util');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Manages API methods for threads in forum channels and stores their cache.
|
|
10
|
+
* @extends {ThreadManager}
|
|
11
|
+
*/
|
|
12
|
+
class GuildForumThreadManager extends ThreadManager {
|
|
13
|
+
/**
|
|
14
|
+
* The channel this Manager belongs to
|
|
15
|
+
* @name GuildForumThreadManager#channel
|
|
16
|
+
* @type {ForumChannel|MediaChannel}
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @typedef {BaseMessageOptions} GuildForumThreadMessageCreateOptions
|
|
21
|
+
* @property {StickerResolvable} [stickers] The stickers to send with the message
|
|
22
|
+
* @property {BitFieldResolvable} [flags] The flags to send with the message.
|
|
23
|
+
* Only `SUPPRESS_EMBEDS` and `SUPPRESS_NOTIFICATIONS` can be set.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Options for creating a thread.
|
|
28
|
+
* @typedef {StartThreadOptions} GuildForumThreadCreateOptions
|
|
29
|
+
* @property {GuildForumThreadMessageCreateOptions|MessagePayload} message The message associated with the thread post
|
|
30
|
+
* @property {Snowflake[]} [appliedTags] The tags to apply to the thread
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new thread in the channel.
|
|
35
|
+
* @param {GuildForumThreadCreateOptions} [options] Options to create a new thread
|
|
36
|
+
* @returns {Promise<ThreadChannel>}
|
|
37
|
+
* @example
|
|
38
|
+
* // Create a new forum post
|
|
39
|
+
* forum.threads
|
|
40
|
+
* .create({
|
|
41
|
+
* name: 'Food Talk',
|
|
42
|
+
* autoArchiveDuration: 60,
|
|
43
|
+
* message: {
|
|
44
|
+
* content: 'Discuss your favorite food!',
|
|
45
|
+
* },
|
|
46
|
+
* reason: 'Needed a separate thread for food',
|
|
47
|
+
* })
|
|
48
|
+
* .then(threadChannel => console.log(threadChannel))
|
|
49
|
+
* .catch(console.error);
|
|
50
|
+
*/
|
|
51
|
+
async create({
|
|
52
|
+
name,
|
|
53
|
+
autoArchiveDuration = this.channel.defaultAutoArchiveDuration,
|
|
54
|
+
message,
|
|
55
|
+
reason,
|
|
56
|
+
rateLimitPerUser,
|
|
57
|
+
appliedTags,
|
|
58
|
+
} = {}) {
|
|
59
|
+
if (!message) {
|
|
60
|
+
throw new TypeError('GUILD_FORUM_MESSAGE_REQUIRED');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
let messagePayload;
|
|
64
|
+
|
|
65
|
+
if (message instanceof MessagePayload) {
|
|
66
|
+
messagePayload = message.resolveData();
|
|
67
|
+
} else {
|
|
68
|
+
messagePayload = MessagePayload.create(this, message).resolveData();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const { data: body, files } = await messagePayload.resolveFiles();
|
|
72
|
+
|
|
73
|
+
// New API
|
|
74
|
+
const attachments = await getUploadURL(this.client, this.channel.id, files);
|
|
75
|
+
const requestPromises = attachments.map(async attachment => {
|
|
76
|
+
await uploadFile(files[attachment.id].file, attachment.upload_url);
|
|
77
|
+
return {
|
|
78
|
+
id: attachment.id,
|
|
79
|
+
filename: files[attachment.id].name,
|
|
80
|
+
uploaded_filename: attachment.upload_filename,
|
|
81
|
+
description: files[attachment.id].description,
|
|
82
|
+
duration_secs: files[attachment.id].duration_secs,
|
|
83
|
+
waveform: files[attachment.id].waveform,
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
const attachmentsData = await Promise.all(requestPromises);
|
|
87
|
+
attachmentsData.sort((a, b) => parseInt(a.id) - parseInt(b.id));
|
|
88
|
+
|
|
89
|
+
if (autoArchiveDuration === 'MAX') autoArchiveDuration = resolveAutoArchiveMaxLimit(this.channel.guild);
|
|
90
|
+
|
|
91
|
+
const post_data = await this.client.api.channels(this.channel.id).threads.post({
|
|
92
|
+
data: {
|
|
93
|
+
name,
|
|
94
|
+
auto_archive_duration: autoArchiveDuration,
|
|
95
|
+
rate_limit_per_user: rateLimitPerUser,
|
|
96
|
+
applied_tags: appliedTags,
|
|
97
|
+
message: body,
|
|
98
|
+
attachments: attachmentsData,
|
|
99
|
+
},
|
|
100
|
+
files: [],
|
|
101
|
+
reason,
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
return this.client.actions.ThreadCreate.handle(post_data).thread;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
module.exports = GuildForumThreadManager;
|
|
@@ -1,213 +1,213 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { Collection } = require('@discordjs/collection');
|
|
4
|
-
const CachedManager = require('./CachedManager');
|
|
5
|
-
const { Error } = require('../errors');
|
|
6
|
-
const Invite = require('../structures/Invite');
|
|
7
|
-
const DataResolver = require('../util/DataResolver');
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Manages API methods for GuildInvites and stores their cache.
|
|
11
|
-
* @extends {CachedManager}
|
|
12
|
-
*/
|
|
13
|
-
class GuildInviteManager extends CachedManager {
|
|
14
|
-
constructor(guild, iterable) {
|
|
15
|
-
super(guild.client, Invite, iterable);
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The guild this Manager belongs to
|
|
19
|
-
* @type {Guild}
|
|
20
|
-
*/
|
|
21
|
-
this.guild = guild;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* The cache of this Manager
|
|
26
|
-
* @type {Collection<string, Invite>}
|
|
27
|
-
* @name GuildInviteManager#cache
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
_add(data, cache) {
|
|
31
|
-
return super._add(data, cache, { id: data.code, extras: [this.guild] });
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Data that resolves to give an Invite object. This can be:
|
|
36
|
-
* * An invite code
|
|
37
|
-
* * An invite URL
|
|
38
|
-
* @typedef {string} InviteResolvable
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Data that can be resolved to a channel that an invite can be created on. This can be:
|
|
43
|
-
* * TextChannel
|
|
44
|
-
* * VoiceChannel
|
|
45
|
-
* * NewsChannel
|
|
46
|
-
* * StoreChannel
|
|
47
|
-
* * StageChannel
|
|
48
|
-
* * Snowflake
|
|
49
|
-
* @typedef {TextChannel|VoiceChannel|NewsChannel|StoreChannel|StageChannel|Snowflake}
|
|
50
|
-
* GuildInvitableChannelResolvable
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Resolves an InviteResolvable to an Invite object.
|
|
55
|
-
* @method resolve
|
|
56
|
-
* @memberof GuildInviteManager
|
|
57
|
-
* @instance
|
|
58
|
-
* @param {InviteResolvable} invite The invite resolvable to resolve
|
|
59
|
-
* @returns {?Invite}
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Resolves an InviteResolvable to an invite code string.
|
|
64
|
-
* @method resolveId
|
|
65
|
-
* @memberof GuildInviteManager
|
|
66
|
-
* @instance
|
|
67
|
-
* @param {InviteResolvable} invite The invite resolvable to resolve
|
|
68
|
-
* @returns {?string}
|
|
69
|
-
*/
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Options used to fetch a single invite from a guild.
|
|
73
|
-
* @typedef {Object} FetchInviteOptions
|
|
74
|
-
* @property {InviteResolvable} code The invite to fetch
|
|
75
|
-
* @property {boolean} [cache=true] Whether or not to cache the fetched invite
|
|
76
|
-
* @property {boolean} [force=false] Whether to skip the cache check and request the API
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Options used to fetch all invites from a guild.
|
|
81
|
-
* @typedef {Object} FetchInvitesOptions
|
|
82
|
-
* @property {GuildInvitableChannelResolvable} [channelId]
|
|
83
|
-
* The channel to fetch all invites from
|
|
84
|
-
* @property {boolean} [cache=true] Whether or not to cache the fetched invites
|
|
85
|
-
*/
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Fetches invite(s) from Discord.
|
|
89
|
-
* @param {InviteResolvable|FetchInviteOptions|FetchInvitesOptions} [options] Options for fetching guild invite(s)
|
|
90
|
-
* @returns {Promise<Invite|Collection<string, Invite>>}
|
|
91
|
-
* @example
|
|
92
|
-
* // Fetch all invites from a guild
|
|
93
|
-
* guild.invites.fetch()
|
|
94
|
-
* .then(console.log)
|
|
95
|
-
* .catch(console.error);
|
|
96
|
-
* @example
|
|
97
|
-
* // Fetch all invites from a guild without caching
|
|
98
|
-
* guild.invites.fetch({ cache: false })
|
|
99
|
-
* .then(console.log)
|
|
100
|
-
* .catch(console.error);
|
|
101
|
-
* @example
|
|
102
|
-
* // Fetch all invites from a channel
|
|
103
|
-
* guild.invites.fetch({ channelId: '222197033908436994' })
|
|
104
|
-
* .then(console.log)
|
|
105
|
-
* .catch(console.error);
|
|
106
|
-
* @example
|
|
107
|
-
* // Fetch a single invite
|
|
108
|
-
* guild.invites.fetch('bRCvFy9')
|
|
109
|
-
* .then(console.log)
|
|
110
|
-
* .catch(console.error);
|
|
111
|
-
* @example
|
|
112
|
-
* // Fetch a single invite without checking cache
|
|
113
|
-
* guild.invites.fetch({ code: 'bRCvFy9', force: true })
|
|
114
|
-
* .then(console.log)
|
|
115
|
-
* .catch(console.error)
|
|
116
|
-
* @example
|
|
117
|
-
* // Fetch a single invite without caching
|
|
118
|
-
* guild.invites.fetch({ code: 'bRCvFy9', cache: false })
|
|
119
|
-
* .then(console.log)
|
|
120
|
-
* .catch(console.error);
|
|
121
|
-
*/
|
|
122
|
-
fetch(options) {
|
|
123
|
-
if (!options) return this._fetchMany();
|
|
124
|
-
if (typeof options === 'string') {
|
|
125
|
-
const code = DataResolver.resolveInviteCode(options);
|
|
126
|
-
if (!code)
|
|
127
|
-
return this._fetchSingle({ code, cache: true });
|
|
128
|
-
}
|
|
129
|
-
if (!options.code) {
|
|
130
|
-
if (options.channelId) {
|
|
131
|
-
const id = this.guild.channels.resolveId(options.channelId);
|
|
132
|
-
if (!id)
|
|
133
|
-
return this._fetchChannelMany(id, options.cache);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
if ('cache' in options) return this._fetchMany(options.cache);
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
return this._fetchSingle({
|
|
140
|
-
...options,
|
|
141
|
-
code: DataResolver.resolveInviteCode(options.code),
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
async _fetchSingle({ code, cache, force = false }) {
|
|
146
|
-
if (!force) {
|
|
147
|
-
const existing = this.cache.get(code);
|
|
148
|
-
if (existing) return existing;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
const invites = await this._fetchMany(cache);
|
|
152
|
-
const invite = invites.get(code);
|
|
153
|
-
if (!invite) throw new Error('INVITE_NOT_FOUND');
|
|
154
|
-
return invite;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
async _fetchMany(cache) {
|
|
158
|
-
const data = await this.client.api.guilds(this.guild.id).invites.get();
|
|
159
|
-
return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection());
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
async _fetchChannelMany(channelId, cache) {
|
|
163
|
-
const data = await this.client.api.channels(channelId).invites.get();
|
|
164
|
-
return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection());
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Create an invite to the guild from the provided channel.
|
|
169
|
-
* @param {GuildInvitableChannelResolvable} channel The options for creating the invite from a channel.
|
|
170
|
-
* @param {CreateInviteOptions} [options={}] The options for creating the invite from a channel.
|
|
171
|
-
* @returns {Promise<Invite>}
|
|
172
|
-
* @example
|
|
173
|
-
* // Create an invite to a selected channel
|
|
174
|
-
* guild.invites.create('599942732013764608')
|
|
175
|
-
* .then(console.log)
|
|
176
|
-
* .catch(console.error);
|
|
177
|
-
*/
|
|
178
|
-
async create(
|
|
179
|
-
channel,
|
|
180
|
-
{ temporary = false, maxAge = 86400, maxUses = 0, unique, targetUser, targetApplication, targetType, reason } = {},
|
|
181
|
-
) {
|
|
182
|
-
const id = this.guild.channels.resolveId(channel);
|
|
183
|
-
if (!id) throw new Error('GUILD_CHANNEL_RESOLVE');
|
|
184
|
-
|
|
185
|
-
const invite = await this.client.api.channels(id).invites.post({
|
|
186
|
-
data: {
|
|
187
|
-
temporary,
|
|
188
|
-
max_age: maxAge,
|
|
189
|
-
max_uses: maxUses,
|
|
190
|
-
unique,
|
|
191
|
-
target_user_id: this.client.users.resolveId(targetUser),
|
|
192
|
-
target_application_id: targetApplication?.id ?? targetApplication?.applicationId ?? targetApplication,
|
|
193
|
-
target_type: targetType,
|
|
194
|
-
},
|
|
195
|
-
reason,
|
|
196
|
-
});
|
|
197
|
-
return new Invite(this.client, invite);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Deletes an invite.
|
|
202
|
-
* @param {InviteResolvable} invite The invite to delete
|
|
203
|
-
* @param {string} [reason] Reason for deleting the invite
|
|
204
|
-
* @returns {Promise<void>}
|
|
205
|
-
*/
|
|
206
|
-
async delete(invite, reason) {
|
|
207
|
-
const code = DataResolver.resolveInviteCode(invite);
|
|
208
|
-
|
|
209
|
-
await this.client.api.invites(code).delete({ reason });
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
module.exports = GuildInviteManager;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const CachedManager = require('./CachedManager');
|
|
5
|
+
const { Error } = require('../errors');
|
|
6
|
+
const Invite = require('../structures/Invite');
|
|
7
|
+
const DataResolver = require('../util/DataResolver');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Manages API methods for GuildInvites and stores their cache.
|
|
11
|
+
* @extends {CachedManager}
|
|
12
|
+
*/
|
|
13
|
+
class GuildInviteManager extends CachedManager {
|
|
14
|
+
constructor(guild, iterable) {
|
|
15
|
+
super(guild.client, Invite, iterable);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The guild this Manager belongs to
|
|
19
|
+
* @type {Guild}
|
|
20
|
+
*/
|
|
21
|
+
this.guild = guild;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The cache of this Manager
|
|
26
|
+
* @type {Collection<string, Invite>}
|
|
27
|
+
* @name GuildInviteManager#cache
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
_add(data, cache) {
|
|
31
|
+
return super._add(data, cache, { id: data.code, extras: [this.guild] });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Data that resolves to give an Invite object. This can be:
|
|
36
|
+
* * An invite code
|
|
37
|
+
* * An invite URL
|
|
38
|
+
* @typedef {string} InviteResolvable
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Data that can be resolved to a channel that an invite can be created on. This can be:
|
|
43
|
+
* * TextChannel
|
|
44
|
+
* * VoiceChannel
|
|
45
|
+
* * NewsChannel
|
|
46
|
+
* * StoreChannel
|
|
47
|
+
* * StageChannel
|
|
48
|
+
* * Snowflake
|
|
49
|
+
* @typedef {TextChannel|VoiceChannel|NewsChannel|StoreChannel|StageChannel|Snowflake}
|
|
50
|
+
* GuildInvitableChannelResolvable
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Resolves an InviteResolvable to an Invite object.
|
|
55
|
+
* @method resolve
|
|
56
|
+
* @memberof GuildInviteManager
|
|
57
|
+
* @instance
|
|
58
|
+
* @param {InviteResolvable} invite The invite resolvable to resolve
|
|
59
|
+
* @returns {?Invite}
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Resolves an InviteResolvable to an invite code string.
|
|
64
|
+
* @method resolveId
|
|
65
|
+
* @memberof GuildInviteManager
|
|
66
|
+
* @instance
|
|
67
|
+
* @param {InviteResolvable} invite The invite resolvable to resolve
|
|
68
|
+
* @returns {?string}
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Options used to fetch a single invite from a guild.
|
|
73
|
+
* @typedef {Object} FetchInviteOptions
|
|
74
|
+
* @property {InviteResolvable} code The invite to fetch
|
|
75
|
+
* @property {boolean} [cache=true] Whether or not to cache the fetched invite
|
|
76
|
+
* @property {boolean} [force=false] Whether to skip the cache check and request the API
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Options used to fetch all invites from a guild.
|
|
81
|
+
* @typedef {Object} FetchInvitesOptions
|
|
82
|
+
* @property {GuildInvitableChannelResolvable} [channelId]
|
|
83
|
+
* The channel to fetch all invites from
|
|
84
|
+
* @property {boolean} [cache=true] Whether or not to cache the fetched invites
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Fetches invite(s) from Discord.
|
|
89
|
+
* @param {InviteResolvable|FetchInviteOptions|FetchInvitesOptions} [options] Options for fetching guild invite(s)
|
|
90
|
+
* @returns {Promise<Invite|Collection<string, Invite>>}
|
|
91
|
+
* @example
|
|
92
|
+
* // Fetch all invites from a guild
|
|
93
|
+
* guild.invites.fetch()
|
|
94
|
+
* .then(console.log)
|
|
95
|
+
* .catch(console.error);
|
|
96
|
+
* @example
|
|
97
|
+
* // Fetch all invites from a guild without caching
|
|
98
|
+
* guild.invites.fetch({ cache: false })
|
|
99
|
+
* .then(console.log)
|
|
100
|
+
* .catch(console.error);
|
|
101
|
+
* @example
|
|
102
|
+
* // Fetch all invites from a channel
|
|
103
|
+
* guild.invites.fetch({ channelId: '222197033908436994' })
|
|
104
|
+
* .then(console.log)
|
|
105
|
+
* .catch(console.error);
|
|
106
|
+
* @example
|
|
107
|
+
* // Fetch a single invite
|
|
108
|
+
* guild.invites.fetch('bRCvFy9')
|
|
109
|
+
* .then(console.log)
|
|
110
|
+
* .catch(console.error);
|
|
111
|
+
* @example
|
|
112
|
+
* // Fetch a single invite without checking cache
|
|
113
|
+
* guild.invites.fetch({ code: 'bRCvFy9', force: true })
|
|
114
|
+
* .then(console.log)
|
|
115
|
+
* .catch(console.error)
|
|
116
|
+
* @example
|
|
117
|
+
* // Fetch a single invite without caching
|
|
118
|
+
* guild.invites.fetch({ code: 'bRCvFy9', cache: false })
|
|
119
|
+
* .then(console.log)
|
|
120
|
+
* .catch(console.error);
|
|
121
|
+
*/
|
|
122
|
+
async fetch(options) {
|
|
123
|
+
if (!options) return this._fetchMany();
|
|
124
|
+
if (typeof options === 'string') {
|
|
125
|
+
const code = DataResolver.resolveInviteCode(options);
|
|
126
|
+
if (!code) throw new Error('INVITE_RESOLVE_CODE');
|
|
127
|
+
return this._fetchSingle({ code, cache: true });
|
|
128
|
+
}
|
|
129
|
+
if (!options.code) {
|
|
130
|
+
if (options.channelId) {
|
|
131
|
+
const id = this.guild.channels.resolveId(options.channelId);
|
|
132
|
+
if (!id) throw new Error('GUILD_CHANNEL_RESOLVE');
|
|
133
|
+
return this._fetchChannelMany(id, options.cache);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if ('cache' in options) return this._fetchMany(options.cache);
|
|
137
|
+
throw new Error('INVITE_RESOLVE_CODE');
|
|
138
|
+
}
|
|
139
|
+
return this._fetchSingle({
|
|
140
|
+
...options,
|
|
141
|
+
code: DataResolver.resolveInviteCode(options.code),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async _fetchSingle({ code, cache, force = false }) {
|
|
146
|
+
if (!force) {
|
|
147
|
+
const existing = this.cache.get(code);
|
|
148
|
+
if (existing) return existing;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const invites = await this._fetchMany(cache);
|
|
152
|
+
const invite = invites.get(code);
|
|
153
|
+
if (!invite) throw new Error('INVITE_NOT_FOUND');
|
|
154
|
+
return invite;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async _fetchMany(cache) {
|
|
158
|
+
const data = await this.client.api.guilds(this.guild.id).invites.get();
|
|
159
|
+
return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection());
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
async _fetchChannelMany(channelId, cache) {
|
|
163
|
+
const data = await this.client.api.channels(channelId).invites.get();
|
|
164
|
+
return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection());
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Create an invite to the guild from the provided channel.
|
|
169
|
+
* @param {GuildInvitableChannelResolvable} channel The options for creating the invite from a channel.
|
|
170
|
+
* @param {CreateInviteOptions} [options={}] The options for creating the invite from a channel.
|
|
171
|
+
* @returns {Promise<Invite>}
|
|
172
|
+
* @example
|
|
173
|
+
* // Create an invite to a selected channel
|
|
174
|
+
* guild.invites.create('599942732013764608')
|
|
175
|
+
* .then(console.log)
|
|
176
|
+
* .catch(console.error);
|
|
177
|
+
*/
|
|
178
|
+
async create(
|
|
179
|
+
channel,
|
|
180
|
+
{ temporary = false, maxAge = 86400, maxUses = 0, unique, targetUser, targetApplication, targetType, reason } = {},
|
|
181
|
+
) {
|
|
182
|
+
const id = this.guild.channels.resolveId(channel);
|
|
183
|
+
if (!id) throw new Error('GUILD_CHANNEL_RESOLVE');
|
|
184
|
+
|
|
185
|
+
const invite = await this.client.api.channels(id).invites.post({
|
|
186
|
+
data: {
|
|
187
|
+
temporary,
|
|
188
|
+
max_age: maxAge,
|
|
189
|
+
max_uses: maxUses,
|
|
190
|
+
unique,
|
|
191
|
+
target_user_id: this.client.users.resolveId(targetUser),
|
|
192
|
+
target_application_id: targetApplication?.id ?? targetApplication?.applicationId ?? targetApplication,
|
|
193
|
+
target_type: targetType,
|
|
194
|
+
},
|
|
195
|
+
reason,
|
|
196
|
+
});
|
|
197
|
+
return new Invite(this.client, invite);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Deletes an invite.
|
|
202
|
+
* @param {InviteResolvable} invite The invite to delete
|
|
203
|
+
* @param {string} [reason] Reason for deleting the invite
|
|
204
|
+
* @returns {Promise<void>}
|
|
205
|
+
*/
|
|
206
|
+
async delete(invite, reason) {
|
|
207
|
+
const code = DataResolver.resolveInviteCode(invite);
|
|
208
|
+
|
|
209
|
+
await this.client.api.invites(code).delete({ reason });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
module.exports = GuildInviteManager;
|