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,174 +1,175 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { Collection } = require('@discordjs/collection');
|
|
4
|
-
const CachedManager = require('./CachedManager');
|
|
5
|
-
const ThreadChannel = require('../structures/ThreadChannel');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Manages API methods for {@link ThreadChannel} objects and stores their cache.
|
|
9
|
-
* @extends {CachedManager}
|
|
10
|
-
*/
|
|
11
|
-
class ThreadManager extends CachedManager {
|
|
12
|
-
constructor(channel, iterable) {
|
|
13
|
-
super(channel.client, ThreadChannel, iterable);
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* The channel this Manager belongs to
|
|
17
|
-
* @type {NewsChannel|TextChannel}
|
|
18
|
-
*/
|
|
19
|
-
this.channel = channel;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* The cache of this Manager
|
|
24
|
-
* @type {Collection<Snowflake, ThreadChannel>}
|
|
25
|
-
* @name ThreadManager#cache
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
_add(thread) {
|
|
29
|
-
const existing = this.cache.get(thread.id);
|
|
30
|
-
if (existing) return existing;
|
|
31
|
-
this.cache.set(thread.id, thread);
|
|
32
|
-
return thread;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Data that can be resolved to a Thread Channel object. This can be:
|
|
37
|
-
* * A ThreadChannel object
|
|
38
|
-
* * A Snowflake
|
|
39
|
-
* @typedef {ThreadChannel|Snowflake} ThreadChannelResolvable
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Resolves a {@link ThreadChannelResolvable} to a {@link ThreadChannel} object.
|
|
44
|
-
* @method resolve
|
|
45
|
-
* @memberof ThreadManager
|
|
46
|
-
* @instance
|
|
47
|
-
* @param {ThreadChannelResolvable} thread The ThreadChannel resolvable to resolve
|
|
48
|
-
* @returns {?ThreadChannel}
|
|
49
|
-
*/
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Resolves a {@link ThreadChannelResolvable} to a {@link ThreadChannel} id.
|
|
53
|
-
* @method resolveId
|
|
54
|
-
* @memberof ThreadManager
|
|
55
|
-
* @instance
|
|
56
|
-
* @param {ThreadChannelResolvable} thread The ThreadChannel resolvable to resolve
|
|
57
|
-
* @returns {?Snowflake}
|
|
58
|
-
*/
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Options for fetching multiple threads.
|
|
62
|
-
* @typedef {Object} FetchThreadsOptions
|
|
63
|
-
* @property {FetchArchivedThreadOptions} [archived] The options used to fetch archived threads
|
|
64
|
-
*/
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Obtains a thread from Discord, or the channel cache if it's already available.
|
|
68
|
-
* @param {ThreadChannelResolvable|FetchChannelThreadsOptions|FetchThreadsOptions} [options] The options to fetch threads. If it is a
|
|
69
|
-
* ThreadChannelResolvable then the specified thread will be fetched. Fetches all active threads if `undefined`
|
|
70
|
-
* @param {BaseFetchOptions} [cacheOptions] Additional options for this fetch. <warn>The `force` field gets ignored
|
|
71
|
-
* if `options` is not a {@link ThreadChannelResolvable}</warn>
|
|
72
|
-
* @returns {Promise<?(ThreadChannel|FetchedThreads)>}
|
|
73
|
-
* @example
|
|
74
|
-
* // Fetch a thread by its id
|
|
75
|
-
* channel.threads.fetch('831955138126104859')
|
|
76
|
-
* .then(channel => console.log(channel.name))
|
|
77
|
-
* .catch(console.error);
|
|
78
|
-
*/
|
|
79
|
-
fetch(options, { cache, force } = {}) {
|
|
80
|
-
if (!options) return this.fetchActive(cache);
|
|
81
|
-
const channel = this.client.channels.resolveId(options);
|
|
82
|
-
if (channel) return this.client.channels.fetch(channel, { cache, force });
|
|
83
|
-
if (options.archived) {
|
|
84
|
-
return this.fetchArchived(options.archived, cache);
|
|
85
|
-
}
|
|
86
|
-
return this.fetchActive(cache);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Data that can be resolved to a Date object. This can be:
|
|
91
|
-
* * A Date object
|
|
92
|
-
* * A number representing a timestamp
|
|
93
|
-
* * An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) string
|
|
94
|
-
* @typedef {Date|number|string} DateResolvable
|
|
95
|
-
*/
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* The options used to fetch archived threads.
|
|
99
|
-
* @typedef {Object} FetchArchivedThreadOptions
|
|
100
|
-
* @property {string} [type='public'] The type of threads to fetch, either `public` or `private`
|
|
101
|
-
* @property {boolean} [fetchAll=false] Whether to fetch **all** archived threads when type is `private`.
|
|
102
|
-
* Requires `MANAGE_THREADS` if true
|
|
103
|
-
* @property {DateResolvable|ThreadChannelResolvable} [before] Only return threads that were archived before this Date
|
|
104
|
-
* or Snowflake. <warn>Must be a {@link ThreadChannelResolvable} when type is `private` and fetchAll is `false`</warn>
|
|
105
|
-
* @property {number} [limit] Maximum number of threads to return
|
|
106
|
-
*/
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* The data returned from a thread fetch that returns multiple threads.
|
|
110
|
-
* @typedef {Object} FetchedThreads
|
|
111
|
-
* @property {Collection<Snowflake, ThreadChannel>} threads The threads that were fetched, with any members returned
|
|
112
|
-
* @property {?boolean} hasMore Whether there are potentially additional threads that require a subsequent call
|
|
113
|
-
*/
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Obtains a set of archived threads from Discord, requires `READ_MESSAGE_HISTORY` in the parent channel.
|
|
117
|
-
* @param {FetchChannelThreadsOptions} [options] The options to fetch archived threads
|
|
118
|
-
* @param {boolean} [cache=true] Whether to cache the new thread objects if they aren't already
|
|
119
|
-
* @returns {Promise<FetchedThreads>}
|
|
120
|
-
*/
|
|
121
|
-
fetchArchived(options = {}, cache = true) {
|
|
122
|
-
return this.fetchActive(cache, { archived: true, ...options });
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Discord.js self-bot specific options field for fetching active threads.
|
|
127
|
-
* @typedef {Object} FetchChannelThreadsOptions
|
|
128
|
-
* @property {boolean} [archived] Whether to fetch archived threads (default is false)
|
|
129
|
-
* @property {string} [sortBy] The order in which the threads should be fetched in (default is last_message_time)
|
|
130
|
-
* @property {string} [sortOrder] How the threads should be ordered (default is desc)
|
|
131
|
-
* @property {number} [limit] The maximum number of threads to return (default is 25)
|
|
132
|
-
* @property {number} [offset] The number of threads to offset fetching (useful when making multiple fetches) (default is 0)
|
|
133
|
-
*/
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Obtains the accessible active threads from Discord, requires `READ_MESSAGE_HISTORY` in the parent channel.
|
|
137
|
-
* @param {boolean} [cache=true] Whether to cache the new thread objects if they aren't already
|
|
138
|
-
* @param {FetchChannelThreadsOptions} [options] Options for self-bots where advanced users can specify further options
|
|
139
|
-
* @returns {Promise<FetchedThreads>}
|
|
140
|
-
*/
|
|
141
|
-
async fetchActive(cache = true, options = {}) {
|
|
142
|
-
const raw = await this.client.api.channels(this.channel.id).threads.search.get({
|
|
143
|
-
query: {
|
|
144
|
-
archived: options?.archived ?? false,
|
|
145
|
-
limit: options?.limit ?? 25,
|
|
146
|
-
offset: options?.offset ?? 0,
|
|
147
|
-
sort_by: options?.sortBy ?? 'last_message_time',
|
|
148
|
-
sort_order: options?.sortOrder ?? 'desc',
|
|
149
|
-
},
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
return this.constructor._mapThreads(raw, this.client, { parent: this.channel, cache });
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
static _mapThreads(rawThreads, client, { parent, guild, cache }) {
|
|
156
|
-
const threads = rawThreads.threads.reduce((coll, raw) => {
|
|
157
|
-
const thread = client.channels._add(raw, guild ?? parent?.guild, { cache });
|
|
158
|
-
if (parent && thread.parentId !== parent.id) return coll;
|
|
159
|
-
return coll.set(thread.id, thread);
|
|
160
|
-
}, new Collection());
|
|
161
|
-
// Discord sends the thread id as id in this object
|
|
162
|
-
for (const rawMember of rawThreads.members) client.channels.cache.get(rawMember.id)?.members._add(rawMember);
|
|
163
|
-
// Patch firstMessage
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const CachedManager = require('./CachedManager');
|
|
5
|
+
const ThreadChannel = require('../structures/ThreadChannel');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Manages API methods for {@link ThreadChannel} objects and stores their cache.
|
|
9
|
+
* @extends {CachedManager}
|
|
10
|
+
*/
|
|
11
|
+
class ThreadManager extends CachedManager {
|
|
12
|
+
constructor(channel, iterable) {
|
|
13
|
+
super(channel.client, ThreadChannel, iterable);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The channel this Manager belongs to
|
|
17
|
+
* @type {NewsChannel|TextChannel}
|
|
18
|
+
*/
|
|
19
|
+
this.channel = channel;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The cache of this Manager
|
|
24
|
+
* @type {Collection<Snowflake, ThreadChannel>}
|
|
25
|
+
* @name ThreadManager#cache
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
_add(thread) {
|
|
29
|
+
const existing = this.cache.get(thread.id);
|
|
30
|
+
if (existing) return existing;
|
|
31
|
+
this.cache.set(thread.id, thread);
|
|
32
|
+
return thread;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Data that can be resolved to a Thread Channel object. This can be:
|
|
37
|
+
* * A ThreadChannel object
|
|
38
|
+
* * A Snowflake
|
|
39
|
+
* @typedef {ThreadChannel|Snowflake} ThreadChannelResolvable
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Resolves a {@link ThreadChannelResolvable} to a {@link ThreadChannel} object.
|
|
44
|
+
* @method resolve
|
|
45
|
+
* @memberof ThreadManager
|
|
46
|
+
* @instance
|
|
47
|
+
* @param {ThreadChannelResolvable} thread The ThreadChannel resolvable to resolve
|
|
48
|
+
* @returns {?ThreadChannel}
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Resolves a {@link ThreadChannelResolvable} to a {@link ThreadChannel} id.
|
|
53
|
+
* @method resolveId
|
|
54
|
+
* @memberof ThreadManager
|
|
55
|
+
* @instance
|
|
56
|
+
* @param {ThreadChannelResolvable} thread The ThreadChannel resolvable to resolve
|
|
57
|
+
* @returns {?Snowflake}
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Options for fetching multiple threads.
|
|
62
|
+
* @typedef {Object} FetchThreadsOptions
|
|
63
|
+
* @property {FetchArchivedThreadOptions} [archived] The options used to fetch archived threads
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Obtains a thread from Discord, or the channel cache if it's already available.
|
|
68
|
+
* @param {ThreadChannelResolvable|FetchChannelThreadsOptions|FetchThreadsOptions} [options] The options to fetch threads. If it is a
|
|
69
|
+
* ThreadChannelResolvable then the specified thread will be fetched. Fetches all active threads if `undefined`
|
|
70
|
+
* @param {BaseFetchOptions} [cacheOptions] Additional options for this fetch. <warn>The `force` field gets ignored
|
|
71
|
+
* if `options` is not a {@link ThreadChannelResolvable}</warn>
|
|
72
|
+
* @returns {Promise<?(ThreadChannel|FetchedThreads)>}
|
|
73
|
+
* @example
|
|
74
|
+
* // Fetch a thread by its id
|
|
75
|
+
* channel.threads.fetch('831955138126104859')
|
|
76
|
+
* .then(channel => console.log(channel.name))
|
|
77
|
+
* .catch(console.error);
|
|
78
|
+
*/
|
|
79
|
+
fetch(options, { cache, force } = {}) {
|
|
80
|
+
if (!options) return this.fetchActive(cache);
|
|
81
|
+
const channel = this.client.channels.resolveId(options);
|
|
82
|
+
if (channel) return this.client.channels.fetch(channel, { cache, force });
|
|
83
|
+
if (options.archived) {
|
|
84
|
+
return this.fetchArchived(options.archived, cache);
|
|
85
|
+
}
|
|
86
|
+
return this.fetchActive(cache);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Data that can be resolved to a Date object. This can be:
|
|
91
|
+
* * A Date object
|
|
92
|
+
* * A number representing a timestamp
|
|
93
|
+
* * An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) string
|
|
94
|
+
* @typedef {Date|number|string} DateResolvable
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* The options used to fetch archived threads.
|
|
99
|
+
* @typedef {Object} FetchArchivedThreadOptions
|
|
100
|
+
* @property {string} [type='public'] The type of threads to fetch, either `public` or `private`
|
|
101
|
+
* @property {boolean} [fetchAll=false] Whether to fetch **all** archived threads when type is `private`.
|
|
102
|
+
* Requires `MANAGE_THREADS` if true
|
|
103
|
+
* @property {DateResolvable|ThreadChannelResolvable} [before] Only return threads that were archived before this Date
|
|
104
|
+
* or Snowflake. <warn>Must be a {@link ThreadChannelResolvable} when type is `private` and fetchAll is `false`</warn>
|
|
105
|
+
* @property {number} [limit] Maximum number of threads to return
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* The data returned from a thread fetch that returns multiple threads.
|
|
110
|
+
* @typedef {Object} FetchedThreads
|
|
111
|
+
* @property {Collection<Snowflake, ThreadChannel>} threads The threads that were fetched, with any members returned
|
|
112
|
+
* @property {?boolean} hasMore Whether there are potentially additional threads that require a subsequent call
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Obtains a set of archived threads from Discord, requires `READ_MESSAGE_HISTORY` in the parent channel.
|
|
117
|
+
* @param {FetchChannelThreadsOptions} [options] The options to fetch archived threads
|
|
118
|
+
* @param {boolean} [cache=true] Whether to cache the new thread objects if they aren't already
|
|
119
|
+
* @returns {Promise<FetchedThreads>}
|
|
120
|
+
*/
|
|
121
|
+
fetchArchived(options = {}, cache = true) {
|
|
122
|
+
return this.fetchActive(cache, { archived: true, ...options });
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Discord.js self-bot specific options field for fetching active threads.
|
|
127
|
+
* @typedef {Object} FetchChannelThreadsOptions
|
|
128
|
+
* @property {boolean} [archived] Whether to fetch archived threads (default is false)
|
|
129
|
+
* @property {string} [sortBy] The order in which the threads should be fetched in (default is last_message_time)
|
|
130
|
+
* @property {string} [sortOrder] How the threads should be ordered (default is desc)
|
|
131
|
+
* @property {number} [limit] The maximum number of threads to return (default is 25)
|
|
132
|
+
* @property {number} [offset] The number of threads to offset fetching (useful when making multiple fetches) (default is 0)
|
|
133
|
+
*/
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Obtains the accessible active threads from Discord, requires `READ_MESSAGE_HISTORY` in the parent channel.
|
|
137
|
+
* @param {boolean} [cache=true] Whether to cache the new thread objects if they aren't already
|
|
138
|
+
* @param {FetchChannelThreadsOptions} [options] Options for self-bots where advanced users can specify further options
|
|
139
|
+
* @returns {Promise<FetchedThreads>}
|
|
140
|
+
*/
|
|
141
|
+
async fetchActive(cache = true, options = {}) {
|
|
142
|
+
const raw = await this.client.api.channels(this.channel.id).threads.search.get({
|
|
143
|
+
query: {
|
|
144
|
+
archived: options?.archived ?? false,
|
|
145
|
+
limit: options?.limit ?? 25,
|
|
146
|
+
offset: options?.offset ?? 0,
|
|
147
|
+
sort_by: options?.sortBy ?? 'last_message_time',
|
|
148
|
+
sort_order: options?.sortOrder ?? 'desc',
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
return this.constructor._mapThreads(raw, this.client, { parent: this.channel, cache });
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
static _mapThreads(rawThreads, client, { parent, guild, cache }) {
|
|
156
|
+
const threads = rawThreads.threads.reduce((coll, raw) => {
|
|
157
|
+
const thread = client.channels._add(raw, guild ?? parent?.guild, { cache });
|
|
158
|
+
if (parent && thread.parentId !== parent.id) return coll;
|
|
159
|
+
return coll.set(thread.id, thread);
|
|
160
|
+
}, new Collection());
|
|
161
|
+
// Discord sends the thread id as id in this object
|
|
162
|
+
for (const rawMember of rawThreads.members) client.channels.cache.get(rawMember.id)?.members._add(rawMember);
|
|
163
|
+
// Patch firstMessage
|
|
164
|
+
// According to https://github.com/aiko-chan-ai/discord.js-selfbot-v13/issues/1502, rawThreads.first_messages could be null.
|
|
165
|
+
for (const rawMessage of rawThreads?.first_messages || []) {
|
|
166
|
+
client.channels.cache.get(rawMessage.id)?.messages._add(rawMessage);
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
threads,
|
|
170
|
+
hasMore: rawThreads.has_more ?? false,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
module.exports = ThreadManager;
|