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,155 +1,155 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const BaseManager = require('./BaseManager');
|
|
4
|
-
/**
|
|
5
|
-
* Manages API methods for users and stores their cache.
|
|
6
|
-
* @extends {BaseManager}
|
|
7
|
-
* @see {@link https://luna.gitlab.io/discord-unofficial-docs/user_settings.html}
|
|
8
|
-
*/
|
|
9
|
-
class GuildSettingManager extends BaseManager {
|
|
10
|
-
#rawSetting = {};
|
|
11
|
-
constructor(guild) {
|
|
12
|
-
super(guild.client);
|
|
13
|
-
/**
|
|
14
|
-
* Guild Id
|
|
15
|
-
* @type {?Snowflake}
|
|
16
|
-
*/
|
|
17
|
-
this.guildId = guild.id;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Raw data
|
|
22
|
-
* @type {Object}
|
|
23
|
-
*/
|
|
24
|
-
get raw() {
|
|
25
|
-
return this.#rawSetting;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Get the guild
|
|
30
|
-
* @type {?Guild}
|
|
31
|
-
* @readonly
|
|
32
|
-
*/
|
|
33
|
-
get guild() {
|
|
34
|
-
return this.client.guilds.cache.get(this.guildId);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Patch data file
|
|
39
|
-
* @private
|
|
40
|
-
* @param {Object} data Raw Data to patch
|
|
41
|
-
*/
|
|
42
|
-
_patch(data = {}) {
|
|
43
|
-
this.#rawSetting = Object.assign(this.#rawSetting, data);
|
|
44
|
-
this.client.emit('debug', `[SETTING > Guild ${this.guildId}] Sync setting`);
|
|
45
|
-
if ('suppress_everyone' in data) {
|
|
46
|
-
/**
|
|
47
|
-
* Notification setting > Suppress `@everyone` and `@here`
|
|
48
|
-
* @type {?boolean}
|
|
49
|
-
*/
|
|
50
|
-
this.suppressEveryone = data.suppress_everyone;
|
|
51
|
-
}
|
|
52
|
-
if ('suppress_roles' in data) {
|
|
53
|
-
/**
|
|
54
|
-
* Notification setting > Suppress all role `@mention`
|
|
55
|
-
* @type {?boolean}
|
|
56
|
-
*/
|
|
57
|
-
this.suppressRoles = data.suppress_roles;
|
|
58
|
-
}
|
|
59
|
-
if ('mute_scheduled_events' in data) {
|
|
60
|
-
/**
|
|
61
|
-
* Notification setting > Mute new events
|
|
62
|
-
* @type {?boolean}
|
|
63
|
-
*/
|
|
64
|
-
this.muteScheduledEvents = data.mute_scheduled_events;
|
|
65
|
-
}
|
|
66
|
-
if ('message_notifications' in data) {
|
|
67
|
-
/**
|
|
68
|
-
* Notification setting > Message notifications
|
|
69
|
-
* * `0`: All messages
|
|
70
|
-
* * `1`: Only @mentions
|
|
71
|
-
* * `2`: Nothing
|
|
72
|
-
* @type {?number}
|
|
73
|
-
*/
|
|
74
|
-
this.messageNotifications = data.message_notifications;
|
|
75
|
-
}
|
|
76
|
-
if ('flags' in data) {
|
|
77
|
-
/**
|
|
78
|
-
* Flags (unknown)
|
|
79
|
-
* @type {?number}
|
|
80
|
-
*/
|
|
81
|
-
this.flags = data.flags;
|
|
82
|
-
}
|
|
83
|
-
if ('mobile_push' in data) {
|
|
84
|
-
/**
|
|
85
|
-
* Notification setting > Mobile push notifications
|
|
86
|
-
* @type {?boolean}
|
|
87
|
-
*/
|
|
88
|
-
this.mobilePush = data.mobile_push;
|
|
89
|
-
}
|
|
90
|
-
if ('muted' in data) {
|
|
91
|
-
/**
|
|
92
|
-
* Mute server
|
|
93
|
-
* @type {?boolean}
|
|
94
|
-
*/
|
|
95
|
-
this.muted = data.muted;
|
|
96
|
-
}
|
|
97
|
-
if ('mute_config' in data && data.mute_config !== null) {
|
|
98
|
-
/**
|
|
99
|
-
* Mute config (muted = true)
|
|
100
|
-
* * `muteConfig.endTime`: End time (Date)
|
|
101
|
-
* * `muteConfig.selectedTimeWindow`: Selected time window (seconds) (number)
|
|
102
|
-
* @type {?Object}
|
|
103
|
-
*/
|
|
104
|
-
this.muteConfig = {
|
|
105
|
-
endTime: new Date(data.mute_config.end_time),
|
|
106
|
-
selectedTimeWindow: data.mute_config.selected_time_window,
|
|
107
|
-
};
|
|
108
|
-
} else {
|
|
109
|
-
this.muteConfig = null;
|
|
110
|
-
}
|
|
111
|
-
if ('hide_muted_channels' in data) {
|
|
112
|
-
/**
|
|
113
|
-
* Hide muted channels
|
|
114
|
-
* @type {?boolean}
|
|
115
|
-
*/
|
|
116
|
-
this.hideMutedChannels = data.hide_muted_channels;
|
|
117
|
-
}
|
|
118
|
-
if ('channel_overrides' in data) {
|
|
119
|
-
/**
|
|
120
|
-
* Channel overrides (unknown)
|
|
121
|
-
* @type {?Array}
|
|
122
|
-
*/
|
|
123
|
-
this.channelOverrides = data.channel_overrides;
|
|
124
|
-
}
|
|
125
|
-
if ('notify_highlights' in data) {
|
|
126
|
-
/**
|
|
127
|
-
* Notification setting > Suppress highlights
|
|
128
|
-
* * `0`: ??? (unknown)
|
|
129
|
-
* * `1`: Enable
|
|
130
|
-
* * `2`: Disable
|
|
131
|
-
* @type {?number}
|
|
132
|
-
*/
|
|
133
|
-
this.notifyHighlights = data.notify_highlights;
|
|
134
|
-
}
|
|
135
|
-
if ('version' in data) {
|
|
136
|
-
/**
|
|
137
|
-
* Version (unknown)
|
|
138
|
-
* @type {?number}
|
|
139
|
-
*/
|
|
140
|
-
this.version = data.version;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Edit guild settings
|
|
145
|
-
* @param {Object} data Data to edit
|
|
146
|
-
* @returns {Promise<GuildSettingManager>}
|
|
147
|
-
*/
|
|
148
|
-
async edit(data) {
|
|
149
|
-
const data_ = await this.client.api.users('@me').settings.patch(data);
|
|
150
|
-
this._patch(data_);
|
|
151
|
-
return this;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
module.exports = GuildSettingManager;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const BaseManager = require('./BaseManager');
|
|
4
|
+
/**
|
|
5
|
+
* Manages API methods for users and stores their cache.
|
|
6
|
+
* @extends {BaseManager}
|
|
7
|
+
* @see {@link https://luna.gitlab.io/discord-unofficial-docs/user_settings.html}
|
|
8
|
+
*/
|
|
9
|
+
class GuildSettingManager extends BaseManager {
|
|
10
|
+
#rawSetting = {};
|
|
11
|
+
constructor(guild) {
|
|
12
|
+
super(guild.client);
|
|
13
|
+
/**
|
|
14
|
+
* Guild Id
|
|
15
|
+
* @type {?Snowflake}
|
|
16
|
+
*/
|
|
17
|
+
this.guildId = guild.id;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Raw data
|
|
22
|
+
* @type {Object}
|
|
23
|
+
*/
|
|
24
|
+
get raw() {
|
|
25
|
+
return this.#rawSetting;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Get the guild
|
|
30
|
+
* @type {?Guild}
|
|
31
|
+
* @readonly
|
|
32
|
+
*/
|
|
33
|
+
get guild() {
|
|
34
|
+
return this.client.guilds.cache.get(this.guildId);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Patch data file
|
|
39
|
+
* @private
|
|
40
|
+
* @param {Object} data Raw Data to patch
|
|
41
|
+
*/
|
|
42
|
+
_patch(data = {}) {
|
|
43
|
+
this.#rawSetting = Object.assign(this.#rawSetting, data);
|
|
44
|
+
this.client.emit('debug', `[SETTING > Guild ${this.guildId}] Sync setting`);
|
|
45
|
+
if ('suppress_everyone' in data) {
|
|
46
|
+
/**
|
|
47
|
+
* Notification setting > Suppress `@everyone` and `@here`
|
|
48
|
+
* @type {?boolean}
|
|
49
|
+
*/
|
|
50
|
+
this.suppressEveryone = data.suppress_everyone;
|
|
51
|
+
}
|
|
52
|
+
if ('suppress_roles' in data) {
|
|
53
|
+
/**
|
|
54
|
+
* Notification setting > Suppress all role `@mention`
|
|
55
|
+
* @type {?boolean}
|
|
56
|
+
*/
|
|
57
|
+
this.suppressRoles = data.suppress_roles;
|
|
58
|
+
}
|
|
59
|
+
if ('mute_scheduled_events' in data) {
|
|
60
|
+
/**
|
|
61
|
+
* Notification setting > Mute new events
|
|
62
|
+
* @type {?boolean}
|
|
63
|
+
*/
|
|
64
|
+
this.muteScheduledEvents = data.mute_scheduled_events;
|
|
65
|
+
}
|
|
66
|
+
if ('message_notifications' in data) {
|
|
67
|
+
/**
|
|
68
|
+
* Notification setting > Message notifications
|
|
69
|
+
* * `0`: All messages
|
|
70
|
+
* * `1`: Only @mentions
|
|
71
|
+
* * `2`: Nothing
|
|
72
|
+
* @type {?number}
|
|
73
|
+
*/
|
|
74
|
+
this.messageNotifications = data.message_notifications;
|
|
75
|
+
}
|
|
76
|
+
if ('flags' in data) {
|
|
77
|
+
/**
|
|
78
|
+
* Flags (unknown)
|
|
79
|
+
* @type {?number}
|
|
80
|
+
*/
|
|
81
|
+
this.flags = data.flags;
|
|
82
|
+
}
|
|
83
|
+
if ('mobile_push' in data) {
|
|
84
|
+
/**
|
|
85
|
+
* Notification setting > Mobile push notifications
|
|
86
|
+
* @type {?boolean}
|
|
87
|
+
*/
|
|
88
|
+
this.mobilePush = data.mobile_push;
|
|
89
|
+
}
|
|
90
|
+
if ('muted' in data) {
|
|
91
|
+
/**
|
|
92
|
+
* Mute server
|
|
93
|
+
* @type {?boolean}
|
|
94
|
+
*/
|
|
95
|
+
this.muted = data.muted;
|
|
96
|
+
}
|
|
97
|
+
if ('mute_config' in data && data.mute_config !== null) {
|
|
98
|
+
/**
|
|
99
|
+
* Mute config (muted = true)
|
|
100
|
+
* * `muteConfig.endTime`: End time (Date)
|
|
101
|
+
* * `muteConfig.selectedTimeWindow`: Selected time window (seconds) (number)
|
|
102
|
+
* @type {?Object}
|
|
103
|
+
*/
|
|
104
|
+
this.muteConfig = {
|
|
105
|
+
endTime: new Date(data.mute_config.end_time),
|
|
106
|
+
selectedTimeWindow: data.mute_config.selected_time_window,
|
|
107
|
+
};
|
|
108
|
+
} else {
|
|
109
|
+
this.muteConfig = null;
|
|
110
|
+
}
|
|
111
|
+
if ('hide_muted_channels' in data) {
|
|
112
|
+
/**
|
|
113
|
+
* Hide muted channels
|
|
114
|
+
* @type {?boolean}
|
|
115
|
+
*/
|
|
116
|
+
this.hideMutedChannels = data.hide_muted_channels;
|
|
117
|
+
}
|
|
118
|
+
if ('channel_overrides' in data) {
|
|
119
|
+
/**
|
|
120
|
+
* Channel overrides (unknown)
|
|
121
|
+
* @type {?Array}
|
|
122
|
+
*/
|
|
123
|
+
this.channelOverrides = data.channel_overrides;
|
|
124
|
+
}
|
|
125
|
+
if ('notify_highlights' in data) {
|
|
126
|
+
/**
|
|
127
|
+
* Notification setting > Suppress highlights
|
|
128
|
+
* * `0`: ??? (unknown)
|
|
129
|
+
* * `1`: Enable
|
|
130
|
+
* * `2`: Disable
|
|
131
|
+
* @type {?number}
|
|
132
|
+
*/
|
|
133
|
+
this.notifyHighlights = data.notify_highlights;
|
|
134
|
+
}
|
|
135
|
+
if ('version' in data) {
|
|
136
|
+
/**
|
|
137
|
+
* Version (unknown)
|
|
138
|
+
* @type {?number}
|
|
139
|
+
*/
|
|
140
|
+
this.version = data.version;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Edit guild settings
|
|
145
|
+
* @param {Object} data Data to edit
|
|
146
|
+
* @returns {Promise<GuildSettingManager>}
|
|
147
|
+
*/
|
|
148
|
+
async edit(data) {
|
|
149
|
+
const data_ = await this.client.api.users('@me').settings.patch(data);
|
|
150
|
+
this._patch(data_);
|
|
151
|
+
return this;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
module.exports = GuildSettingManager;
|
|
@@ -1,179 +1,179 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { Collection } = require('@discordjs/collection');
|
|
4
|
-
const CachedManager = require('./CachedManager');
|
|
5
|
-
const { TypeError } = require('../errors');
|
|
6
|
-
const MessagePayload = require('../structures/MessagePayload');
|
|
7
|
-
const { Sticker } = require('../structures/Sticker');
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Manages API methods for Guild Stickers and stores their cache.
|
|
11
|
-
* @extends {CachedManager}
|
|
12
|
-
*/
|
|
13
|
-
class GuildStickerManager extends CachedManager {
|
|
14
|
-
constructor(guild, iterable) {
|
|
15
|
-
super(guild.client, Sticker, iterable);
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The guild this manager belongs to
|
|
19
|
-
* @type {Guild}
|
|
20
|
-
*/
|
|
21
|
-
this.guild = guild;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* The cache of Guild Stickers
|
|
26
|
-
* @type {Collection<Snowflake, Sticker>}
|
|
27
|
-
* @name GuildStickerManager#cache
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
_add(data, cache) {
|
|
31
|
-
return super._add(data, cache, { extras: [this.guild] });
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Options for creating a guild sticker.
|
|
36
|
-
* @typedef {Object} GuildStickerCreateOptions
|
|
37
|
-
* @property {?string} [description] The description for the sticker
|
|
38
|
-
* @property {string} [reason] Reason for creating the sticker
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Creates a new custom sticker in the guild.
|
|
43
|
-
* @param {BufferResolvable|Stream|FileOptions|MessageAttachment} file The file for the sticker
|
|
44
|
-
* @param {string} name The name for the sticker
|
|
45
|
-
* @param {string} tags The Discord name of a unicode emoji representing the sticker's expression
|
|
46
|
-
* @param {GuildStickerCreateOptions} [options] Options
|
|
47
|
-
* @returns {Promise<Sticker>} The created sticker
|
|
48
|
-
* @example
|
|
49
|
-
* // Create a new sticker from a URL
|
|
50
|
-
* guild.stickers.create('https://i.imgur.com/w3duR07.png', 'rip', 'headstone')
|
|
51
|
-
* .then(sticker => console.log(`Created new sticker with name ${sticker.name}!`))
|
|
52
|
-
* .catch(console.error);
|
|
53
|
-
* @example
|
|
54
|
-
* // Create a new sticker from a file on your computer
|
|
55
|
-
* guild.stickers.create('./memes/banana.png', 'banana', 'banana')
|
|
56
|
-
* .then(sticker => console.log(`Created new sticker with name ${sticker.name}!`))
|
|
57
|
-
* .catch(console.error);
|
|
58
|
-
*/
|
|
59
|
-
async create(file, name, tags, { description, reason } = {}) {
|
|
60
|
-
const resolvedFile = await MessagePayload.resolveFile(file);
|
|
61
|
-
if (!resolvedFile) throw new TypeError('REQ_RESOURCE_TYPE');
|
|
62
|
-
file = { ...resolvedFile, key: 'file' };
|
|
63
|
-
|
|
64
|
-
const data = { name, tags, description: description ?? '' };
|
|
65
|
-
|
|
66
|
-
const sticker = await this.client.api
|
|
67
|
-
.guilds(this.guild.id)
|
|
68
|
-
.stickers.post({ data, files: [file], reason, dontUsePayloadJSON: true });
|
|
69
|
-
return this.client.actions.GuildStickerCreate.handle(this.guild, sticker).sticker;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Data that resolves to give a Sticker object. This can be:
|
|
74
|
-
* * A Sticker object
|
|
75
|
-
* * A Snowflake
|
|
76
|
-
* @typedef {Sticker|Snowflake} StickerResolvable
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Resolves a StickerResolvable to a Sticker object.
|
|
81
|
-
* @method resolve
|
|
82
|
-
* @memberof GuildStickerManager
|
|
83
|
-
* @instance
|
|
84
|
-
* @param {StickerResolvable} sticker The Sticker resolvable to identify
|
|
85
|
-
* @returns {?Sticker}
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Resolves a StickerResolvable to a Sticker id string.
|
|
90
|
-
* @method resolveId
|
|
91
|
-
* @memberof GuildStickerManager
|
|
92
|
-
* @instance
|
|
93
|
-
* @param {StickerResolvable} sticker The Sticker resolvable to identify
|
|
94
|
-
* @returns {?Snowflake}
|
|
95
|
-
*/
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Edits a sticker.
|
|
99
|
-
* @param {StickerResolvable} sticker The sticker to edit
|
|
100
|
-
* @param {GuildStickerEditData} [data] The new data for the sticker
|
|
101
|
-
* @param {string} [reason] Reason for editing this sticker
|
|
102
|
-
* @returns {Promise<Sticker>}
|
|
103
|
-
*/
|
|
104
|
-
async edit(sticker, data, reason) {
|
|
105
|
-
const stickerId = this.resolveId(sticker);
|
|
106
|
-
if (!stickerId) throw new TypeError('INVALID_TYPE', 'sticker', 'StickerResolvable');
|
|
107
|
-
|
|
108
|
-
const d = await this.client.api.guilds(this.guild.id).stickers(stickerId).patch({
|
|
109
|
-
data,
|
|
110
|
-
reason,
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
const existing = this.cache.get(stickerId);
|
|
114
|
-
if (existing) {
|
|
115
|
-
const clone = existing._clone();
|
|
116
|
-
clone._patch(d);
|
|
117
|
-
return clone;
|
|
118
|
-
}
|
|
119
|
-
return this._add(d);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Deletes a sticker.
|
|
124
|
-
* @param {StickerResolvable} sticker The sticker to delete
|
|
125
|
-
* @param {string} [reason] Reason for deleting this sticker
|
|
126
|
-
* @returns {Promise<void>}
|
|
127
|
-
*/
|
|
128
|
-
async delete(sticker, reason) {
|
|
129
|
-
sticker = this.resolveId(sticker);
|
|
130
|
-
if (!sticker) throw new TypeError('INVALID_TYPE', 'sticker', 'StickerResolvable');
|
|
131
|
-
|
|
132
|
-
await this.client.api.guilds(this.guild.id).stickers(sticker).delete({ reason });
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Obtains one or more stickers from Discord, or the sticker cache if they're already available.
|
|
137
|
-
* @param {Snowflake} [id] The Sticker's id
|
|
138
|
-
* @param {BaseFetchOptions} [options] Additional options for this fetch
|
|
139
|
-
* @returns {Promise<Sticker|Collection<Snowflake, Sticker>>}
|
|
140
|
-
* @example
|
|
141
|
-
* // Fetch all stickers from the guild
|
|
142
|
-
* message.guild.stickers.fetch()
|
|
143
|
-
* .then(stickers => console.log(`There are ${stickers.size} stickers.`))
|
|
144
|
-
* .catch(console.error);
|
|
145
|
-
* @example
|
|
146
|
-
* // Fetch a single sticker
|
|
147
|
-
* message.guild.stickers.fetch('222078108977594368')
|
|
148
|
-
* .then(sticker => console.log(`The sticker name is: ${sticker.name}`))
|
|
149
|
-
* .catch(console.error);
|
|
150
|
-
*/
|
|
151
|
-
async fetch(id, { cache = true, force = false } = {}) {
|
|
152
|
-
if (id) {
|
|
153
|
-
if (!force) {
|
|
154
|
-
const existing = this.cache.get(id);
|
|
155
|
-
if (existing) return existing;
|
|
156
|
-
}
|
|
157
|
-
const sticker = await this.client.api.guilds(this.guild.id).stickers(id).get();
|
|
158
|
-
return this._add(sticker, cache);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
const data = await this.client.api.guilds(this.guild.id).stickers.get();
|
|
162
|
-
return new Collection(data.map(sticker => [sticker.id, this._add(sticker, cache)]));
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Fetches the user who uploaded this sticker, if this is a guild sticker.
|
|
167
|
-
* @param {StickerResolvable} sticker The sticker to fetch the user for
|
|
168
|
-
* @returns {Promise<?User>}
|
|
169
|
-
*/
|
|
170
|
-
async fetchUser(sticker) {
|
|
171
|
-
sticker = this.resolve(sticker);
|
|
172
|
-
if (!sticker) throw new TypeError('INVALID_TYPE', 'sticker', 'StickerResolvable');
|
|
173
|
-
const data = await this.client.api.guilds(this.guild.id).stickers(sticker.id).get();
|
|
174
|
-
sticker._patch(data);
|
|
175
|
-
return sticker.user;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
module.exports = GuildStickerManager;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const CachedManager = require('./CachedManager');
|
|
5
|
+
const { TypeError } = require('../errors');
|
|
6
|
+
const MessagePayload = require('../structures/MessagePayload');
|
|
7
|
+
const { Sticker } = require('../structures/Sticker');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Manages API methods for Guild Stickers and stores their cache.
|
|
11
|
+
* @extends {CachedManager}
|
|
12
|
+
*/
|
|
13
|
+
class GuildStickerManager extends CachedManager {
|
|
14
|
+
constructor(guild, iterable) {
|
|
15
|
+
super(guild.client, Sticker, iterable);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The guild this manager belongs to
|
|
19
|
+
* @type {Guild}
|
|
20
|
+
*/
|
|
21
|
+
this.guild = guild;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The cache of Guild Stickers
|
|
26
|
+
* @type {Collection<Snowflake, Sticker>}
|
|
27
|
+
* @name GuildStickerManager#cache
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
_add(data, cache) {
|
|
31
|
+
return super._add(data, cache, { extras: [this.guild] });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Options for creating a guild sticker.
|
|
36
|
+
* @typedef {Object} GuildStickerCreateOptions
|
|
37
|
+
* @property {?string} [description] The description for the sticker
|
|
38
|
+
* @property {string} [reason] Reason for creating the sticker
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new custom sticker in the guild.
|
|
43
|
+
* @param {BufferResolvable|Stream|FileOptions|MessageAttachment} file The file for the sticker
|
|
44
|
+
* @param {string} name The name for the sticker
|
|
45
|
+
* @param {string} tags The Discord name of a unicode emoji representing the sticker's expression
|
|
46
|
+
* @param {GuildStickerCreateOptions} [options] Options
|
|
47
|
+
* @returns {Promise<Sticker>} The created sticker
|
|
48
|
+
* @example
|
|
49
|
+
* // Create a new sticker from a URL
|
|
50
|
+
* guild.stickers.create('https://i.imgur.com/w3duR07.png', 'rip', 'headstone')
|
|
51
|
+
* .then(sticker => console.log(`Created new sticker with name ${sticker.name}!`))
|
|
52
|
+
* .catch(console.error);
|
|
53
|
+
* @example
|
|
54
|
+
* // Create a new sticker from a file on your computer
|
|
55
|
+
* guild.stickers.create('./memes/banana.png', 'banana', 'banana')
|
|
56
|
+
* .then(sticker => console.log(`Created new sticker with name ${sticker.name}!`))
|
|
57
|
+
* .catch(console.error);
|
|
58
|
+
*/
|
|
59
|
+
async create(file, name, tags, { description, reason } = {}) {
|
|
60
|
+
const resolvedFile = await MessagePayload.resolveFile(file);
|
|
61
|
+
if (!resolvedFile) throw new TypeError('REQ_RESOURCE_TYPE');
|
|
62
|
+
file = { ...resolvedFile, key: 'file' };
|
|
63
|
+
|
|
64
|
+
const data = { name, tags, description: description ?? '' };
|
|
65
|
+
|
|
66
|
+
const sticker = await this.client.api
|
|
67
|
+
.guilds(this.guild.id)
|
|
68
|
+
.stickers.post({ data, files: [file], reason, dontUsePayloadJSON: true });
|
|
69
|
+
return this.client.actions.GuildStickerCreate.handle(this.guild, sticker).sticker;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Data that resolves to give a Sticker object. This can be:
|
|
74
|
+
* * A Sticker object
|
|
75
|
+
* * A Snowflake
|
|
76
|
+
* @typedef {Sticker|Snowflake} StickerResolvable
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Resolves a StickerResolvable to a Sticker object.
|
|
81
|
+
* @method resolve
|
|
82
|
+
* @memberof GuildStickerManager
|
|
83
|
+
* @instance
|
|
84
|
+
* @param {StickerResolvable} sticker The Sticker resolvable to identify
|
|
85
|
+
* @returns {?Sticker}
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Resolves a StickerResolvable to a Sticker id string.
|
|
90
|
+
* @method resolveId
|
|
91
|
+
* @memberof GuildStickerManager
|
|
92
|
+
* @instance
|
|
93
|
+
* @param {StickerResolvable} sticker The Sticker resolvable to identify
|
|
94
|
+
* @returns {?Snowflake}
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Edits a sticker.
|
|
99
|
+
* @param {StickerResolvable} sticker The sticker to edit
|
|
100
|
+
* @param {GuildStickerEditData} [data] The new data for the sticker
|
|
101
|
+
* @param {string} [reason] Reason for editing this sticker
|
|
102
|
+
* @returns {Promise<Sticker>}
|
|
103
|
+
*/
|
|
104
|
+
async edit(sticker, data, reason) {
|
|
105
|
+
const stickerId = this.resolveId(sticker);
|
|
106
|
+
if (!stickerId) throw new TypeError('INVALID_TYPE', 'sticker', 'StickerResolvable');
|
|
107
|
+
|
|
108
|
+
const d = await this.client.api.guilds(this.guild.id).stickers(stickerId).patch({
|
|
109
|
+
data,
|
|
110
|
+
reason,
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
const existing = this.cache.get(stickerId);
|
|
114
|
+
if (existing) {
|
|
115
|
+
const clone = existing._clone();
|
|
116
|
+
clone._patch(d);
|
|
117
|
+
return clone;
|
|
118
|
+
}
|
|
119
|
+
return this._add(d);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Deletes a sticker.
|
|
124
|
+
* @param {StickerResolvable} sticker The sticker to delete
|
|
125
|
+
* @param {string} [reason] Reason for deleting this sticker
|
|
126
|
+
* @returns {Promise<void>}
|
|
127
|
+
*/
|
|
128
|
+
async delete(sticker, reason) {
|
|
129
|
+
sticker = this.resolveId(sticker);
|
|
130
|
+
if (!sticker) throw new TypeError('INVALID_TYPE', 'sticker', 'StickerResolvable');
|
|
131
|
+
|
|
132
|
+
await this.client.api.guilds(this.guild.id).stickers(sticker).delete({ reason });
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Obtains one or more stickers from Discord, or the sticker cache if they're already available.
|
|
137
|
+
* @param {Snowflake} [id] The Sticker's id
|
|
138
|
+
* @param {BaseFetchOptions} [options] Additional options for this fetch
|
|
139
|
+
* @returns {Promise<Sticker|Collection<Snowflake, Sticker>>}
|
|
140
|
+
* @example
|
|
141
|
+
* // Fetch all stickers from the guild
|
|
142
|
+
* message.guild.stickers.fetch()
|
|
143
|
+
* .then(stickers => console.log(`There are ${stickers.size} stickers.`))
|
|
144
|
+
* .catch(console.error);
|
|
145
|
+
* @example
|
|
146
|
+
* // Fetch a single sticker
|
|
147
|
+
* message.guild.stickers.fetch('222078108977594368')
|
|
148
|
+
* .then(sticker => console.log(`The sticker name is: ${sticker.name}`))
|
|
149
|
+
* .catch(console.error);
|
|
150
|
+
*/
|
|
151
|
+
async fetch(id, { cache = true, force = false } = {}) {
|
|
152
|
+
if (id) {
|
|
153
|
+
if (!force) {
|
|
154
|
+
const existing = this.cache.get(id);
|
|
155
|
+
if (existing) return existing;
|
|
156
|
+
}
|
|
157
|
+
const sticker = await this.client.api.guilds(this.guild.id).stickers(id).get();
|
|
158
|
+
return this._add(sticker, cache);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const data = await this.client.api.guilds(this.guild.id).stickers.get();
|
|
162
|
+
return new Collection(data.map(sticker => [sticker.id, this._add(sticker, cache)]));
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Fetches the user who uploaded this sticker, if this is a guild sticker.
|
|
167
|
+
* @param {StickerResolvable} sticker The sticker to fetch the user for
|
|
168
|
+
* @returns {Promise<?User>}
|
|
169
|
+
*/
|
|
170
|
+
async fetchUser(sticker) {
|
|
171
|
+
sticker = this.resolve(sticker);
|
|
172
|
+
if (!sticker) throw new TypeError('INVALID_TYPE', 'sticker', 'StickerResolvable');
|
|
173
|
+
const data = await this.client.api.guilds(this.guild.id).stickers(sticker.id).get();
|
|
174
|
+
sticker._patch(data);
|
|
175
|
+
return sticker.user;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
module.exports = GuildStickerManager;
|