import { APIApplicationCommandInteractionDataBasicOption, ModalSubmitComponent, APIApplicationCommandAutocompleteInteraction, ApplicationCommandOptionType, APIChatInputApplicationCommandInteraction, APIApplicationCommandInteractionDataOption, APIInteractionDataResolvedChannel, APIUser, APIInteractionDataResolvedGuildMember, APIRole, APIAttachment, APIContextMenuInteraction, APIMessage, APIModalSubmitInteraction } from 'discord-api-types/v10'; /** * Namespace containing limits related to Discord channels. */ declare const ChannelLimits: { /** * Maximum characters allowed in a channel description. */ readonly MaximumDescriptionLength: 1024; /** * Maximum characters allowed in a channel name. */ readonly MaximumNameLength: 100; /** * Maximum viewers allowed per screen share. * @deprecated Use `VoiceChannelLimits.MaximumViewersPerScreenShare` instead. */ readonly MaximumViewersPerScreenShare: 50; }; /** * Namespace containing limits related to Discord voice channels. */ declare const VoiceChannelLimits: { /** * Maximum viewers allowed per screen share. */ MaximumViewersPerScreenShare: number; /** * Maximum user limit of voice channel. */ MaximumUserLimit: number; }; /** * Namespace containing limits related to Discord stage channels. */ declare const StageChannelLimits: { /** * Maximum user limit of stage channel. */ MaximumUserLimit: number; }; /** * Namespace containing limits related to Discord text channels. */ declare const TextChannelLimits: { /** * Maximum pins allowed in a text channel. */ readonly MaximumMessagePins: 50; }; /** * Namespace containing limits related to Discord threads. */ declare const ThreadLimits: { /** * Minimum number of threads to return from the threads API. */ readonly MinimumThreadsToFetch: 1; /** * Maximum number of threads to return from the threads API. */ readonly MaximumThreadsToFetch: 100; }; /** * Namespace containing limits related to Discord embeds. */ declare const EmbedLimits: { /** * Maximum characters allowed in the author field of an embed. */ readonly MaximumAuthorNameLength: 256; /** * Maximum characters allowed in an embed description. */ readonly MaximumDescriptionLength: 4096; /** * Maximum characters allowed in the name of a field in an embed. */ readonly MaximumFieldNameLength: 256; /** * Maximum fields allowed in an embed. */ readonly MaximumFields: 25; /** * Maximum characters allowed in the value of a field in an embed. */ readonly MaximumFieldValueLength: 1024; /** * Maximum characters allowed in a footer of an embed. */ readonly MaximumFooterLength: 2048; /** * Maximum characters allowed in the title of an embed. */ readonly MaximumTitleLength: 256; /** * Maximum characters allowed in an embed, in total. */ readonly MaximumTotalCharacters: 6000; }; /** * Namespace containing limits related to Discord emojis. */ declare const EmojiLimits: { /** * Maximum characters allowed in a custom guild emoji. */ readonly MaximumEmojiNameLength: 32; /** * Maximum size allowed for a custom guild emoji. * Size is in bytes, and corresponds to 256KB. */ readonly MaximumEmojiSize: 256000; }; /** * Namespace containing limits related to Discord guilds. */ declare const GuildLimits: { /** * Maximum channels allowed per guild, including category channels. */ readonly MaximumChannels: 500; /** * Maximum roles allowed in a guild. */ readonly MaximumRoles: 250; /** * Maximum scheduled or active events allowed in a guild. */ readonly MaximumScheduledOrActiveEvents: 100; /** * Minimum number of user guilds to return from the user guilds API. */ readonly MinimumUserGuildsToFetch: 1; /** * Maximum number of user guilds to return from the user guilds API. */ readonly MaximumUserGuildsToFetch: 200; /** * Maximum static emojis allowed in a guild. */ readonly MaximumStaticEmojis: 50; /** * Maximum animated emojis allowed in a guild. */ readonly MaximumAnimatedEmojis: 50; /** * Maximum emojis (static and animated) allowed in a guild. */ readonly MaximumEmojis: 100; /** * Maximum stickers allowed in a guild. */ readonly MaximumStickers: 5; }; /** * Namespace containing limits related to premium Discord guilds. */ declare const PremiumGuildLimits: { readonly TierOne: { /** * Maximum static emojis allowed in a guild. */ readonly MaximumStaticEmojis: 100; /** * Maximum animated emojis allowed in a guild. */ readonly MaximumAnimatedEmojis: 100; /** * Maximum emojis (static and animated) allowed in a guild. */ readonly MaximumEmojis: 200; /** * Maximum stickers allowed in a guild. */ readonly MaximumStickers: 15; }; readonly TierTwo: { /** * Maximum static emojis allowed in a guild. */ readonly MaximumStaticEmojis: 150; /** * Maximum animated emojis allowed in a guild. */ readonly MaximumAnimatedEmojis: 150; /** * Maximum emojis (static and animated) allowed in a guild. */ readonly MaximumEmojis: 300; /** * Maximum stickers allowed in a guild. */ readonly MaximumStickers: 30; }; readonly TierThree: { /** * Maximum static emojis allowed in a guild. */ readonly MaximumStaticEmojis: 250; /** * Maximum animated emojis allowed in a guild. */ readonly MaximumAnimatedEmojis: 250; /** * Maximum emojis (static and animated) allowed in a guild. */ readonly MaximumEmojis: 500; /** * Maximum stickers allowed in a guild. */ readonly MaximumStickers: 60; }; }; /** * Namespace containing limits related to Discord guild scheduled events. */ declare const GuildScheduledEventLimits: { /** * Maximum number of users to return from the guild scheduled event users API. */ readonly MaximumUsersToFetch: 100; }; /** * Namespace containing limits related to Discord guild members. */ declare const GuildMemberLimits: { /** * Maximum characters allowed in the display name of a guild member. */ readonly MaximumDisplayNameLength: 32; /** * Minimum number of members to return from the guild members API. */ readonly MinimumMembersToFetch: 1; /** * Maximum number of members to return from the guild members API. */ readonly MaximumMembersToFetch: 1000; }; /** * Namespace containing limits related to Discord guild bans. */ declare const GuildBansLimits: { /** * Minimum number of bans to return from the guild bans API. */ readonly MinimumBansToFetch: 1; /** * Maximum number of bans to return from the guild bans API. */ readonly MaximumBansToFetch: 1000; }; /** * Namespace containing limits related to Discord interactions. */ declare const InteractionLimits: { /** * Maximum buttons allowed in a single action row. */ readonly MaximumButtonsPerActionRow: 5; /** * Maximum select menus allowed in a single action row. */ readonly MaximumSelectMenusPerActionRow: 1; /** * Maximum text inputs allowed in a single action row. */ readonly MaximumTextInputsPerActionRow: 1; /** * Maximum options allowed in a single select menu. */ readonly MaximumOptionsInSelectMenus: 25; }; /** * Namespace containing limits related to Discord application commands (slash commands). */ declare const ApplicationCommandLimits: { /** * Maximum characters allowed in an application command name. */ readonly MaximumNameCharacters: 32; /** * Maximum characters allowed in an application command description. */ readonly MaximumDescriptionCharacters: 100; /** * Maximum options allowed in an application command. */ readonly MaximumOptionsLength: 25; /** * Maximum combined characters allowed in the name, description, and value properties of an application command, its options (including subcommands and groups), and choices. */ readonly MaximumCombinedCharacters: 4000; }; /** * Namespace containing limits related to Choices of Discord Application Commands. */ declare const ApplicationCommandOptionLimits: { /** * Maximum characters allowed in the name of an option of an application command. */ readonly MaximumNameCharacters: 32; /** * Maximum characters allowed in the description of an option of an application command. */ readonly MaximumDescriptionCharacters: 100; /** * Maximum length of choices allowed in the option of an application command. */ readonly MaximumChoicesLength: 25; /** * Maximum length of string allowed in the string option of an application command. */ readonly MaximumStringLength: 6000; }; /** * Namespace containing limits related to Permissions of Discord Application Commands. */ declare const ApplicationCommandPermissionLimits: { /** * Maximum length of permissions allowed in the option of an application command. */ readonly MaximumPermissionsLength: 100; }; /** * Namespace containing limits related to Message Buttons. */ declare const ButtonLimits: { /** * Maximum characters allowed in a button label. */ readonly MaximumLabelCharacters: 80; /** * Maximum characters allowed in a button custom ID. */ readonly MaximumCustomIdCharacters: 100; }; /** * Namespace containing limits related to Select Menus. */ declare const SelectMenuLimits: { /** * Maximum characters allowed in a select menu custom ID. */ readonly MaximumCustomIdCharacters: 100; /** * Maximum amount of options allowed in a select menu. */ readonly MaximumOptionsLength: 25; /** * Maximum characters allowed in a select menu placeholder. */ readonly MaximumPlaceholderCharacters: 150; /** * Maximum "minimum" values allowed in a select menu. */ readonly MaximumMinValuesSize: 25; /** * Maximum "maximum" values allowed in a select menu. */ readonly MaximumMaxValuesSize: 25; /** * Maximum characters allowed in a select menu option's name. */ readonly MaximumLengthOfNameOfOption: 100; /** * Maximum characters allowed in a select menu option's description. */ readonly MaximumLengthOfDescriptionOfOption: 100; /** * Maximum characters allowed in a select menu option's value. */ readonly MaximumLengthOfValueOfOption: 100; }; /** * Namespace containing limits related to Discord messages. */ declare const MessageLimits: { /** * Maximum embeds allowed in a single message. */ readonly MaximumEmbeds: 10; /** * Maximum action rows allowed in a single message. */ readonly MaximumActionRows: 5; /** * Maximum characters allowed in a single message for a user. */ readonly MaximumLength: 2000; /** * Maximum characters allowed in a single message for a nitro user. */ readonly MaximumNitroLength: 4000; /** * Maximum numbers of reactions allowed for a message. */ readonly MaximumReactions: 20; /** * Maximum upload size for a free user in a guild of tier 1 or below, or in DMs. * Size is in bytes, and corresponds to 25MB. */ readonly MaximumUploadSize: 25000000; /** * Maximum upload size for a Nitro Basic user, in any guild or in DMs. * Size is in bytes, and corresponds to 50MB. */ readonly MaximumNitroBasicUploadSize: 50000000; /** * Maximum upload size for a Nitro user, in any guild or in DMs. * Size is in bytes, and corresponds to 500MB. */ readonly MaximumNitroUploadSize: 500000000; /** * Maximum upload size for a free user for all different boost levels available in a guild. * Sizes are in bytes, and correspond to 25MB, 25MB, 50MB, and 100MB. */ readonly MaximumUploadSizeInGuild: readonly [25000000, 25000000, 50000000, 100000000]; /** * Minimum number of messages to return from the channel messages API. */ readonly MinimumMessagesToFetch: 1; /** * Maximum number of messages to return from the channel messages API. */ readonly MaximumMessagesToFetch: 100; /** * Maximum request size when sending a messages. * Size is in bytes, and corresponds to 25MB. */ readonly MaximumRequestSize: 25000000; /** * Minimum number of messages to delete in a single bulk delete request. */ readonly MinimumMessagesToBulkDelete: 2; /** * Maximum number of messages to delete in a single bulk delete request. */ readonly MaximumMessagesToBulkDelete: 100; }; /** * Namespace containing limits related to Discord message reactions. */ declare const ReactionLimits: { /** * Minimum number of reactions to fetch from the message reactions API. */ MinimumReactionToFetch: number; /** * Maximum number of reactions to fetch from the message reactions API. */ MaximumReactionsToFetch: number; }; /** * Namespace containing limits related to built-in moderation features. */ declare const ModerationLimits: { /** * Maximum duration of a guild timeout, in seconds (corresponds to 28 days). */ readonly MaximumTimeoutDuration: 2419200; }; /** * Namespace containing limits related to Discord roles. */ declare const RoleLimits: { /** * Maximum characters allowed in a role name. */ readonly MaximumNameLength: 100; }; /** * Namespace containing limits related to Discord users and Direct Messages. */ declare const UserLimits: { /** * Maximum numbers of users in a DM group. */ readonly MaximumUsersPerDMGroup: 10; /** * Maximum characters allowed in a user's biography (the "About Me" section). */ readonly MaximumBiographyLength: 190; }; /** * Namespace container limits related to Discord autocomplete interactions. */ declare const AutoCompleteLimits: { /** * Maximum options allowed in a single autocomplete response. */ readonly MaximumAmountOfOptions: 25; /** * Maximum characters allowed in a select menu option's name. */ readonly MaximumLengthOfNameOfOption: 100; }; /** * Namespace containing limits related to Discord Modals. */ declare const ModalLimits: { /** * Maximum characters allowed in a modal custom ID. */ readonly MaximumCustomIdCharacters: 100; /** * Maximum characters allowed in a modal title. */ readonly MaximumTitleCharacters: 45; /** * Maximum components allowed in a modal. */ readonly MaximumComponents: 5; }; /** * Namespace containing limits related to Discord Modal Text Input component. */ declare const TextInputLimits: { /** * Maximum characters allowed in a text input custom ID. */ readonly MaximumCustomIdCharacters: 100; /** * Maximum characters allowed in a text input label. */ readonly MaximumLabelCharacters: 45; /** * Maximum characters allowed in a text input placeholder. */ readonly MaximumPlaceholderCharacters: 100; /** * Maximum characters allowed in a text input value. */ readonly MaximumValueCharacters: 4000; }; /** * Namespace containing limits related to Discord Application Role Connections. */ declare const ApplicationRoleConnectionLimits: { /** * Maximum application role connection metadata records an application can have. */ readonly MaximumMetadataRecords: 5; /** * Maximum characters allowed in metadata values. */ readonly MaximumMetadataValueLength: 100; /** * Maximum characters allowed in a platform name. */ readonly MaximumPlatformNameLength: 50; /** * Maximum characters allowed in a platform username. */ readonly MaximumPlatformUsernameLength: 100; }; /** * Namespace containing limits related to Discord Guild Audit Logs. */ declare const GuildAuditLogsLimits: { /** * Minimum number of entries to return from the guild audit log API. */ readonly MinimumEntriesToFetch: 1; /** * Maximum number of entries to return from the guild audit log API. */ readonly MaximumEntriesToFetch: 100; }; /** * Namespace containing limits related to Discord Auto Moderation Rules. */ declare const AutoModerationRuleLimits: { /** * Maximum number of exempt roles a rule can have. */ readonly MaximumExemptRoles: 20; /** * Maximum number of exempt channels a rule can have. */ readonly MaximumExemptChannels: 50; }; /** * Namespace containing limits related to Discord Auto Moderation Triggers. */ declare const TriggerTypeLimits: { /** * Maximum number of keyword triggers a guild can have. */ readonly MaximumKeywordTriggersPerGuild: 6; /** * Maximum number of mention spam triggers a guild can have. */ readonly MaximumSpamTriggersPerGuild: 1; /** * Maximum number of keyword triggers a channel can have. */ readonly MaximumKeywordPresetTriggersPerChannel: 1; /** * Maximum number of mention spam triggers a channel can have. */ readonly MaximumMentionSpamTriggersPerChannel: 1; }; /** * Namespace containing limits related to Discord Auto Moderation Trigger Metadata. */ declare const TriggerMetadataLimits: { /** * Maximum number of substrings which will be searched for in content. */ readonly MaximumKeywordFilters: 1000; /** * Maximum number of characters allowed in a keyword filter. */ readonly MaximumKeywordFilterLength: 60; /** * Maximum number of regular expression patterns which will be matched against content. */ readonly MaximumRegexPatterns: 10; /** * Maximum number of characters allowed in a regular expression pattern. */ readonly MaximumCharactersPerRegexPattern: 260; /** * Maximum number of substrings which should not trigger the keyword rule. */ readonly MaximumKeywordAllowListLength: 100; /** * Maximum characters per keyword that should not trigger the keyword rule. */ readonly MaximumKeywordAllowListKeywordLength: 60; /** * Maximum characters per keyword should not trigger the keyword preset rule. */ readonly MaximumKeywordPresetAllowListKeywordPresetLength: 60; /** * Maximum number of substrings which should not trigger the keyword preset rule. */ readonly MaximumKeywordPresetAllowListLength: 1000; /** * Maximum number of unique role and user mentions allowed per message. */ readonly MaximumMentionSpamTotalMentions: 50; }; /** * Namespace containing limits related to Discord Auto Moderation Action Metadata. */ declare const ActionMetadataLimits: { /** * Maximum timeout duration in seconds. */ readonly MaximumTimeoutDurationSeconds: 2419200; /** * Maximum number of characters allowed in a custom block message. */ readonly MaximumCustomBlockMessageLength: 150; }; /** * Namespace containing limits related to Discord Message Allowed Mentions. */ declare const AllowedMentionsLimits: { /** * Maximum number of users allowed in an allowed mentions object. */ readonly MaximumUsers: 100; /** * Maximum number of roles allowed in an allowed mentions object. */ readonly MaximumRoles: 100; }; /** * Namespace containing limits related to Discord Channel Invites. */ declare const ChannelInviteLimits: { /** * Maximum age of an invite in seconds. */ readonly MaximumAgeSeconds: 604800; /** * Maximum number of uses allowed for an invite. */ readonly MaximumUses: 100; }; /** * Namespace containing limits related to Discord Guild Integrations. */ declare const GuildIntegrationLimits: { /** * Maximum number of integrations returned from the guild integrations API. Needs a more description name than "MaximumIntegrations". */ readonly MaximumIntegrationsToFetch: 50; }; /** * Namespace containing limits related to Discord Stickers. */ declare const StickerLimits: { /** * Maximum number of characters allowed in the autocomplete/suggestion tags for the sticker. */ MaximumTagsLength: number; /** * Maximum size allowed for a sticker. * Size is in bytes, and corresponds to 512KB. */ MaximumStickerSize: number; }; /** * Regex that can capture the ID in Discord Channel mentions * @raw `/^<#(?\d{17,20})>$/` * @remark Capture group 1 is the ID of the channel. It is named `id`. */ declare const ChannelMentionRegex: RegExp; /** * Regex that can capture the channel and message IDs in a channelId-messageId pattern * This pattern can be found when you hold Shift and hover over a message, and click the "ID" button * @raw `/^(?\d{17,20})-(?\d{17,20})$/` * @remark Capture group 1 is the ID of the channel, named `channelId`. * @remark Capture group 2 is the ID of the message, named `messageId`. */ declare const ChannelMessageRegex: RegExp; /** * Regex that matches links on the known Discord host names * @raw `/(?\w+)\.?(?dis(?:cord)?(?:app|merch|status)?)\.(?com|g(?:d|g|ift)|(?:de(?:sign|v))|media|new|store|net)/i` * @remark The regex is case insensitive * @remark Capture group 1 is the subdomain for this URL. It is named `subdomain`. * @remark Capture group 2 is the hostname for this URL, primarily `discord` but can also be `discordmerch`, `discordstatus`, `dis`, and `discordapp`. It is named `hostname`. * @remark Capture group 3 is the Top-Level Domain *without* `.`. It is named `tld`. */ declare const DiscordHostnameRegex: RegExp; /** * Regex that can can capture the code of Discord invite links * @raw `/(?:^|\b)discord(?:(?:app)?\.com\/invite|\.gg(?:\/invite)?)\/(?[\w-]{2,255})(?:$|\b)/gi` * @remark Capture group 1 is the invite URL's unique code. It is named `code`. */ declare const DiscordInviteLinkRegex: RegExp; /** * Regex that can capture the ID of any animated or non-animated custom Discord emoji * @raw `/^(?:<(?a)?:(?\w{2,32}):)?(?\d{17,21})>?$/` * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`. * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`. * @remark Capture group 3 is the ID of the emoji. It is named `id`. */ declare const EmojiRegex: RegExp; /** * Regex that matches any animated or non-animated custom Discord emoji. * Unlike {@link EmojiRegex} It can be a substring of a larger string. * @raw `//` */ declare const FormattedCustomEmoji: RegExp; /** * Regex that can capture any animated or non-animated custom Discord emoji. * Similar to {@link FormattedCustomEmoji} and unlike {@link EmojiRegex} can also be a substring of a larger string. * @raw `/(?a?):(?[^:]+):(?\d{17,20})/` * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`. * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`. * @remark Capture group 3 is the ID of the emoji. It is named `id`. */ declare const FormattedCustomEmojiWithGroups: RegExp; /** * Regex that matches any URL starting with `http` or `https` * @raw `/^https?:\/\//` * @remark for WebSocket URLs see {@link WebSocketUrlRegex} */ declare const HttpUrlRegex: RegExp; /** * Regex that can capture the Guild, Channel, and Message ID based on a shareable Discord message link. * @raw `/^(?:https:\/\/)?(?:ptb\.|canary\.)?discord(?:app)?\.com\/channels\/(?(?:\d{17,20}|@me))\/(?\d{17,20})\/(?\d{17,20})$/` * @remark Capture group 1 is the ID of the guild the message was sent in. It is named `guildId`. * @remark Capture group 2 is the ID of the channel in that guild the message was sent in. It is named `channelId`. * @remark Capture group 3 is the ID of the message itself. It is named `messageId`. */ declare const MessageLinkRegex: RegExp; /** * Regex that matches any animated or non-animated custom Discord emoji *without the wrapping `<...>` symbols. * This means that a string that matches this regex can directly be send inside a Discord message. * Other than this difference it is similar to {@link FormattedCustomEmoji}. * @raw `/a?:\w{2,32}:\d{17,20}/` */ declare const ParsedCustomEmoji: RegExp; /** * Regex that matches any animated or non-animated custom Discord emoji *without the wrapping `<...>` symbols. * This means that a string that matches this regex can directly be send inside a Discord message. * Other than this difference it is similar to {@link FormattedCustomEmojiWithGroups}. * @raw `/(?a?):(?[^:]+):(?\d{17,20})/` * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`. * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`. * @remark Capture group 3 is the ID of the emoji. It is named `id`. */ declare const ParsedCustomEmojiWithGroups: RegExp; /** * Regex that can capture the ID in Discord Role mentions * @raw `/^<@&(?\d{17,20})>$/` * @remark Capture group 1 is the ID of the role. It is named `id`. */ declare const RoleMentionRegex: RegExp; /** * Regex that can capture any Discord Snowflake ID * @raw `/^(?\d{17,20})$/` * @remark Capture group 1 is the Snowflake. It is named `id`. */ declare const SnowflakeRegex: RegExp; /** * Regex that can capture a Discord Token * @raw `/(?mfa\.[a-z0-9_-]{20,})|(?[a-z0-9_-]{23,28}\.[a-z0-9_-]{6,7}\.[a-z0-9_-]{27})/i` * @remark Capture group 1 can be used to retrieve a token for a User that has Multi-Factor Authentication enabled. It is named `mfaToken`. * @remark Capture group 2 can be used to retrieve a token for a User that doesn't have Multi-Factor Authentication enabled, or a Bot application. It is named `basicToken`. * @remark For a valid token, either Capture group 1 or Capture group 2 will always be undefined, whereas the other group will then be defined and * contain the matched token. * You can use the name of the capture group to determine if the validated token was configured for a user with Multi-Factor Authentication, for a user without Multi-Factor Authentication, or for a bot application. * If both capture groups are undefined, then the token is invalid. */ declare const TokenRegex: RegExp; /** * Regex that can capture the ID of a user in Discord user mentions * @raw `/^<@!?(?\d{17,20})>$/` * @remark Capture group 1 is the ID of the user. It is named `id`. */ declare const UserOrMemberMentionRegex: RegExp; /** * Regex that matches any WebSocket URL starting with `ws` or `wss` * @raw `/^wss?:\/\//` * @remark for regular HTTP URLs see {@link HttpUrlRegex} */ declare const WebSocketUrlRegex: RegExp; /** * Regex that captures the Webhook ID and token from a Discord Webhook URL. * @raw `/(?^https:\/\/(?:(?:canary|ptb).)?discord(?:app)?.com\/api(?:\/v\d+)?\/webhooks\/(?\d+)\/(?[\w-]+)\/?$)/` * @remark Capture group 1 is the full URL of the Discord Webhook. It is named `url`. * @remark Capture group 2 is the ID of the Discord Webhook. It is named `id`. * @remark Capture group 3 is the token of the Discord Webhook. It is named `token`. * @remark for regular HTTP URLs see {@link HttpUrlRegex} */ declare const WebhookRegex: RegExp; type If = Value extends true ? TrueResult : Value extends false ? FalseResult : TrueResult | FalseResult; type RequiredIf = If; type BasicApplicationCommandOptionType = APIApplicationCommandInteractionDataBasicOption['type']; type _TypeToOptionMap = { [Option in BasicApplicationCommandOptionType]: APIApplicationCommandInteractionDataBasicOption & { type: Option; }; }; type TypeToOptionMap = { [Option in keyof _TypeToOptionMap]: _TypeToOptionMap[Option]; }; type ModalComponentType = ModalSubmitComponent['type']; type _TypeToModalComponentMap = { [Component in ModalComponentType]: ModalSubmitComponent & { type: Component; }; }; type TypeToModalComponentMap = { [Component in keyof _TypeToModalComponentMap]: _TypeToModalComponentMap[Component]; }; /** * Utility class for resolving (autocomplete) interaction options while working with the raw API. * Based on {@linkplain https://github.com/discordjs/discord.js/blob/main/packages/discord.js/src/structures/CommandInteractionOptionResolver.js} */ declare class AutocompleteInteractionOptionResolver { private readonly interaction; /** * The interaction options array */ private readonly data; /** * Bottom-level options for the interaction * If there is a subcommand (or subcommand and group), this represents the options for the subcommand. */ private readonly hoistedOptions; /** * The name of the subcommand group */ private readonly group; /** * The name of the subcommand */ private readonly subcommand; constructor(interaction: APIApplicationCommandAutocompleteInteraction); /** * Gets the selected subcommand * @param required Whether to throw an error if there is no subcommand */ getSubcommand(required?: Required): RequiredIf; /** * Gets the selected subcommand group * @param required Whether to throw an error if there is no subcommand group */ getSubcommandGroup(required?: Required): RequiredIf; /** * Gets the focused option for an autocomplete interaction */ getFocusedOption(): { name: string; type: ApplicationCommandOptionType.String; value: string; } | { name: string; type: ApplicationCommandOptionType.Integer; value: string | number; } | { name: string; type: ApplicationCommandOptionType.Number; value: string | number; }; } /** * Utility class for resolving (application command) interaction options while working with the raw API. * Based on {@linkplain https://github.com/discordjs/discord.js/blob/main/packages/discord.js/src/structures/CommandInteractionOptionResolver.js} */ declare class ChatInputInteractionOptionResolver { /** * The interaction options array */ private readonly data; /** * The interaction resolved data */ private readonly resolved; /** * Bottom-level options for the interaction * If there is a subcommand (or subcommand and group), this represents the options for the subcommand. */ private readonly hoistedOptions; /** * The name of the subcommand group */ private readonly group; /** * The name of the subcommand */ private readonly subcommand; constructor(interaction: APIChatInputApplicationCommandInteraction); /** * Gets an option by its name * @param name The name of the option * @param required Whether to throw an error if the option is not found */ get(name: string, required?: Required): RequiredIf; /** * Gets the selected subcommand * @param required Whether to throw an error if there is no subcommand */ getSubcommand(required?: Required): RequiredIf; /** * Gets the selected subcommand group * @param required Whether to throw an error if there is no subcommand group */ getSubcommandGroup(required?: Required): RequiredIf; /** * Gets a boolean option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getBoolean(name: string, required?: Required): RequiredIf; /** * Gets a channel option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getChannel(name: string, required?: Required): RequiredIf; /** * Gets a string option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getString(name: string, required?: Required): RequiredIf; /** * Gets an integer option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getInteger(name: string, required?: Required): RequiredIf; /** * Gets a number option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getNumber(name: string, required?: Required): RequiredIf; /** * Gets a user option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getUser(name: string, required?: Required): RequiredIf; /** * Gets a member option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getMember(name: string, required?: Required): RequiredIf; /** * Gets a role option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getRole(name: string, required?: Required): RequiredIf; /** * Gets an attachment option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getAttachment(name: string, required?: Required): RequiredIf; /** * Gets a mentionable option * @param name The name of the option * @param required Whether to throw an error if the option is not found */ getMentionable(name: string, required?: Required): RequiredIf; private getTypedOption; } /** * Utility class for resolving (context menu) interaction options while working with the raw API. * Based on {@linkplain https://github.com/discordjs/discord.js/blob/main/packages/discord.js/src/structures/CommandInteractionOptionResolver.js} */ declare class ContextMenuInteractionOptionResolver { private readonly interaction; /** * The interaction resolved data */ private readonly resolved; constructor(interaction: APIContextMenuInteraction); /** * Gets the target user for a context menu interaction */ getTargetUser(): APIUser; /** * Gets the target member for a context menu interaction * @param required Whether to throw an error if the member data is not present */ getTargetMember(required?: Required): RequiredIf; /** * Gets the target message for a context menu interaction */ getTargetMessage(): APIMessage; } /** * Utility class for resolving (modal) interaction options while working with the raw API. * Based on {@linkplain https://github.com/discordjs/discord.js/blob/main/packages/discord.js/src/structures/CommandInteractionOptionResolver.js} */ declare class ModalInteractionOptionResolver { /** * The interaction resolved data */ private readonly resolved; /** * Bottom-level components from the modal submission */ private readonly hoistedComponents; constructor(interaction: APIModalSubmitInteraction); /** * Gets a component. * @param customId The custom ID of the component to get. */ get(customId: string): ModalSubmitComponent; /** * Gets a text input component. * @param customId The custom ID of the text input component to get. */ getTextInput(customId: string): string; /** * Gets a string select component. * @param customId The custom ID of the string select component to get. */ getSelectedStrings(customId: string): string[]; /** * Gets selected users. * @param customId The custom ID of the user select component to get. */ getSelectedUsers(customId: string): APIUser[]; /** * Gets selected roles. * @param customId The custom ID of the role select component to get. */ getSelectedRoles(customId: string): APIRole[]; /** * Gets selected channels. * @param customId The custom ID of the channel select component to get. */ getSelectedChannels(customId: string): APIInteractionDataResolvedChannel[]; /** * Gets selected members. * @param customId The custom ID of the member select component to get. */ getSelectedMembers(customId: string): APIInteractionDataResolvedGuildMember[]; /** * Gets selected mentionables. * @param customId The custom ID of the mentionable select component to get. */ getSelectedMentionables(customId: string): (APIUser | APIRole)[]; /** * Gets attachments. * @param customId The custom ID of the file upload component to get. */ getAttachments(customId: string): APIAttachment[]; private getTyped; } /** * Regex that can capture a Twemoji (Twitter Emoji) * @raw {@linkplain https://github.com/jdecked/twemoji-parser/blob/main/src/lib/regex.js See official source code} */ declare const TwemojiRegex: RegExp; /** * Creates a fresh instance of the Twemoji regex, which is useful if you don't want to worry about the effects of a global regex and the lastIndex * @returns A clone of the Twemoji regex */ declare function createTwemojiRegex(): RegExp; export { ActionMetadataLimits, AllowedMentionsLimits, ApplicationCommandLimits, ApplicationCommandOptionLimits, ApplicationCommandPermissionLimits, ApplicationRoleConnectionLimits, AutoCompleteLimits, AutoModerationRuleLimits, AutocompleteInteractionOptionResolver, type BasicApplicationCommandOptionType, ButtonLimits, ChannelInviteLimits, ChannelLimits, ChannelMentionRegex, ChannelMessageRegex, ChatInputInteractionOptionResolver, ContextMenuInteractionOptionResolver, DiscordHostnameRegex, DiscordInviteLinkRegex, EmbedLimits, EmojiLimits, EmojiRegex, FormattedCustomEmoji, FormattedCustomEmojiWithGroups, GuildAuditLogsLimits, GuildBansLimits, GuildIntegrationLimits, GuildLimits, GuildMemberLimits, GuildScheduledEventLimits, HttpUrlRegex, type If, InteractionLimits, MessageLimits, MessageLinkRegex, type ModalComponentType, ModalInteractionOptionResolver, ModalLimits, ModerationLimits, ParsedCustomEmoji, ParsedCustomEmojiWithGroups, PremiumGuildLimits, ReactionLimits, type RequiredIf, RoleLimits, RoleMentionRegex, SelectMenuLimits, SnowflakeRegex, StageChannelLimits, StickerLimits, TextChannelLimits, TextInputLimits, ThreadLimits, TokenRegex, TriggerMetadataLimits, TriggerTypeLimits, TwemojiRegex, type TypeToModalComponentMap, type TypeToOptionMap, UserLimits, UserOrMemberMentionRegex, VoiceChannelLimits, WebSocketUrlRegex, WebhookRegex, createTwemojiRegex };