discord.js-selfbot-v13-new 1.0.0
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 +674 -0
- package/README.md +124 -0
- package/package.json +89 -0
- package/src/WebSocket.js +39 -0
- package/src/client/BaseClient.js +86 -0
- package/src/client/Client.js +934 -0
- package/src/client/WebhookClient.js +61 -0
- package/src/client/actions/Action.js +116 -0
- package/src/client/actions/ActionsManager.js +80 -0
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
- package/src/client/actions/AutoModerationActionExecution.js +27 -0
- package/src/client/actions/AutoModerationRuleCreate.js +28 -0
- package/src/client/actions/AutoModerationRuleDelete.js +32 -0
- package/src/client/actions/AutoModerationRuleUpdate.js +30 -0
- package/src/client/actions/ChannelCreate.js +23 -0
- package/src/client/actions/ChannelDelete.js +39 -0
- package/src/client/actions/ChannelUpdate.js +43 -0
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
- package/src/client/actions/GuildBanAdd.js +20 -0
- package/src/client/actions/GuildBanRemove.js +25 -0
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
- package/src/client/actions/GuildDelete.js +65 -0
- package/src/client/actions/GuildEmojiCreate.js +20 -0
- package/src/client/actions/GuildEmojiDelete.js +21 -0
- package/src/client/actions/GuildEmojiUpdate.js +20 -0
- package/src/client/actions/GuildEmojisUpdate.js +34 -0
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
- package/src/client/actions/GuildMemberRemove.js +33 -0
- package/src/client/actions/GuildMemberUpdate.js +44 -0
- package/src/client/actions/GuildRoleCreate.js +25 -0
- package/src/client/actions/GuildRoleDelete.js +31 -0
- package/src/client/actions/GuildRoleUpdate.js +39 -0
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
- package/src/client/actions/GuildScheduledEventCreate.js +27 -0
- package/src/client/actions/GuildScheduledEventDelete.js +31 -0
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
- package/src/client/actions/GuildStickerCreate.js +20 -0
- package/src/client/actions/GuildStickerDelete.js +21 -0
- package/src/client/actions/GuildStickerUpdate.js +20 -0
- package/src/client/actions/GuildStickersUpdate.js +34 -0
- package/src/client/actions/GuildUpdate.js +33 -0
- package/src/client/actions/InviteCreate.js +28 -0
- package/src/client/actions/InviteDelete.js +30 -0
- package/src/client/actions/MessageCreate.js +50 -0
- package/src/client/actions/MessageDelete.js +32 -0
- package/src/client/actions/MessageDeleteBulk.js +46 -0
- package/src/client/actions/MessagePollVoteAdd.js +33 -0
- package/src/client/actions/MessagePollVoteRemove.js +33 -0
- package/src/client/actions/MessageReactionAdd.js +68 -0
- package/src/client/actions/MessageReactionRemove.js +50 -0
- package/src/client/actions/MessageReactionRemoveAll.js +33 -0
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
- package/src/client/actions/MessageUpdate.js +26 -0
- package/src/client/actions/PresenceUpdate.js +50 -0
- package/src/client/actions/StageInstanceCreate.js +28 -0
- package/src/client/actions/StageInstanceDelete.js +33 -0
- package/src/client/actions/StageInstanceUpdate.js +30 -0
- package/src/client/actions/ThreadCreate.js +24 -0
- package/src/client/actions/ThreadDelete.js +32 -0
- package/src/client/actions/ThreadListSync.js +59 -0
- package/src/client/actions/ThreadMemberUpdate.js +30 -0
- package/src/client/actions/ThreadMembersUpdate.js +34 -0
- package/src/client/actions/TypingStart.js +29 -0
- package/src/client/actions/UserUpdate.js +35 -0
- package/src/client/actions/VoiceStateUpdate.js +50 -0
- package/src/client/actions/WebhooksUpdate.js +20 -0
- package/src/client/voice/ClientVoiceManager.js +151 -0
- 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 -0
- package/src/client/websocket/WebSocketShard.js +907 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
- package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
- package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
- package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -0
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_CREATE.js +52 -0
- package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
- package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -0
- package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
- package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
- 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 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/READY.js +121 -0
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -0
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -0
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -0
- package/src/client/websocket/handlers/RESUMED.js +14 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
- package/src/client/websocket/handlers/TYPING_START.js +5 -0
- package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -0
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -0
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -0
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
- package/src/client/websocket/handlers/index.js +84 -0
- package/src/errors/DJSError.js +61 -0
- package/src/errors/Messages.js +217 -0
- package/src/errors/index.js +4 -0
- package/src/index.js +172 -0
- package/src/managers/ApplicationCommandManager.js +264 -0
- package/src/managers/ApplicationCommandPermissionsManager.js +417 -0
- package/src/managers/AutoModerationRuleManager.js +296 -0
- package/src/managers/BaseGuildEmojiManager.js +80 -0
- package/src/managers/BaseManager.js +19 -0
- package/src/managers/BillingManager.js +66 -0
- package/src/managers/CachedManager.js +71 -0
- package/src/managers/ChannelManager.js +148 -0
- package/src/managers/ClientUserSettingManager.js +372 -0
- package/src/managers/DataManager.js +61 -0
- package/src/managers/GuildBanManager.js +250 -0
- package/src/managers/GuildChannelManager.js +488 -0
- package/src/managers/GuildEmojiManager.js +171 -0
- package/src/managers/GuildEmojiRoleManager.js +118 -0
- package/src/managers/GuildForumThreadManager.js +108 -0
- package/src/managers/GuildInviteManager.js +213 -0
- package/src/managers/GuildManager.js +338 -0
- package/src/managers/GuildMemberManager.js +599 -0
- package/src/managers/GuildMemberRoleManager.js +195 -0
- package/src/managers/GuildScheduledEventManager.js +314 -0
- package/src/managers/GuildSettingManager.js +155 -0
- package/src/managers/GuildStickerManager.js +179 -0
- package/src/managers/GuildTextThreadManager.js +98 -0
- package/src/managers/InteractionManager.js +39 -0
- package/src/managers/MessageManager.js +423 -0
- package/src/managers/PermissionOverwriteManager.js +164 -0
- package/src/managers/PresenceManager.js +71 -0
- package/src/managers/ReactionManager.js +67 -0
- package/src/managers/ReactionUserManager.js +73 -0
- package/src/managers/RelationshipManager.js +278 -0
- package/src/managers/RoleManager.js +448 -0
- package/src/managers/SessionManager.js +66 -0
- package/src/managers/StageInstanceManager.js +162 -0
- package/src/managers/ThreadManager.js +175 -0
- package/src/managers/ThreadMemberManager.js +186 -0
- package/src/managers/UserManager.js +136 -0
- package/src/managers/UserNoteManager.js +53 -0
- package/src/managers/VoiceStateManager.js +59 -0
- package/src/rest/APIRequest.js +154 -0
- package/src/rest/APIRouter.js +53 -0
- package/src/rest/DiscordAPIError.js +119 -0
- package/src/rest/HTTPError.js +62 -0
- package/src/rest/RESTManager.js +67 -0
- package/src/rest/RateLimitError.js +55 -0
- package/src/rest/RequestHandler.js +466 -0
- package/src/sharding/Shard.js +444 -0
- package/src/sharding/ShardClientUtil.js +279 -0
- package/src/sharding/ShardingManager.js +319 -0
- package/src/structures/AnonymousGuild.js +98 -0
- package/src/structures/ApplicationCommand.js +593 -0
- package/src/structures/ApplicationRoleConnectionMetadata.js +48 -0
- package/src/structures/AutoModerationActionExecution.js +89 -0
- package/src/structures/AutoModerationRule.js +294 -0
- package/src/structures/AutocompleteInteraction.js +107 -0
- package/src/structures/Base.js +43 -0
- package/src/structures/BaseCommandInteraction.js +211 -0
- package/src/structures/BaseGuild.js +116 -0
- package/src/structures/BaseGuildEmoji.js +56 -0
- package/src/structures/BaseGuildTextChannel.js +191 -0
- package/src/structures/BaseGuildVoiceChannel.js +241 -0
- package/src/structures/BaseMessageComponent.js +181 -0
- package/src/structures/ButtonInteraction.js +11 -0
- package/src/structures/CallState.js +63 -0
- package/src/structures/CategoryChannel.js +85 -0
- package/src/structures/Channel.js +284 -0
- package/src/structures/ClientPresence.js +77 -0
- package/src/structures/ClientUser.js +449 -0
- package/src/structures/CommandInteraction.js +41 -0
- package/src/structures/CommandInteractionOptionResolver.js +276 -0
- package/src/structures/ContainerComponent.js +68 -0
- package/src/structures/ContextMenuInteraction.js +65 -0
- package/src/structures/DMChannel.js +219 -0
- package/src/structures/DirectoryChannel.js +20 -0
- package/src/structures/Emoji.js +148 -0
- package/src/structures/FileComponent.js +49 -0
- package/src/structures/ForumChannel.js +31 -0
- package/src/structures/GroupDMChannel.js +394 -0
- package/src/structures/Guild.js +1638 -0
- package/src/structures/GuildAuditLogs.js +746 -0
- package/src/structures/GuildBan.js +59 -0
- package/src/structures/GuildBoost.js +108 -0
- package/src/structures/GuildChannel.js +470 -0
- package/src/structures/GuildEmoji.js +161 -0
- package/src/structures/GuildMember.js +636 -0
- package/src/structures/GuildPreview.js +191 -0
- package/src/structures/GuildPreviewEmoji.js +27 -0
- package/src/structures/GuildScheduledEvent.js +536 -0
- package/src/structures/GuildTemplate.js +236 -0
- package/src/structures/Integration.js +188 -0
- package/src/structures/IntegrationApplication.js +96 -0
- package/src/structures/Interaction.js +290 -0
- package/src/structures/InteractionCollector.js +248 -0
- package/src/structures/InteractionWebhook.js +43 -0
- package/src/structures/Invite.js +358 -0
- package/src/structures/InviteGuild.js +23 -0
- package/src/structures/InviteStageInstance.js +86 -0
- 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 -0
- package/src/structures/MessageActionRow.js +105 -0
- package/src/structures/MessageAttachment.js +216 -0
- package/src/structures/MessageButton.js +166 -0
- package/src/structures/MessageCollector.js +146 -0
- package/src/structures/MessageComponentInteraction.js +120 -0
- package/src/structures/MessageContextMenuInteraction.js +20 -0
- package/src/structures/MessageEmbed.js +596 -0
- package/src/structures/MessageMentions.js +273 -0
- package/src/structures/MessagePayload.js +354 -0
- package/src/structures/MessageReaction.js +181 -0
- package/src/structures/MessageSelectMenu.js +141 -0
- package/src/structures/Modal.js +161 -0
- package/src/structures/ModalSubmitFieldsResolver.js +53 -0
- package/src/structures/ModalSubmitInteraction.js +119 -0
- package/src/structures/NewsChannel.js +32 -0
- package/src/structures/OAuth2Guild.js +28 -0
- package/src/structures/PermissionOverwrites.js +198 -0
- package/src/structures/Poll.js +108 -0
- package/src/structures/PollAnswer.js +88 -0
- package/src/structures/Presence.js +1105 -0
- package/src/structures/ReactionCollector.js +229 -0
- package/src/structures/ReactionEmoji.js +31 -0
- package/src/structures/Role.js +590 -0
- package/src/structures/SectionComponent.js +48 -0
- package/src/structures/SelectMenuInteraction.js +21 -0
- package/src/structures/SeparatorComponent.js +48 -0
- package/src/structures/Session.js +81 -0
- package/src/structures/StageChannel.js +104 -0
- package/src/structures/StageInstance.js +208 -0
- package/src/structures/Sticker.js +310 -0
- package/src/structures/StickerPack.js +95 -0
- package/src/structures/StoreChannel.js +56 -0
- package/src/structures/Team.js +118 -0
- package/src/structures/TeamMember.js +80 -0
- package/src/structures/TextChannel.js +33 -0
- package/src/structures/TextDisplayComponent.js +40 -0
- package/src/structures/TextInputComponent.js +132 -0
- package/src/structures/ThreadChannel.js +605 -0
- package/src/structures/ThreadMember.js +105 -0
- package/src/structures/ThreadOnlyChannel.js +249 -0
- package/src/structures/ThumbnailComponent.js +57 -0
- package/src/structures/Typing.js +74 -0
- package/src/structures/UnfurledMediaItem.js +29 -0
- package/src/structures/User.js +622 -0
- package/src/structures/UserContextMenuInteraction.js +29 -0
- package/src/structures/VoiceChannel.js +110 -0
- package/src/structures/VoiceChannelEffect.js +69 -0
- package/src/structures/VoiceRegion.js +53 -0
- package/src/structures/VoiceState.js +354 -0
- package/src/structures/WebEmbed.js +373 -0
- package/src/structures/Webhook.js +478 -0
- package/src/structures/WelcomeChannel.js +60 -0
- package/src/structures/WelcomeScreen.js +48 -0
- package/src/structures/Widget.js +87 -0
- package/src/structures/WidgetMember.js +99 -0
- package/src/structures/interfaces/Application.js +825 -0
- package/src/structures/interfaces/Collector.js +300 -0
- package/src/structures/interfaces/InteractionResponses.js +313 -0
- package/src/structures/interfaces/TextBasedChannel.js +759 -0
- package/src/util/APITypes.js +59 -0
- package/src/util/ActivityFlags.js +44 -0
- package/src/util/ApplicationFlags.js +76 -0
- package/src/util/AttachmentFlags.js +38 -0
- package/src/util/BitField.js +170 -0
- package/src/util/ChannelFlags.js +45 -0
- package/src/util/Constants.js +1914 -0
- package/src/util/DataResolver.js +146 -0
- package/src/util/Formatters.js +228 -0
- package/src/util/GuildMemberFlags.js +43 -0
- package/src/util/Intents.js +74 -0
- package/src/util/InviteFlags.js +34 -0
- package/src/util/LimitedCollection.js +131 -0
- package/src/util/MessageFlags.js +63 -0
- package/src/util/Options.js +358 -0
- package/src/util/Permissions.js +202 -0
- package/src/util/PremiumUsageFlags.js +31 -0
- package/src/util/PurchasedFlags.js +33 -0
- package/src/util/RemoteAuth.js +382 -0
- package/src/util/RoleFlags.js +37 -0
- package/src/util/SnowflakeUtil.js +92 -0
- package/src/util/Speaking.js +33 -0
- package/src/util/Sweepers.js +466 -0
- package/src/util/SystemChannelFlags.js +55 -0
- package/src/util/ThreadMemberFlags.js +30 -0
- package/src/util/UserFlags.js +104 -0
- package/src/util/Util.js +1048 -0
- package/typings/enums.d.ts +439 -0
- package/typings/index.d.ts +8247 -0
- package/typings/index.test-d.ts +0 -0
- package/typings/rawDataTypes.d.ts +403 -0
|
@@ -0,0 +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;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const CachedManager = require('./CachedManager');
|
|
5
|
+
const { Error } = require('../errors');
|
|
6
|
+
const User = require('../structures/User');
|
|
7
|
+
const { ReactionTypes } = require('../util/Constants');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Manages API methods for users who reacted to a reaction and stores their cache.
|
|
11
|
+
* @extends {CachedManager}
|
|
12
|
+
*/
|
|
13
|
+
class ReactionUserManager extends CachedManager {
|
|
14
|
+
constructor(reaction, iterable) {
|
|
15
|
+
super(reaction.client, User, iterable);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The reaction that this manager belongs to
|
|
19
|
+
* @type {MessageReaction}
|
|
20
|
+
*/
|
|
21
|
+
this.reaction = reaction;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The cache of this manager
|
|
26
|
+
* @type {Collection<Snowflake, User>}
|
|
27
|
+
* @name ReactionUserManager#cache
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Options used to fetch users who gave a reaction.
|
|
32
|
+
* @typedef {Object} FetchReactionUsersOptions
|
|
33
|
+
* @property {ReactionType} [type='NORMAL'] The reaction type to fetch
|
|
34
|
+
* @property {number} [limit=100] The maximum amount of users to fetch, defaults to `100`
|
|
35
|
+
* @property {Snowflake} [after] Limit fetching users to those with an id greater than the supplied id
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Fetches all the users that gave this reaction. Resolves with a collection of users, mapped by their ids.
|
|
40
|
+
* @param {FetchReactionUsersOptions} [options] Options for fetching the users
|
|
41
|
+
* @returns {Promise<Collection<Snowflake, User>>}
|
|
42
|
+
*/
|
|
43
|
+
async fetch({ limit = 100, after, type = 'NORMAL' } = {}) {
|
|
44
|
+
const message = this.reaction.message;
|
|
45
|
+
const data = await this.client.api.channels[message.channelId].messages[message.id].reactions[
|
|
46
|
+
this.reaction.emoji.identifier
|
|
47
|
+
].get({ query: { limit, after, type: typeof type == 'number' ? type : ReactionTypes[type] } });
|
|
48
|
+
const users = new Collection();
|
|
49
|
+
for (const rawUser of data) {
|
|
50
|
+
const user = this.client.users._add(rawUser);
|
|
51
|
+
this.cache.set(user.id, user);
|
|
52
|
+
users.set(user.id, user);
|
|
53
|
+
}
|
|
54
|
+
return users;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Removes a user from this reaction.
|
|
59
|
+
* @param {UserResolvable} [user=this.client.user] The user to remove the reaction of
|
|
60
|
+
* @returns {Promise<MessageReaction>}
|
|
61
|
+
*/
|
|
62
|
+
async remove(user = this.client.user) {
|
|
63
|
+
const userId = this.client.users.resolveId(user);
|
|
64
|
+
if (!userId) throw new Error('REACTION_RESOLVE_USER');
|
|
65
|
+
const message = this.reaction.message;
|
|
66
|
+
await this.client.api.channels[message.channelId].messages[message.id].reactions[this.reaction.emoji.identifier][
|
|
67
|
+
userId === this.client.user.id ? '@me' : userId
|
|
68
|
+
].delete();
|
|
69
|
+
return this.reaction;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
module.exports = ReactionUserManager;
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const BaseManager = require('./BaseManager');
|
|
5
|
+
const { GuildMember } = require('../structures/GuildMember');
|
|
6
|
+
const { Message } = require('../structures/Message');
|
|
7
|
+
const ThreadMember = require('../structures/ThreadMember');
|
|
8
|
+
const User = require('../structures/User');
|
|
9
|
+
const { RelationshipTypes } = require('../util/Constants');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Manages API methods for Relationships and stores their cache.
|
|
13
|
+
*/
|
|
14
|
+
class RelationshipManager extends BaseManager {
|
|
15
|
+
constructor(client, users) {
|
|
16
|
+
super(client);
|
|
17
|
+
/**
|
|
18
|
+
* A collection of users this manager is caching. (Type: Number)
|
|
19
|
+
* @type {Collection<Snowflake, RelationshipType>}
|
|
20
|
+
*/
|
|
21
|
+
this.cache = new Collection();
|
|
22
|
+
/**
|
|
23
|
+
* @type {Collection<Snowflake, string>}
|
|
24
|
+
*/
|
|
25
|
+
this.friendNicknames = new Collection();
|
|
26
|
+
/**
|
|
27
|
+
* @type {Collection<Snowflake, Date>}
|
|
28
|
+
*/
|
|
29
|
+
this.sinceCache = new Collection();
|
|
30
|
+
this._setup(users);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get all friends
|
|
35
|
+
* @type {Collection<Snowflake, User>}
|
|
36
|
+
* @readonly
|
|
37
|
+
*/
|
|
38
|
+
get friendCache() {
|
|
39
|
+
const users = this.cache
|
|
40
|
+
.filter(value => value === RelationshipTypes.FRIEND)
|
|
41
|
+
.map((_, key) => [key, this.client.users.cache.get(key)]);
|
|
42
|
+
return new Collection(users);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Get all blocked users
|
|
47
|
+
* @type {Collection<Snowflake, User>}
|
|
48
|
+
* @readonly
|
|
49
|
+
*/
|
|
50
|
+
get blockedCache() {
|
|
51
|
+
const users = this.cache
|
|
52
|
+
.filter(value => value === RelationshipTypes.BLOCKED)
|
|
53
|
+
.map((_, key) => [key, this.client.users.cache.get(key)]);
|
|
54
|
+
return new Collection(users);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Get all incoming friend requests
|
|
59
|
+
* @type {Collection<Snowflake, User>}
|
|
60
|
+
* @readonly
|
|
61
|
+
*/
|
|
62
|
+
get incomingCache() {
|
|
63
|
+
const users = this.cache
|
|
64
|
+
.filter(value => value === RelationshipTypes.PENDING_INCOMING)
|
|
65
|
+
.map((_, key) => [key, this.client.users.cache.get(key)]);
|
|
66
|
+
return new Collection(users);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Get all outgoing friend requests
|
|
71
|
+
* @type {Collection<Snowflake, User>}
|
|
72
|
+
* @readonly
|
|
73
|
+
*/
|
|
74
|
+
get outgoingCache() {
|
|
75
|
+
const users = this.cache
|
|
76
|
+
.filter(value => value === RelationshipTypes.PENDING_OUTGOING)
|
|
77
|
+
.map((_, key) => [key, this.client.users.cache.get(key)]);
|
|
78
|
+
return new Collection(users);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @typedef {Object} RelationshipJSONData
|
|
83
|
+
* @property {Snowflake} id The ID of the target user
|
|
84
|
+
* @property {RelationshipType} type The type of relationship
|
|
85
|
+
* @property {string | null} nickname The nickname of the user in this relationship (1-32 characters)
|
|
86
|
+
* @property {string} since When the user requested a relationship (ISO8601 timestamp)
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Return array of cache
|
|
91
|
+
* @returns {RelationshipJSONData[]}
|
|
92
|
+
*/
|
|
93
|
+
toJSON() {
|
|
94
|
+
return this.cache.map((value, key) => ({
|
|
95
|
+
id: key,
|
|
96
|
+
type: RelationshipTypes[value],
|
|
97
|
+
nickname: this.friendNicknames.get(key),
|
|
98
|
+
since: this.sinceCache.get(key).toISOString(),
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @private
|
|
104
|
+
* @param {Array<User>} users An array of users to add to the cache
|
|
105
|
+
* @returns {void}
|
|
106
|
+
*/
|
|
107
|
+
_setup(users) {
|
|
108
|
+
if (!Array.isArray(users)) return;
|
|
109
|
+
for (const relationShip of users) {
|
|
110
|
+
this.friendNicknames.set(relationShip.id, relationShip.nickname);
|
|
111
|
+
this.cache.set(relationShip.id, relationShip.type);
|
|
112
|
+
this.sinceCache.set(relationShip.id, new Date(relationShip.since || 0));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Resolves a {@link UserResolvable} to a {@link User} id.
|
|
118
|
+
* @param {UserResolvable} user The UserResolvable to identify
|
|
119
|
+
* @returns {?Snowflake}
|
|
120
|
+
*/
|
|
121
|
+
resolveId(user) {
|
|
122
|
+
if (user instanceof ThreadMember) return user.id;
|
|
123
|
+
if (user instanceof GuildMember) return user.user.id;
|
|
124
|
+
if (user instanceof Message) return user.author.id;
|
|
125
|
+
if (user instanceof User) return user.id;
|
|
126
|
+
return user.match(/\d{17,19}/)?.[0] || null;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Resolves a {@link UserResolvable} to a {@link User} username.
|
|
131
|
+
* @param {UserResolvable} user The UserResolvable to identify
|
|
132
|
+
* @returns {?string}
|
|
133
|
+
*/
|
|
134
|
+
resolveUsername(user) {
|
|
135
|
+
if (user instanceof ThreadMember) return user.member.user.username;
|
|
136
|
+
if (user instanceof GuildMember) return user.user.username;
|
|
137
|
+
if (user instanceof Message) return user.author.username;
|
|
138
|
+
if (user instanceof User) return user.username;
|
|
139
|
+
return user;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Obtains a user from Discord, or the user cache if it's already available.
|
|
144
|
+
* @param {UserResolvable} [user] The user to fetch
|
|
145
|
+
* @param {BaseFetchOptions} [options] Additional options for this fetch
|
|
146
|
+
* @returns {Promise<RelationshipType|RelationshipManager>}
|
|
147
|
+
*/
|
|
148
|
+
async fetch(user, { force = false } = {}) {
|
|
149
|
+
if (user) {
|
|
150
|
+
const id = this.resolveId(user);
|
|
151
|
+
if (!force) {
|
|
152
|
+
const existing = this.cache.get(id);
|
|
153
|
+
if (existing && !existing.partial) return existing;
|
|
154
|
+
}
|
|
155
|
+
const data = await this.client.api.users['@me'].relationships.get();
|
|
156
|
+
await this._setup(data);
|
|
157
|
+
return this.cache.get(id);
|
|
158
|
+
} else {
|
|
159
|
+
const data = await this.client.api.users['@me'].relationships.get();
|
|
160
|
+
await this._setup(data);
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Deletes a friend / blocked relationship with a client user or cancels a friend request.
|
|
167
|
+
* @param {UserResolvable} user Target
|
|
168
|
+
* @returns {Promise<boolean>}
|
|
169
|
+
*/
|
|
170
|
+
async deleteRelationship(user) {
|
|
171
|
+
throw new Error('Risky action, not finished yet.');
|
|
172
|
+
// eslint-disable-next-line no-unreachable
|
|
173
|
+
const id = this.resolveId(user);
|
|
174
|
+
if (
|
|
175
|
+
![RelationshipTypes.FRIEND, RelationshipTypes.BLOCKED, RelationshipTypes.PENDING_OUTGOING].includes(
|
|
176
|
+
this.cache.get(id),
|
|
177
|
+
)
|
|
178
|
+
) {
|
|
179
|
+
return Promise.resolve(false);
|
|
180
|
+
}
|
|
181
|
+
await this.client.api.users['@me'].relationships[id].delete({
|
|
182
|
+
DiscordContext: { location: 'ContextMenu' },
|
|
183
|
+
});
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Sends a friend request.
|
|
189
|
+
* @param {UserResolvable} options Target (User Object, Username, User Id)
|
|
190
|
+
* @returns {Promise<boolean>}
|
|
191
|
+
*/
|
|
192
|
+
async sendFriendRequest(options) {
|
|
193
|
+
throw new Error('Risky action, not finished yet.');
|
|
194
|
+
// eslint-disable-next-line no-unreachable
|
|
195
|
+
const id = this.resolveId(options);
|
|
196
|
+
if (id) {
|
|
197
|
+
await this.client.api.users['@me'].relationships[id].put({
|
|
198
|
+
data: {},
|
|
199
|
+
DiscordContext: { location: 'ContextMenu' },
|
|
200
|
+
});
|
|
201
|
+
} else {
|
|
202
|
+
const username = this.resolveUsername(options);
|
|
203
|
+
await this.client.api.users['@me'].relationships.post({
|
|
204
|
+
versioned: true,
|
|
205
|
+
data: {
|
|
206
|
+
username,
|
|
207
|
+
discriminator: null,
|
|
208
|
+
},
|
|
209
|
+
DiscordContext: { location: 'Add Friend' },
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Accepts a friend request.
|
|
217
|
+
* @param {UserResolvable} user The user to add as a friend
|
|
218
|
+
* @returns {Promise<boolean>}
|
|
219
|
+
*/
|
|
220
|
+
async addFriend(user) {
|
|
221
|
+
throw new Error('Risky action, not finished yet.');
|
|
222
|
+
// eslint-disable-next-line no-unreachable
|
|
223
|
+
const id = this.resolveId(user);
|
|
224
|
+
// Check if already friends
|
|
225
|
+
if (this.cache.get(id) === RelationshipTypes.FRIEND) return Promise.resolve(false);
|
|
226
|
+
// Check if outgoing request
|
|
227
|
+
if (this.cache.get(id) === RelationshipTypes.PENDING_OUTGOING) return Promise.resolve(false);
|
|
228
|
+
await this.client.api.users['@me'].relationships[id].put({
|
|
229
|
+
data: { confirm_stranger_request: true },
|
|
230
|
+
DiscordContext: { location: 'Friends' },
|
|
231
|
+
});
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Changes the nickname of a friend.
|
|
237
|
+
* @param {UserResolvable} user The user to change the nickname
|
|
238
|
+
* @param {?string} nickname New nickname
|
|
239
|
+
* @returns {Promise<boolean>}
|
|
240
|
+
*/
|
|
241
|
+
async setNickname(user, nickname = null) {
|
|
242
|
+
const id = this.resolveId(user);
|
|
243
|
+
if (this.cache.get(id) !== RelationshipTypes.FRIEND) return Promise.resolve(false);
|
|
244
|
+
await this.client.api.users['@me'].relationships[id].patch({
|
|
245
|
+
data: {
|
|
246
|
+
nickname: typeof nickname === 'string' ? nickname : null,
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
if (nickname) {
|
|
250
|
+
this.friendNicknames.set(id, nickname);
|
|
251
|
+
} else {
|
|
252
|
+
this.friendNicknames.delete(id);
|
|
253
|
+
}
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Blocks a user.
|
|
259
|
+
* @param {UserResolvable} user User to block
|
|
260
|
+
* @returns {Promise<boolean>}
|
|
261
|
+
*/
|
|
262
|
+
async addBlocked(user) {
|
|
263
|
+
throw new Error('Risky action, not finished yet.');
|
|
264
|
+
// eslint-disable-next-line no-unreachable
|
|
265
|
+
const id = this.resolveId(user);
|
|
266
|
+
// Check
|
|
267
|
+
if (this.cache.get(id) === RelationshipTypes.BLOCKED) return Promise.resolve(false);
|
|
268
|
+
await this.client.api.users['@me'].relationships[id].put({
|
|
269
|
+
data: {
|
|
270
|
+
type: RelationshipTypes.BLOCKED,
|
|
271
|
+
},
|
|
272
|
+
DiscordContext: { location: 'ContextMenu' },
|
|
273
|
+
});
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
module.exports = RelationshipManager;
|