@ovencord/discord.js 14.16.3
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 +191 -0
- package/README.md +148 -0
- package/package.json +73 -0
- package/src/client/Client.ts +967 -0
- package/src/client/actions/Action.ts +141 -0
- package/src/client/actions/ActionsManager.ts +138 -0
- package/src/client/actions/ChannelCreate.ts +21 -0
- package/src/client/actions/ChannelDelete.ts +20 -0
- package/src/client/actions/ChannelUpdate.ts +38 -0
- package/src/client/actions/GuildChannelsPositionUpdate.ts +17 -0
- package/src/client/actions/GuildEmojiCreate.ts +17 -0
- package/src/client/actions/GuildEmojiDelete.ts +16 -0
- package/src/client/actions/GuildEmojiUpdate.ts +17 -0
- package/src/client/actions/GuildEmojisUpdate.ts +30 -0
- package/src/client/actions/GuildMemberRemove.ts +29 -0
- package/src/client/actions/GuildMemberUpdate.ts +41 -0
- package/src/client/actions/GuildRoleCreate.ts +23 -0
- package/src/client/actions/GuildRoleDelete.ts +26 -0
- package/src/client/actions/GuildRolesPositionUpdate.ts +17 -0
- package/src/client/actions/GuildScheduledEventDelete.ts +28 -0
- package/src/client/actions/GuildScheduledEventUserAdd.ts +29 -0
- package/src/client/actions/GuildScheduledEventUserRemove.ts +29 -0
- package/src/client/actions/GuildSoundboardSoundDelete.ts +26 -0
- package/src/client/actions/GuildStickerCreate.ts +17 -0
- package/src/client/actions/GuildStickerDelete.ts +16 -0
- package/src/client/actions/GuildStickerUpdate.ts +17 -0
- package/src/client/actions/GuildStickersUpdate.ts +30 -0
- package/src/client/actions/GuildUpdate.ts +30 -0
- package/src/client/actions/InteractionCreate.ts +104 -0
- package/src/client/actions/MessageCreate.ts +38 -0
- package/src/client/actions/MessageDelete.ts +29 -0
- package/src/client/actions/MessageDeleteBulk.ts +45 -0
- package/src/client/actions/MessagePollVoteAdd.ts +37 -0
- package/src/client/actions/MessagePollVoteRemove.ts +35 -0
- package/src/client/actions/MessageReactionAdd.ts +68 -0
- package/src/client/actions/MessageReactionRemove.ts +47 -0
- package/src/client/actions/MessageReactionRemoveAll.ts +30 -0
- package/src/client/actions/MessageReactionRemoveEmoji.ts +25 -0
- package/src/client/actions/MessageUpdate.ts +22 -0
- package/src/client/actions/StageInstanceCreate.ts +25 -0
- package/src/client/actions/StageInstanceDelete.ts +28 -0
- package/src/client/actions/StageInstanceUpdate.ts +27 -0
- package/src/client/actions/ThreadCreate.ts +22 -0
- package/src/client/actions/ThreadMembersUpdate.ts +45 -0
- package/src/client/actions/TypingStart.ts +26 -0
- package/src/client/actions/UserUpdate.ts +33 -0
- package/src/client/voice/ClientVoiceManager.ts +46 -0
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.ts +19 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.ts +17 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.ts +18 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.ts +21 -0
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.ts +20 -0
- package/src/client/websocket/handlers/CHANNEL_CREATE.ts +4 -0
- package/src/client/websocket/handlers/CHANNEL_DELETE.ts +4 -0
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.ts +22 -0
- package/src/client/websocket/handlers/CHANNEL_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/ENTITLEMENT_CREATE.ts +14 -0
- package/src/client/websocket/handlers/ENTITLEMENT_DELETE.ts +18 -0
- package/src/client/websocket/handlers/ENTITLEMENT_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.ts +19 -0
- package/src/client/websocket/handlers/GUILD_BAN_ADD.ts +15 -0
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.ts +20 -0
- package/src/client/websocket/handlers/GUILD_CREATE.ts +34 -0
- package/src/client/websocket/handlers/GUILD_DELETE.ts +36 -0
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.ts +15 -0
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.ts +40 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.ts +17 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.ts +21 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.ts +17 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.ts +19 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.ts +4 -0
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUNDS_UPDATE.ts +24 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_CREATE.ts +18 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_DELETE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_SOUNDBOARD_SOUND_UPDATE.ts +20 -0
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/GUILD_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/INTERACTION_CREATE.ts +4 -0
- package/src/client/websocket/handlers/INVITE_CREATE.ts +20 -0
- package/src/client/websocket/handlers/INVITE_DELETE.ts +23 -0
- package/src/client/websocket/handlers/MESSAGE_CREATE.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.ts +4 -0
- package/src/client/websocket/handlers/MESSAGE_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/PRESENCE_UPDATE.ts +42 -0
- package/src/client/websocket/handlers/RATE_LIMITED.ts +23 -0
- package/src/client/websocket/handlers/READY.ts +29 -0
- package/src/client/websocket/handlers/SOUNDBOARD_SOUNDS.ts +24 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.ts +4 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.ts +4 -0
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/SUBSCRIPTION_CREATE.ts +14 -0
- package/src/client/websocket/handlers/SUBSCRIPTION_DELETE.ts +16 -0
- package/src/client/websocket/handlers/SUBSCRIPTION_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/THREAD_CREATE.ts +4 -0
- package/src/client/websocket/handlers/THREAD_DELETE.ts +17 -0
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.ts +50 -0
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.ts +25 -0
- package/src/client/websocket/handlers/THREAD_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/TYPING_START.ts +4 -0
- package/src/client/websocket/handlers/USER_UPDATE.ts +4 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.ts +16 -0
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.ts +5 -0
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.ts +37 -0
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.ts +16 -0
- package/src/client/websocket/handlers/index.ts +74 -0
- package/src/errors/DJSError.ts +50 -0
- package/src/errors/ErrorCodes.ts +277 -0
- package/src/errors/Messages.ts +155 -0
- package/src/errors/index.ts +6 -0
- package/src/index.ts +241 -0
- package/src/managers/ApplicationCommandManager.ts +303 -0
- package/src/managers/ApplicationCommandPermissionsManager.ts +453 -0
- package/src/managers/ApplicationEmojiManager.ts +149 -0
- package/src/managers/AutoModerationRuleManager.ts +307 -0
- package/src/managers/BaseManager.ts +13 -0
- package/src/managers/CachedManager.ts +56 -0
- package/src/managers/CategoryChannelChildManager.ts +81 -0
- package/src/managers/ChannelManager.ts +194 -0
- package/src/managers/DMMessageManager.ts +15 -0
- package/src/managers/DataManager.ts +38 -0
- package/src/managers/EntitlementManager.ts +182 -0
- package/src/managers/GuildApplicationCommandManager.ts +29 -0
- package/src/managers/GuildBanManager.ts +221 -0
- package/src/managers/GuildChannelManager.ts +552 -0
- package/src/managers/GuildEmojiManager.ts +262 -0
- package/src/managers/GuildEmojiRoleManager.ts +134 -0
- package/src/managers/GuildForumThreadManager.ts +84 -0
- package/src/managers/GuildInviteManager.ts +236 -0
- package/src/managers/GuildManager.ts +265 -0
- package/src/managers/GuildMemberManager.ts +619 -0
- package/src/managers/GuildMemberRoleManager.ts +230 -0
- package/src/managers/GuildMessageManager.ts +31 -0
- package/src/managers/GuildScheduledEventManager.ts +330 -0
- package/src/managers/GuildSoundboardSoundManager.ts +157 -0
- package/src/managers/GuildStickerManager.ts +192 -0
- package/src/managers/GuildTextThreadManager.ts +91 -0
- package/src/managers/MessageManager.ts +352 -0
- package/src/managers/PartialGroupDMMessageManager.ts +15 -0
- package/src/managers/PermissionOverwriteManager.ts +174 -0
- package/src/managers/PollAnswerVoterManager.ts +59 -0
- package/src/managers/PresenceManager.ts +60 -0
- package/src/managers/ReactionManager.ts +72 -0
- package/src/managers/ReactionUserManager.ts +82 -0
- package/src/managers/RoleManager.ts +432 -0
- package/src/managers/StageInstanceManager.ts +166 -0
- package/src/managers/SubscriptionManager.ts +83 -0
- package/src/managers/ThreadManager.ts +210 -0
- package/src/managers/ThreadMemberManager.ts +194 -0
- package/src/managers/UserManager.ts +139 -0
- package/src/managers/VoiceStateManager.ts +61 -0
- package/src/sharding/Shard.ts +513 -0
- package/src/sharding/ShardClientUtil.ts +293 -0
- package/src/sharding/ShardingManager.ts +374 -0
- package/src/structures/ActionRow.ts +31 -0
- package/src/structures/AnnouncementChannel.ts +25 -0
- package/src/structures/AnonymousGuild.ts +110 -0
- package/src/structures/ApplicationCommand.ts +675 -0
- package/src/structures/ApplicationEmoji.ts +189 -0
- package/src/structures/ApplicationRoleConnectionMetadata.ts +54 -0
- package/src/structures/Attachment.ts +189 -0
- package/src/structures/AuthorizingIntegrationOwners.ts +63 -0
- package/src/structures/AutoModerationActionExecution.ts +138 -0
- package/src/structures/AutoModerationRule.ts +325 -0
- package/src/structures/AutocompleteInteraction.ts +115 -0
- package/src/structures/Base.ts +37 -0
- package/src/structures/BaseChannel.ts +188 -0
- package/src/structures/BaseGuild.ts +134 -0
- package/src/structures/BaseGuildEmoji.ts +113 -0
- package/src/structures/BaseGuildTextChannel.ts +230 -0
- package/src/structures/BaseGuildVoiceChannel.ts +270 -0
- package/src/structures/BaseInteraction.ts +393 -0
- package/src/structures/BaseInvite.ts +192 -0
- package/src/structures/BaseSelectMenuComponent.ts +58 -0
- package/src/structures/ButtonComponent.ts +68 -0
- package/src/structures/ButtonInteraction.ts +8 -0
- package/src/structures/CategoryChannel.ts +46 -0
- package/src/structures/ChannelSelectMenuComponent.ts +18 -0
- package/src/structures/ChannelSelectMenuInteraction.ts +34 -0
- package/src/structures/ChatInputCommandInteraction.ts +43 -0
- package/src/structures/ClientApplication.ts +470 -0
- package/src/structures/ClientPresence.ts +87 -0
- package/src/structures/ClientUser.ts +219 -0
- package/src/structures/CommandInteraction.ts +193 -0
- package/src/structures/CommandInteractionOptionResolver.ts +336 -0
- package/src/structures/Component.ts +59 -0
- package/src/structures/ContainerComponent.ts +63 -0
- package/src/structures/ContextMenuCommandInteraction.ts +68 -0
- package/src/structures/DMChannel.ts +148 -0
- package/src/structures/DirectoryChannel.ts +40 -0
- package/src/structures/Embed.ts +251 -0
- package/src/structures/Emoji.ts +61 -0
- package/src/structures/Entitlement.ts +206 -0
- package/src/structures/FileComponent.ts +41 -0
- package/src/structures/ForumChannel.ts +31 -0
- package/src/structures/GroupDMInvite.ts +34 -0
- package/src/structures/Guild.ts +1605 -0
- package/src/structures/GuildAuditLogs.ts +99 -0
- package/src/structures/GuildAuditLogsEntry.ts +557 -0
- package/src/structures/GuildBan.ts +65 -0
- package/src/structures/GuildChannel.ts +515 -0
- package/src/structures/GuildEmoji.ts +159 -0
- package/src/structures/GuildInvite.ts +233 -0
- package/src/structures/GuildMember.ts +643 -0
- package/src/structures/GuildOnboarding.ts +73 -0
- package/src/structures/GuildOnboardingPrompt.ts +93 -0
- package/src/structures/GuildOnboardingPromptOption.ts +100 -0
- package/src/structures/GuildPreview.ts +218 -0
- package/src/structures/GuildPreviewEmoji.ts +28 -0
- package/src/structures/GuildScheduledEvent.ts +593 -0
- package/src/structures/GuildTemplate.ts +229 -0
- package/src/structures/Integration.ts +257 -0
- package/src/structures/IntegrationApplication.ts +84 -0
- package/src/structures/InteractionCallback.ts +86 -0
- package/src/structures/InteractionCallbackResource.ts +57 -0
- package/src/structures/InteractionCallbackResponse.ts +35 -0
- package/src/structures/InteractionCollector.ts +260 -0
- package/src/structures/InteractionWebhook.ts +65 -0
- package/src/structures/InviteGuild.ts +22 -0
- package/src/structures/LabelComponent.ts +51 -0
- package/src/structures/MediaChannel.ts +8 -0
- package/src/structures/MediaGalleryComponent.ts +31 -0
- package/src/structures/MediaGalleryItem.ts +54 -0
- package/src/structures/MentionableSelectMenuComponent.ts +8 -0
- package/src/structures/MentionableSelectMenuInteraction.ts +76 -0
- package/src/structures/Message.ts +1202 -0
- package/src/structures/MessageCollector.ts +155 -0
- package/src/structures/MessageComponentInteraction.ts +132 -0
- package/src/structures/MessageContextMenuCommandInteraction.ts +18 -0
- package/src/structures/MessageMentions.ts +327 -0
- package/src/structures/MessagePayload.ts +325 -0
- package/src/structures/MessageReaction.ts +219 -0
- package/src/structures/ModalComponentResolver.ts +237 -0
- package/src/structures/ModalSubmitInteraction.ts +260 -0
- package/src/structures/OAuth2Guild.ts +30 -0
- package/src/structures/PartialGroupDMChannel.ts +151 -0
- package/src/structures/PermissionOverwrites.ts +222 -0
- package/src/structures/Poll.ts +195 -0
- package/src/structures/PollAnswer.ts +100 -0
- package/src/structures/Presence.ts +448 -0
- package/src/structures/PrimaryEntryPointCommandInteraction.ts +8 -0
- package/src/structures/ReactionCollector.ts +245 -0
- package/src/structures/ReactionEmoji.ts +30 -0
- package/src/structures/Role.ts +543 -0
- package/src/structures/RoleSelectMenuComponent.ts +8 -0
- package/src/structures/RoleSelectMenuInteraction.ts +34 -0
- package/src/structures/SKU.ts +62 -0
- package/src/structures/SectionComponent.ts +44 -0
- package/src/structures/SeparatorComponent.ts +29 -0
- package/src/structures/SoundboardSound.ts +176 -0
- package/src/structures/StageChannel.ts +118 -0
- package/src/structures/StageInstance.ts +173 -0
- package/src/structures/Sticker.ts +300 -0
- package/src/structures/StickerPack.ts +111 -0
- package/src/structures/StringSelectMenuComponent.ts +18 -0
- package/src/structures/StringSelectMenuInteraction.ts +21 -0
- package/src/structures/Subscription.ts +138 -0
- package/src/structures/Team.ts +131 -0
- package/src/structures/TeamMember.ts +77 -0
- package/src/structures/TextChannel.ts +33 -0
- package/src/structures/TextDisplayComponent.ts +18 -0
- package/src/structures/TextInputComponent.ts +28 -0
- package/src/structures/ThreadChannel.ts +680 -0
- package/src/structures/ThreadMember.ts +125 -0
- package/src/structures/ThreadOnlyChannel.ts +276 -0
- package/src/structures/ThumbnailComponent.ts +51 -0
- package/src/structures/Typing.ts +81 -0
- package/src/structures/UnfurledMediaItem.ts +33 -0
- package/src/structures/User.ts +511 -0
- package/src/structures/UserContextMenuCommandInteraction.ts +28 -0
- package/src/structures/UserSelectMenuComponent.ts +8 -0
- package/src/structures/UserSelectMenuInteraction.ts +54 -0
- package/src/structures/VoiceChannel.ts +119 -0
- package/src/structures/VoiceChannelEffect.ts +92 -0
- package/src/structures/VoiceRegion.ts +52 -0
- package/src/structures/VoiceState.ts +346 -0
- package/src/structures/Webhook.ts +526 -0
- package/src/structures/WelcomeChannel.ts +67 -0
- package/src/structures/WelcomeScreen.ts +53 -0
- package/src/structures/Widget.ts +110 -0
- package/src/structures/WidgetMember.ts +124 -0
- package/src/structures/interfaces/Application.ts +179 -0
- package/src/structures/interfaces/Collector.ts +372 -0
- package/src/structures/interfaces/InteractionResponses.ts +384 -0
- package/src/structures/interfaces/TextBasedChannel.ts +430 -0
- package/src/util/APITypes.ts +690 -0
- package/src/util/ActivityFlagsBitField.ts +26 -0
- package/src/util/ApplicationFlagsBitField.ts +43 -0
- package/src/util/AttachmentFlagsBitField.ts +26 -0
- package/src/util/BitField.ts +178 -0
- package/src/util/ChannelFlagsBitField.ts +43 -0
- package/src/util/Channels.ts +165 -0
- package/src/util/Colors.ts +72 -0
- package/src/util/Components.ts +285 -0
- package/src/util/Constants.ts +251 -0
- package/src/util/DataResolver.ts +146 -0
- package/src/util/Enums.ts +10 -0
- package/src/util/Events.ts +178 -0
- package/src/util/GuildMemberFlagsBitField.ts +43 -0
- package/src/util/IntentsBitField.ts +35 -0
- package/src/util/InviteFlagsBitField.ts +26 -0
- package/src/util/Invites.ts +27 -0
- package/src/util/LimitedCollection.ts +73 -0
- package/src/util/MessageFlagsBitField.ts +43 -0
- package/src/util/Options.ts +215 -0
- package/src/util/Partials.ts +50 -0
- package/src/util/PermissionsBitField.ts +113 -0
- package/src/util/RoleFlagsBitField.ts +26 -0
- package/src/util/SKUFlagsBitField.ts +26 -0
- package/src/util/ShardEvents.ts +26 -0
- package/src/util/Status.ts +16 -0
- package/src/util/Sweepers.ts +532 -0
- package/src/util/Symbols.ts +1 -0
- package/src/util/SystemChannelFlagsBitField.ts +45 -0
- package/src/util/ThreadMemberFlagsBitField.ts +33 -0
- package/src/util/Transformers.ts +123 -0
- package/src/util/UserFlagsBitField.ts +33 -0
- package/src/util/Util.ts +519 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
import { DiscordjsError, ErrorCodes } from '../errors/index.js';
|
|
3
|
+
import { BaseManager } from './BaseManager.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Manages the API methods of a data model along with a collection of instances.
|
|
7
|
+
*
|
|
8
|
+
* @extends {BaseManager}
|
|
9
|
+
* @abstract
|
|
10
|
+
*/
|
|
11
|
+
export abstract class DataManager extends BaseManager {
|
|
12
|
+
public holds: any;
|
|
13
|
+
|
|
14
|
+
constructor(client: any, holds: any) {
|
|
15
|
+
super(client);
|
|
16
|
+
this.holds = holds;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get cache(): any {
|
|
20
|
+
throw new DiscordjsError(ErrorCodes.NotImplemented, 'get cache', this.constructor.name);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
resolve(idOrInstance: any): any {
|
|
24
|
+
if (idOrInstance instanceof this.holds) return idOrInstance;
|
|
25
|
+
if (typeof idOrInstance === 'string') return this.cache.get(idOrInstance) ?? null;
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
resolveId(idOrInstance: any): any {
|
|
30
|
+
if (idOrInstance instanceof this.holds) return (idOrInstance as any).id;
|
|
31
|
+
if (typeof idOrInstance === 'string') return idOrInstance;
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
override valueOf(): any {
|
|
36
|
+
return this.cache;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { Collection } from '@ovencord/collection';
|
|
2
|
+
import { makeURLSearchParams } from '@ovencord/rest';
|
|
3
|
+
import { Routes, EntitlementOwnerType } from 'discord-api-types/v10';
|
|
4
|
+
import { ErrorCodes, DiscordjsTypeError } from '../errors/index.js';
|
|
5
|
+
import { Entitlement } from '../structures/Entitlement.js';
|
|
6
|
+
import { resolveSKUId } from '../util/Util.js';
|
|
7
|
+
import { CachedManager } from './CachedManager.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Manages API methods for entitlements and stores their cache.
|
|
11
|
+
*
|
|
12
|
+
* @extends {CachedManager}
|
|
13
|
+
*/
|
|
14
|
+
export class EntitlementManager extends CachedManager {
|
|
15
|
+
public client: any;
|
|
16
|
+
constructor(client, iterable) {
|
|
17
|
+
super(client, Entitlement, iterable);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The cache of this manager
|
|
22
|
+
*
|
|
23
|
+
* @type {Collection<Snowflake, Entitlement>}
|
|
24
|
+
* @name EntitlementManager#cache
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Data that resolves to give an Entitlement object. This can be:
|
|
29
|
+
* - An Entitlement object
|
|
30
|
+
* - A Snowflake
|
|
31
|
+
*
|
|
32
|
+
* @typedef {Entitlement|Snowflake} EntitlementResolvable
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Data that resolves to give a SKU object. This can be:
|
|
37
|
+
* - A SKU object
|
|
38
|
+
* - A Snowflake
|
|
39
|
+
*
|
|
40
|
+
* @typedef {SKU|Snowflake} SKUResolvable
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Options used to fetch an entitlement
|
|
45
|
+
*
|
|
46
|
+
* @typedef {BaseFetchOptions} FetchEntitlementOptions
|
|
47
|
+
* @property {EntitlementResolvable} entitlement The entitlement to fetch
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Options used to fetch entitlements
|
|
52
|
+
*
|
|
53
|
+
* @typedef {Object} FetchEntitlementsOptions
|
|
54
|
+
* @property {number} [limit] The maximum number of entitlements to fetch
|
|
55
|
+
* @property {GuildResolvable} [guild] The guild to fetch entitlements for
|
|
56
|
+
* @property {UserResolvable} [user] The user to fetch entitlements for
|
|
57
|
+
* @property {SKUResolvable[]} [skus] The SKUs to fetch entitlements for
|
|
58
|
+
* @property {boolean} [excludeEnded] Whether to exclude ended entitlements
|
|
59
|
+
* @property {boolean} [excludeDeleted] Whether to exclude deleted entitlements
|
|
60
|
+
* @property {boolean} [cache=true] Whether to cache the fetched entitlements
|
|
61
|
+
* @property {Snowflake} [before] Consider only entitlements before this entitlement id
|
|
62
|
+
* @property {Snowflake} [after] Consider only entitlements after this entitlement id
|
|
63
|
+
* <warn>If both `before` and `after` are provided, only `before` is respected</warn>
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Fetches entitlements for this application
|
|
68
|
+
*
|
|
69
|
+
* @param {EntitlementResolvable|FetchEntitlementOptions|FetchEntitlementsOptions} [options]
|
|
70
|
+
* Options for fetching the entitlements
|
|
71
|
+
* @returns {Promise<Entitlement|Collection<Snowflake, Entitlement>>}
|
|
72
|
+
*/
|
|
73
|
+
async fetch(options) {
|
|
74
|
+
if (!options) return this._fetchMany(options);
|
|
75
|
+
const { entitlement, cache, force } = options;
|
|
76
|
+
const resolvedEntitlement = this.resolveId(entitlement ?? options);
|
|
77
|
+
|
|
78
|
+
if (resolvedEntitlement) {
|
|
79
|
+
return this._fetchSingle({ entitlement: resolvedEntitlement, cache, force });
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return this._fetchMany(options);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
async _fetchSingle({ entitlement, cache, force = false }) {
|
|
86
|
+
if (!force) {
|
|
87
|
+
const existing = this.cache.get(entitlement);
|
|
88
|
+
|
|
89
|
+
if (existing) {
|
|
90
|
+
return existing;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const data = await this.client.rest.get(Routes.entitlement(this.client.application.id, entitlement));
|
|
95
|
+
return this._add(data, cache);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async _fetchMany({ limit, guild, user, skus, excludeEnded, excludeDeleted, cache, before, after } = {}) {
|
|
99
|
+
const query = makeURLSearchParams({
|
|
100
|
+
limit,
|
|
101
|
+
guild_id: guild && this.client.guilds.resolveId(guild),
|
|
102
|
+
user_id: user && this.client.users.resolveId(user),
|
|
103
|
+
sku_ids: skus?.map(sku => resolveSKUId(sku)).join(','),
|
|
104
|
+
exclude_ended: excludeEnded,
|
|
105
|
+
exclude_deleted: excludeDeleted,
|
|
106
|
+
before,
|
|
107
|
+
after,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
const entitlements = await this.client.rest.get(Routes.entitlements(this.client.application.id), { query });
|
|
111
|
+
|
|
112
|
+
return entitlements.reduce(
|
|
113
|
+
(coll, entitlement) => coll.set(entitlement.id, this._add(entitlement, cache)),
|
|
114
|
+
new Collection(),
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Options used to create a test entitlement
|
|
120
|
+
* <info>Either `guild` or `user` must be provided, but not both</info>
|
|
121
|
+
*
|
|
122
|
+
* @typedef {Object} EntitlementCreateOptions
|
|
123
|
+
* @property {SKUResolvable} sku The id of the SKU to create the entitlement for
|
|
124
|
+
* @property {GuildResolvable} [guild] The guild to create the entitlement for
|
|
125
|
+
* @property {UserResolvable} [user] The user to create the entitlement for
|
|
126
|
+
*/
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Creates a test entitlement
|
|
130
|
+
*
|
|
131
|
+
* @param {EntitlementCreateOptions} options Options for creating the test entitlement
|
|
132
|
+
* @returns {Promise<Entitlement>}
|
|
133
|
+
*/
|
|
134
|
+
async createTest({ sku, guild, user }) {
|
|
135
|
+
const skuId = resolveSKUId(sku);
|
|
136
|
+
if (!skuId) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'sku', 'SKUResolvable');
|
|
137
|
+
|
|
138
|
+
if ((guild && user) || (!guild && !user)) {
|
|
139
|
+
throw new DiscordjsTypeError(ErrorCodes.EntitlementCreateInvalidOwner);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const resolved = guild ? this.client.guilds.resolveId(guild) : this.client.users.resolveId(user);
|
|
143
|
+
if (!resolved) {
|
|
144
|
+
const name = guild ? 'guild' : 'user';
|
|
145
|
+
const type = guild ? 'GuildResolvable' : 'UserResolvable';
|
|
146
|
+
throw new DiscordjsTypeError(ErrorCodes.InvalidType, name, type);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const entitlement = await this.client.rest.post(Routes.entitlements(this.client.application.id), {
|
|
150
|
+
body: {
|
|
151
|
+
sku_id: skuId,
|
|
152
|
+
owner_id: resolved,
|
|
153
|
+
owner_type: guild ? EntitlementOwnerType.Guild : EntitlementOwnerType.User,
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
return new Entitlement(this.client, entitlement);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Deletes a test entitlement
|
|
161
|
+
*
|
|
162
|
+
* @param {EntitlementResolvable} entitlement The entitlement to delete
|
|
163
|
+
* @returns {Promise<void>}
|
|
164
|
+
*/
|
|
165
|
+
async deleteTest(entitlement) {
|
|
166
|
+
const resolved = this.resolveId(entitlement);
|
|
167
|
+
if (!resolved) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'entitlement', 'EntitlementResolvable');
|
|
168
|
+
|
|
169
|
+
await this.client.rest.delete(Routes.entitlement(this.client.application.id, resolved));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Marks an entitlement as consumed
|
|
174
|
+
* <info>Only available for One-Time Purchase consumable SKUs.</info>
|
|
175
|
+
*
|
|
176
|
+
* @param {Snowflake} entitlementId The id of the entitlement to consume
|
|
177
|
+
* @returns {Promise<void>}
|
|
178
|
+
*/
|
|
179
|
+
async consume(entitlementId) {
|
|
180
|
+
await this.client.rest.post(Routes.consumeEntitlement(this.client.application.id, entitlementId));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ApplicationCommandManager } from './ApplicationCommandManager.js';
|
|
2
|
+
import { ApplicationCommandPermissionsManager } from './ApplicationCommandPermissionsManager.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* An extension for guild-specific application commands.
|
|
6
|
+
*
|
|
7
|
+
* @extends {ApplicationCommandManager}
|
|
8
|
+
*/
|
|
9
|
+
export class GuildApplicationCommandManager extends ApplicationCommandManager {
|
|
10
|
+
public guild: any;
|
|
11
|
+
public permissions: any;
|
|
12
|
+
constructor(guild, iterable) {
|
|
13
|
+
super(guild.client, iterable);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The guild that this manager belongs to
|
|
17
|
+
*
|
|
18
|
+
* @type {Guild}
|
|
19
|
+
*/
|
|
20
|
+
this.guild = guild;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The manager for permissions of arbitrary commands on this guild
|
|
24
|
+
*
|
|
25
|
+
* @type {ApplicationCommandPermissionsManager}
|
|
26
|
+
*/
|
|
27
|
+
this.permissions = new ApplicationCommandPermissionsManager(this);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { Collection } from '@ovencord/collection';
|
|
2
|
+
import { makeURLSearchParams } from '@ovencord/rest';
|
|
3
|
+
import { Routes } from 'discord-api-types/v10';
|
|
4
|
+
import { DiscordjsTypeError, DiscordjsError, ErrorCodes } from '../errors/index.js';
|
|
5
|
+
import { GuildBan } from '../structures/GuildBan.js';
|
|
6
|
+
import { CachedManager } from './CachedManager.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Manages API methods for guild bans and stores their cache.
|
|
10
|
+
*
|
|
11
|
+
* @extends {CachedManager}
|
|
12
|
+
*/
|
|
13
|
+
export class GuildBanManager extends CachedManager {
|
|
14
|
+
public guild: any;
|
|
15
|
+
constructor(guild, iterable) {
|
|
16
|
+
super(guild.client, GuildBan, iterable);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The guild this Manager belongs to
|
|
20
|
+
*
|
|
21
|
+
* @type {Guild}
|
|
22
|
+
*/
|
|
23
|
+
this.guild = guild;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The cache of this Manager
|
|
28
|
+
*
|
|
29
|
+
* @type {Collection<Snowflake, GuildBan>}
|
|
30
|
+
* @name GuildBanManager#cache
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
_add(data, cache) {
|
|
34
|
+
return super._add(data, cache, { id: data.user.id, extras: [this.guild] });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Data that resolves to give a GuildBan object. This can be:
|
|
39
|
+
* - A GuildBan object
|
|
40
|
+
* - A User resolvable
|
|
41
|
+
*
|
|
42
|
+
* @typedef {GuildBan|UserResolvable} GuildBanResolvable
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Resolves a GuildBanResolvable to a GuildBan object.
|
|
47
|
+
*
|
|
48
|
+
* @param {GuildBanResolvable} ban The ban that is in the guild
|
|
49
|
+
* @returns {?GuildBan}
|
|
50
|
+
*/
|
|
51
|
+
resolve(ban) {
|
|
52
|
+
return super.resolve(ban) ?? super.resolve(this.client.users.resolveId(ban));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Options used to fetch a single ban from a guild.
|
|
57
|
+
*
|
|
58
|
+
* @typedef {BaseFetchOptions} FetchBanOptions
|
|
59
|
+
* @property {UserResolvable} user The ban to fetch
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Options used to fetch multiple bans from a guild.
|
|
64
|
+
*
|
|
65
|
+
* @typedef {Object} FetchBansOptions
|
|
66
|
+
* @property {number} [limit] The maximum number of bans to return
|
|
67
|
+
* @property {Snowflake} [before] Consider only bans before this id
|
|
68
|
+
* @property {Snowflake} [after] Consider only bans after this id
|
|
69
|
+
* @property {boolean} [cache] Whether to cache the fetched bans
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Fetches ban(s) from Discord.
|
|
74
|
+
*
|
|
75
|
+
* @param {UserResolvable|FetchBanOptions|FetchBansOptions} [options] Options for fetching guild ban(s)
|
|
76
|
+
* @returns {Promise<GuildBan|Collection<Snowflake, GuildBan>>}
|
|
77
|
+
* @example
|
|
78
|
+
* // Fetch multiple bans from a guild
|
|
79
|
+
* guild.bans.fetch()
|
|
80
|
+
* .then(console.log)
|
|
81
|
+
* .catch(console.error);
|
|
82
|
+
* @example
|
|
83
|
+
* // Fetch a maximum of 5 bans from a guild without caching
|
|
84
|
+
* guild.bans.fetch({ limit: 5, cache: false })
|
|
85
|
+
* .then(console.log)
|
|
86
|
+
* .catch(console.error);
|
|
87
|
+
* @example
|
|
88
|
+
* // Fetch a single ban
|
|
89
|
+
* guild.bans.fetch('351871113346809860')
|
|
90
|
+
* .then(console.log)
|
|
91
|
+
* .catch(console.error);
|
|
92
|
+
* @example
|
|
93
|
+
* // Fetch a single ban without checking cache
|
|
94
|
+
* guild.bans.fetch({ user, force: true })
|
|
95
|
+
* .then(console.log)
|
|
96
|
+
* .catch(console.error)
|
|
97
|
+
* @example
|
|
98
|
+
* // Fetch a single ban without caching
|
|
99
|
+
* guild.bans.fetch({ user, cache: false })
|
|
100
|
+
* .then(console.log)
|
|
101
|
+
* .catch(console.error);
|
|
102
|
+
*/
|
|
103
|
+
async fetch(options) {
|
|
104
|
+
if (!options) return this._fetchMany();
|
|
105
|
+
const { user, cache, force, limit, before, after } = options;
|
|
106
|
+
const resolvedUser = this.client.users.resolveId(user ?? options);
|
|
107
|
+
if (resolvedUser) return this._fetchSingle({ user: resolvedUser, cache, force });
|
|
108
|
+
|
|
109
|
+
if (!before && !after && !limit && cache === undefined) {
|
|
110
|
+
throw new DiscordjsError(ErrorCodes.FetchBanResolveId);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return this._fetchMany(options);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async _fetchSingle({ user, cache, force = false }) {
|
|
117
|
+
if (!force) {
|
|
118
|
+
const existing = this.cache.get(user);
|
|
119
|
+
if (existing && !existing.partial) return existing;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const data = await this.client.rest.get(Routes.guildBan(this.guild.id, user));
|
|
123
|
+
return this._add(data, cache);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
async _fetchMany({ cache, ...apiOptions } = {}) {
|
|
127
|
+
const data = await this.client.rest.get(Routes.guildBans(this.guild.id), {
|
|
128
|
+
query: makeURLSearchParams(apiOptions),
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
return data.reduce((col, ban) => col.set(ban.user.id, this._add(ban, cache)), new Collection());
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Options used to ban a user from a guild.
|
|
136
|
+
*
|
|
137
|
+
* @typedef {Object} BanOptions
|
|
138
|
+
* @property {number} [deleteMessageSeconds] Number of seconds of messages to delete,
|
|
139
|
+
* must be between 0 and 604800 (7 days), inclusive
|
|
140
|
+
* @property {string} [reason] The reason for the ban
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Bans a user from the guild.
|
|
145
|
+
*
|
|
146
|
+
* @param {UserResolvable} user The user to ban
|
|
147
|
+
* @param {BanOptions} [options={}] Options for the ban
|
|
148
|
+
* @returns {Promise<void>}
|
|
149
|
+
* @example
|
|
150
|
+
* // Ban a user by id (or with a user/guild member object)
|
|
151
|
+
* await guild.bans.create('84484653687267328');
|
|
152
|
+
*/
|
|
153
|
+
async create(user, options = {}) {
|
|
154
|
+
if (typeof options !== 'object') throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'options', 'object', true);
|
|
155
|
+
const id = this.client.users.resolveId(user);
|
|
156
|
+
if (!id) throw new DiscordjsError(ErrorCodes.BanResolveId, true);
|
|
157
|
+
|
|
158
|
+
await this.client.rest.put(Routes.guildBan(this.guild.id, id), {
|
|
159
|
+
body: {
|
|
160
|
+
delete_message_seconds: options.deleteMessageSeconds,
|
|
161
|
+
},
|
|
162
|
+
reason: options.reason,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Unbans a user from the guild.
|
|
168
|
+
*
|
|
169
|
+
* @param {UserResolvable} user The user to unban
|
|
170
|
+
* @param {string} [reason] Reason for unbanning user
|
|
171
|
+
* @returns {Promise<void>}
|
|
172
|
+
* @example
|
|
173
|
+
* // Unban a user by id (or with a user/guild member object)
|
|
174
|
+
* await guild.bans.remove('84484653687267328');
|
|
175
|
+
*/
|
|
176
|
+
async remove(user, reason) {
|
|
177
|
+
const id = this.client.users.resolveId(user);
|
|
178
|
+
if (!id) throw new DiscordjsError(ErrorCodes.BanResolveId);
|
|
179
|
+
await this.client.rest.delete(Routes.guildBan(this.guild.id, id), { reason });
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Result of bulk banning users from a guild.
|
|
184
|
+
*
|
|
185
|
+
* @typedef {Object} BulkBanResult
|
|
186
|
+
* @property {Snowflake[]} bannedUsers IDs of the banned users
|
|
187
|
+
* @property {Snowflake[]} failedUsers IDs of the users that could not be banned or were already banned
|
|
188
|
+
*/
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Bulk ban users from a guild, and optionally delete previous messages sent by them.
|
|
192
|
+
*
|
|
193
|
+
* @param {Collection<Snowflake, UserResolvable>|UserResolvable[]} users The users to ban
|
|
194
|
+
* @param {BanOptions} [options] The options for bulk banning users
|
|
195
|
+
* @returns {Promise<BulkBanResult>} Returns an object with `bannedUsers` key containing the IDs of the banned users
|
|
196
|
+
* and the key `failedUsers` with the IDs that could not be banned or were already banned.
|
|
197
|
+
* @example
|
|
198
|
+
* // Bulk ban users by ids (or with user/guild member objects) and delete all their messages from the past 7 days
|
|
199
|
+
* guild.bans.bulkCreate(['84484653687267328'], { deleteMessageSeconds: 7 * 24 * 60 * 60 })
|
|
200
|
+
* .then(result => {
|
|
201
|
+
* console.log(`Banned ${result.bannedUsers.length} users, failed to ban ${result.failedUsers.length} users.`)
|
|
202
|
+
* })
|
|
203
|
+
* .catch(console.error);
|
|
204
|
+
*/
|
|
205
|
+
async bulkCreate(users, options = {}) {
|
|
206
|
+
if (!users || !(Array.isArray(users) || users instanceof Collection)) {
|
|
207
|
+
throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'users', 'Array or Collection of UserResolvable', true);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (typeof options !== 'object') throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'options', 'object', true);
|
|
211
|
+
|
|
212
|
+
const userIds = users.map(user => this.client.users.resolveId(user));
|
|
213
|
+
if (userIds.length === 0) throw new DiscordjsError(ErrorCodes.BulkBanUsersOptionEmpty);
|
|
214
|
+
|
|
215
|
+
const result = await this.client.rest.post(Routes.guildBulkBan(this.guild.id), {
|
|
216
|
+
body: { delete_message_seconds: options.deleteMessageSeconds, user_ids: userIds },
|
|
217
|
+
reason: options.reason,
|
|
218
|
+
});
|
|
219
|
+
return { bannedUsers: result.banned_users, failedUsers: result.failed_users };
|
|
220
|
+
}
|
|
221
|
+
}
|