djs-selfbot-v13 3.1.8 → 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/LICENSE +1 -1
- package/README.md +48 -37
- package/package.json +44 -26
- package/src/WebSocket.js +39 -39
- package/src/client/BaseClient.js +86 -86
- package/src/client/Client.js +934 -765
- 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 -33
- package/src/client/actions/GuildMemberUpdate.js +44 -44
- 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 -53
- 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 -20
- 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 -0
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -0
- 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 -80
- 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 -81
- package/src/errors/DJSError.js +61 -61
- package/src/errors/Messages.js +217 -182
- package/src/errors/index.js +4 -4
- package/src/index.js +172 -158
- 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 -204
- package/src/managers/GuildChannelManager.js +488 -504
- 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 -593
- 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 -154
- 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 -88
- package/src/structures/ClientUser.js +479 -450
- 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 -1236
- 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 -316
- package/src/structures/MessageReaction.js +181 -171
- package/src/structures/MessageSelectMenu.js +141 -140
- package/src/structures/Modal.js +161 -174
- 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 -443
- 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 -509
- 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 -721
- 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 -1760
- 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 -342
- package/src/util/Permissions.js +202 -192
- 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 -803
- package/typings/enums.d.ts +439 -291
- package/typings/index.d.ts +8247 -7390
- package/typings/rawDataTypes.d.ts +403 -342
- package/src/structures/RichPresence.js +0 -702
|
@@ -1,166 +1,164 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const process = require('node:process');
|
|
4
|
-
const { Collection } = require('@discordjs/collection');
|
|
5
|
-
const CachedManager = require('./CachedManager');
|
|
6
|
-
const { TypeError } = require('../errors');
|
|
7
|
-
const PermissionOverwrites = require('../structures/PermissionOverwrites');
|
|
8
|
-
const { Role } = require('../structures/Role');
|
|
9
|
-
const { OverwriteTypes } = require('../util/Constants');
|
|
10
|
-
|
|
11
|
-
let cacheWarningEmitted = false;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Manages API methods for guild channel permission overwrites and stores their cache.
|
|
15
|
-
* @extends {CachedManager}
|
|
16
|
-
*/
|
|
17
|
-
class PermissionOverwriteManager extends CachedManager {
|
|
18
|
-
constructor(channel, iterable) {
|
|
19
|
-
super(channel.client, PermissionOverwrites);
|
|
20
|
-
if (!cacheWarningEmitted && this._cache.constructor.name !== 'Collection') {
|
|
21
|
-
cacheWarningEmitted = true;
|
|
22
|
-
process.emitWarning(
|
|
23
|
-
`Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,
|
|
24
|
-
'UnsupportedCacheOverwriteWarning',
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* The channel of the permission overwrite this manager belongs to
|
|
30
|
-
* @type {GuildChannel}
|
|
31
|
-
*/
|
|
32
|
-
this.channel = channel;
|
|
33
|
-
|
|
34
|
-
if (iterable) {
|
|
35
|
-
for (const item of iterable) {
|
|
36
|
-
this._add(item);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* The cache of this Manager
|
|
43
|
-
* @type {Collection<Snowflake, PermissionOverwrites>}
|
|
44
|
-
* @name PermissionOverwriteManager#cache
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
_add(data, cache) {
|
|
48
|
-
return super._add(data, cache, { extras: [this.channel] });
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Replaces the permission overwrites in this channel.
|
|
53
|
-
* @param {OverwriteResolvable[]|Collection<Snowflake, OverwriteResolvable>} overwrites
|
|
54
|
-
* Permission overwrites the channel gets updated with
|
|
55
|
-
* @param {string} [reason] Reason for updating the channel overwrites
|
|
56
|
-
* @returns {Promise<GuildChannel>}
|
|
57
|
-
* @example
|
|
58
|
-
* message.channel.permissionOverwrites.set([
|
|
59
|
-
* {
|
|
60
|
-
* id: message.author.id,
|
|
61
|
-
* deny: [Permissions.FLAGS.VIEW_CHANNEL],
|
|
62
|
-
* },
|
|
63
|
-
* ], 'Needed to change permissions');
|
|
64
|
-
*/
|
|
65
|
-
set(overwrites, reason) {
|
|
66
|
-
if (!Array.isArray(overwrites) && !(overwrites instanceof Collection)) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
*
|
|
76
|
-
* @
|
|
77
|
-
*
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
*
|
|
84
|
-
* @param {
|
|
85
|
-
* @param {
|
|
86
|
-
* @
|
|
87
|
-
* @
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
*
|
|
114
|
-
* @param {
|
|
115
|
-
* @
|
|
116
|
-
* @
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
*
|
|
132
|
-
* @param {
|
|
133
|
-
* @
|
|
134
|
-
* @
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
*
|
|
153
|
-
* @
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
module.exports = PermissionOverwriteManager;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const process = require('node:process');
|
|
4
|
+
const { Collection } = require('@discordjs/collection');
|
|
5
|
+
const CachedManager = require('./CachedManager');
|
|
6
|
+
const { TypeError } = require('../errors');
|
|
7
|
+
const PermissionOverwrites = require('../structures/PermissionOverwrites');
|
|
8
|
+
const { Role } = require('../structures/Role');
|
|
9
|
+
const { OverwriteTypes } = require('../util/Constants');
|
|
10
|
+
|
|
11
|
+
let cacheWarningEmitted = false;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Manages API methods for guild channel permission overwrites and stores their cache.
|
|
15
|
+
* @extends {CachedManager}
|
|
16
|
+
*/
|
|
17
|
+
class PermissionOverwriteManager extends CachedManager {
|
|
18
|
+
constructor(channel, iterable) {
|
|
19
|
+
super(channel.client, PermissionOverwrites);
|
|
20
|
+
if (!cacheWarningEmitted && this._cache.constructor.name !== 'Collection') {
|
|
21
|
+
cacheWarningEmitted = true;
|
|
22
|
+
process.emitWarning(
|
|
23
|
+
`Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`,
|
|
24
|
+
'UnsupportedCacheOverwriteWarning',
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The channel of the permission overwrite this manager belongs to
|
|
30
|
+
* @type {GuildChannel}
|
|
31
|
+
*/
|
|
32
|
+
this.channel = channel;
|
|
33
|
+
|
|
34
|
+
if (iterable) {
|
|
35
|
+
for (const item of iterable) {
|
|
36
|
+
this._add(item);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The cache of this Manager
|
|
43
|
+
* @type {Collection<Snowflake, PermissionOverwrites>}
|
|
44
|
+
* @name PermissionOverwriteManager#cache
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
_add(data, cache) {
|
|
48
|
+
return super._add(data, cache, { extras: [this.channel] });
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Replaces the permission overwrites in this channel.
|
|
53
|
+
* @param {OverwriteResolvable[]|Collection<Snowflake, OverwriteResolvable>} overwrites
|
|
54
|
+
* Permission overwrites the channel gets updated with
|
|
55
|
+
* @param {string} [reason] Reason for updating the channel overwrites
|
|
56
|
+
* @returns {Promise<GuildChannel>}
|
|
57
|
+
* @example
|
|
58
|
+
* message.channel.permissionOverwrites.set([
|
|
59
|
+
* {
|
|
60
|
+
* id: message.author.id,
|
|
61
|
+
* deny: [Permissions.FLAGS.VIEW_CHANNEL],
|
|
62
|
+
* },
|
|
63
|
+
* ], 'Needed to change permissions');
|
|
64
|
+
*/
|
|
65
|
+
async set(overwrites, reason) {
|
|
66
|
+
if (!Array.isArray(overwrites) && !(overwrites instanceof Collection)) {
|
|
67
|
+
throw new TypeError('INVALID_TYPE', 'overwrites', 'Array or Collection of Permission Overwrites', true);
|
|
68
|
+
}
|
|
69
|
+
return this.channel.edit({ permissionOverwrites: overwrites, reason });
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Extra information about the overwrite
|
|
74
|
+
* @typedef {Object} GuildChannelOverwriteOptions
|
|
75
|
+
* @property {string} [reason] Reason for creating/editing this overwrite
|
|
76
|
+
* @property {number} [type] The type of overwrite, either `0` for a role or `1` for a member. Use this to bypass
|
|
77
|
+
* automatic resolution of type that results in an error for uncached structure
|
|
78
|
+
*/
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Creates or edits permission overwrites for a user or role in this channel.
|
|
82
|
+
* @param {RoleResolvable|UserResolvable} userOrRole The user or role to update
|
|
83
|
+
* @param {PermissionOverwriteOptions} options The options for the update
|
|
84
|
+
* @param {GuildChannelOverwriteOptions} [overwriteOptions] The extra information for the update
|
|
85
|
+
* @param {PermissionOverwrites} [existing] The existing overwrites to merge with this update
|
|
86
|
+
* @returns {Promise<GuildChannel>}
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
async upsert(userOrRole, options, overwriteOptions = {}, existing) {
|
|
90
|
+
let userOrRoleId = this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole);
|
|
91
|
+
let { type, reason } = overwriteOptions;
|
|
92
|
+
if (typeof type !== 'number') {
|
|
93
|
+
userOrRole = this.channel.guild.roles.resolve(userOrRole) ?? this.client.users.resolve(userOrRole);
|
|
94
|
+
if (!userOrRole) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
|
|
95
|
+
type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const { allow, deny } = PermissionOverwrites.resolveOverwriteOptions(options, existing);
|
|
99
|
+
|
|
100
|
+
await this.client.api
|
|
101
|
+
.channels(this.channel.id)
|
|
102
|
+
.permissions(userOrRoleId)
|
|
103
|
+
.put({
|
|
104
|
+
data: { id: userOrRoleId, type, allow, deny },
|
|
105
|
+
reason,
|
|
106
|
+
});
|
|
107
|
+
return this.channel;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Creates permission overwrites for a user or role in this channel, or replaces them if already present.
|
|
112
|
+
* @param {RoleResolvable|UserResolvable} userOrRole The user or role to update
|
|
113
|
+
* @param {PermissionOverwriteOptions} options The options for the update
|
|
114
|
+
* @param {GuildChannelOverwriteOptions} [overwriteOptions] The extra information for the update
|
|
115
|
+
* @returns {Promise<GuildChannel>}
|
|
116
|
+
* @example
|
|
117
|
+
* // Create or Replace permission overwrites for a message author
|
|
118
|
+
* message.channel.permissionOverwrites.create(message.author, {
|
|
119
|
+
* SEND_MESSAGES: false
|
|
120
|
+
* })
|
|
121
|
+
* .then(channel => console.log(channel.permissionOverwrites.cache.get(message.author.id)))
|
|
122
|
+
* .catch(console.error);
|
|
123
|
+
*/
|
|
124
|
+
create(userOrRole, options, overwriteOptions) {
|
|
125
|
+
return this.upsert(userOrRole, options, overwriteOptions);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Edits permission overwrites for a user or role in this channel, or creates an entry if not already present.
|
|
130
|
+
* @param {RoleResolvable|UserResolvable} userOrRole The user or role to update
|
|
131
|
+
* @param {PermissionOverwriteOptions} options The options for the update
|
|
132
|
+
* @param {GuildChannelOverwriteOptions} [overwriteOptions] The extra information for the update
|
|
133
|
+
* @returns {Promise<GuildChannel>}
|
|
134
|
+
* @example
|
|
135
|
+
* // Edit or Create permission overwrites for a message author
|
|
136
|
+
* message.channel.permissionOverwrites.edit(message.author, {
|
|
137
|
+
* SEND_MESSAGES: false
|
|
138
|
+
* })
|
|
139
|
+
* .then(channel => console.log(channel.permissionOverwrites.cache.get(message.author.id)))
|
|
140
|
+
* .catch(console.error);
|
|
141
|
+
*/
|
|
142
|
+
edit(userOrRole, options, overwriteOptions) {
|
|
143
|
+
const existing = this.cache.get(
|
|
144
|
+
this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole),
|
|
145
|
+
);
|
|
146
|
+
return this.upsert(userOrRole, options, overwriteOptions, existing);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Deletes permission overwrites for a user or role in this channel.
|
|
151
|
+
* @param {UserResolvable|RoleResolvable} userOrRole The user or role to delete
|
|
152
|
+
* @param {string} [reason] The reason for deleting the overwrite
|
|
153
|
+
* @returns {Promise<GuildChannel>}
|
|
154
|
+
*/
|
|
155
|
+
async delete(userOrRole, reason) {
|
|
156
|
+
const userOrRoleId = this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole);
|
|
157
|
+
if (!userOrRoleId) throw new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role');
|
|
158
|
+
|
|
159
|
+
await this.client.api.channels(this.channel.id).permissions(userOrRoleId).delete({ reason });
|
|
160
|
+
return this.channel;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
module.exports = PermissionOverwriteManager;
|
|
@@ -1,58 +1,71 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const CachedManager = require('./CachedManager');
|
|
4
|
-
const { Presence } = require('../structures/Presence');
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Manages API methods for Presences and holds their cache.
|
|
8
|
-
* @extends {CachedManager}
|
|
9
|
-
*/
|
|
10
|
-
class PresenceManager extends CachedManager {
|
|
11
|
-
constructor(client, iterable) {
|
|
12
|
-
super(client, Presence, iterable);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* The cache of Presences
|
|
17
|
-
* @type {Collection<Snowflake, Presence>}
|
|
18
|
-
* @name PresenceManager#cache
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
_add(data, cache) {
|
|
22
|
-
return super._add(data, cache, { id: data.user.id });
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Data that can be resolved to a Presence object. This can be:
|
|
27
|
-
* * A Presence
|
|
28
|
-
* * A UserResolvable
|
|
29
|
-
* * A Snowflake
|
|
30
|
-
* @typedef {Presence|UserResolvable|Snowflake} PresenceResolvable
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Resolves a {@link PresenceResolvable} to a {@link Presence} object.
|
|
35
|
-
* @param {PresenceResolvable} presence The presence resolvable to resolve
|
|
36
|
-
* @returns {?Presence}
|
|
37
|
-
*/
|
|
38
|
-
resolve(presence) {
|
|
39
|
-
const presenceResolvable = super.resolve(presence);
|
|
40
|
-
if (presenceResolvable) return presenceResolvable;
|
|
41
|
-
const
|
|
42
|
-
return
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Resolves a {@link PresenceResolvable} to a {@link Presence} id.
|
|
47
|
-
* @param {PresenceResolvable} presence The presence resolvable to resolve
|
|
48
|
-
* @returns {?Snowflake}
|
|
49
|
-
*/
|
|
50
|
-
resolveId(presence) {
|
|
51
|
-
const presenceResolvable = super.resolveId(presence);
|
|
52
|
-
if (presenceResolvable) return presenceResolvable;
|
|
53
|
-
const
|
|
54
|
-
return this.cache.has(
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const CachedManager = require('./CachedManager');
|
|
4
|
+
const { Presence } = require('../structures/Presence');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Manages API methods for Presences and holds their cache.
|
|
8
|
+
* @extends {CachedManager}
|
|
9
|
+
*/
|
|
10
|
+
class PresenceManager extends CachedManager {
|
|
11
|
+
constructor(client, iterable) {
|
|
12
|
+
super(client, Presence, iterable);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The cache of Presences
|
|
17
|
+
* @type {Collection<Snowflake, Presence>}
|
|
18
|
+
* @name PresenceManager#cache
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
_add(data, cache) {
|
|
22
|
+
return super._add(data, cache, { id: data.user.id });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Data that can be resolved to a Presence object. This can be:
|
|
27
|
+
* * A Presence
|
|
28
|
+
* * A UserResolvable
|
|
29
|
+
* * A Snowflake
|
|
30
|
+
* @typedef {Presence|UserResolvable|Snowflake} PresenceResolvable
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Resolves a {@link PresenceResolvable} to a {@link Presence} object.
|
|
35
|
+
* @param {PresenceResolvable} presence The presence resolvable to resolve
|
|
36
|
+
* @returns {?Presence}
|
|
37
|
+
*/
|
|
38
|
+
resolve(presence) {
|
|
39
|
+
const presenceResolvable = super.resolve(presence);
|
|
40
|
+
if (presenceResolvable) return presenceResolvable;
|
|
41
|
+
const userId = this.client.users.resolveId(presence);
|
|
42
|
+
return this.cache.get(userId) ?? null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Resolves a {@link PresenceResolvable} to a {@link Presence} id.
|
|
47
|
+
* @param {PresenceResolvable} presence The presence resolvable to resolve
|
|
48
|
+
* @returns {?Snowflake}
|
|
49
|
+
*/
|
|
50
|
+
resolveId(presence) {
|
|
51
|
+
const presenceResolvable = super.resolveId(presence);
|
|
52
|
+
if (presenceResolvable) return presenceResolvable;
|
|
53
|
+
const userId = this.client.users.resolveId(presence);
|
|
54
|
+
return this.cache.has(userId) ? userId : null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Fetches the overall user presence for all of the user's non-offline friends and implicit relationships.
|
|
59
|
+
* @returns {Promise<Collection<Snowflake, Presence>>}
|
|
60
|
+
*/
|
|
61
|
+
async fetch() {
|
|
62
|
+
const data = await this.client.api.presences.get();
|
|
63
|
+
// https://docs.discord.food/resources/presence#endpoints
|
|
64
|
+
data.presences.forEach(presence => {
|
|
65
|
+
this._add(presence, true);
|
|
66
|
+
});
|
|
67
|
+
return this.cache;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
module.exports = PresenceManager;
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const CachedManager = require('./CachedManager');
|
|
4
|
-
const MessageReaction = require('../structures/MessageReaction');
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Manages API methods for reactions and holds their cache.
|
|
8
|
-
* @extends {CachedManager}
|
|
9
|
-
*/
|
|
10
|
-
class ReactionManager extends CachedManager {
|
|
11
|
-
constructor(message, iterable) {
|
|
12
|
-
super(message.client, MessageReaction, iterable);
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* The message that this manager belongs to
|
|
16
|
-
* @type {Message}
|
|
17
|
-
*/
|
|
18
|
-
this.message = message;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
_add(data, cache) {
|
|
22
|
-
return super._add(data, cache, { id: data.emoji.id ?? data.emoji.name, extras: [this.message] });
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* The reaction cache of this manager
|
|
27
|
-
* @type {Collection<string|Snowflake, MessageReaction>}
|
|
28
|
-
* @name ReactionManager#cache
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Data that can be resolved to a MessageReaction object. This can be:
|
|
33
|
-
* * A MessageReaction
|
|
34
|
-
* * A Snowflake
|
|
35
|
-
* * The Unicode representation of an emoji
|
|
36
|
-
* @typedef {MessageReaction|Snowflake} MessageReactionResolvable
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Resolves a {@link MessageReactionResolvable} to a {@link MessageReaction} object.
|
|
41
|
-
* @method resolve
|
|
42
|
-
* @memberof ReactionManager
|
|
43
|
-
* @instance
|
|
44
|
-
* @param {MessageReactionResolvable} reaction The MessageReaction to resolve
|
|
45
|
-
* @returns {?MessageReaction}
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Resolves a {@link MessageReactionResolvable} to a {@link MessageReaction} id.
|
|
50
|
-
* @method resolveId
|
|
51
|
-
* @memberof ReactionManager
|
|
52
|
-
* @instance
|
|
53
|
-
* @param {MessageReactionResolvable} reaction The MessageReaction to resolve
|
|
54
|
-
* @returns {?Snowflake}
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Removes all reactions from a message.
|
|
59
|
-
* @returns {Promise<Message>}
|
|
60
|
-
*/
|
|
61
|
-
async removeAll() {
|
|
62
|
-
await this.client.api.channels(this.message.channelId).messages(this.message.id).reactions.delete();
|
|
63
|
-
return this.message;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
module.exports = ReactionManager;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const CachedManager = require('./CachedManager');
|
|
4
|
+
const MessageReaction = require('../structures/MessageReaction');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Manages API methods for reactions and holds their cache.
|
|
8
|
+
* @extends {CachedManager}
|
|
9
|
+
*/
|
|
10
|
+
class ReactionManager extends CachedManager {
|
|
11
|
+
constructor(message, iterable) {
|
|
12
|
+
super(message.client, MessageReaction, iterable);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The message that this manager belongs to
|
|
16
|
+
* @type {Message}
|
|
17
|
+
*/
|
|
18
|
+
this.message = message;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
_add(data, cache) {
|
|
22
|
+
return super._add(data, cache, { id: data.emoji.id ?? data.emoji.name, extras: [this.message] });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The reaction cache of this manager
|
|
27
|
+
* @type {Collection<string|Snowflake, MessageReaction>}
|
|
28
|
+
* @name ReactionManager#cache
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Data that can be resolved to a MessageReaction object. This can be:
|
|
33
|
+
* * A MessageReaction
|
|
34
|
+
* * A Snowflake
|
|
35
|
+
* * The Unicode representation of an emoji
|
|
36
|
+
* @typedef {MessageReaction|Snowflake} MessageReactionResolvable
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Resolves a {@link MessageReactionResolvable} to a {@link MessageReaction} object.
|
|
41
|
+
* @method resolve
|
|
42
|
+
* @memberof ReactionManager
|
|
43
|
+
* @instance
|
|
44
|
+
* @param {MessageReactionResolvable} reaction The MessageReaction to resolve
|
|
45
|
+
* @returns {?MessageReaction}
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Resolves a {@link MessageReactionResolvable} to a {@link MessageReaction} id.
|
|
50
|
+
* @method resolveId
|
|
51
|
+
* @memberof ReactionManager
|
|
52
|
+
* @instance
|
|
53
|
+
* @param {MessageReactionResolvable} reaction The MessageReaction to resolve
|
|
54
|
+
* @returns {?Snowflake}
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Removes all reactions from a message.
|
|
59
|
+
* @returns {Promise<Message>}
|
|
60
|
+
*/
|
|
61
|
+
async removeAll() {
|
|
62
|
+
await this.client.api.channels(this.message.channelId).messages(this.message.id).reactions.delete();
|
|
63
|
+
return this.message;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
module.exports = ReactionManager;
|