@sapphire/discord-utilities 3.5.0 → 3.5.1-next.104fbcfe

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/InteractionOptionResolver.ts","../../src/lib/limits.ts","../../src/lib/regexes.ts","../../src/lib/TwemojiRegex.ts"],"names":["ApplicationCommandOptionType","InteractionType","ApplicationCommandType","option"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n\tApplicationCommandOptionType,\n\tApplicationCommandType,\n\tInteractionType,\n\ttype APIApplicationCommandAutocompleteInteraction,\n\ttype APIApplicationCommandInteraction,\n\ttype APIApplicationCommandInteractionDataBasicOption,\n\ttype APIApplicationCommandInteractionDataIntegerOption,\n\ttype APIApplicationCommandInteractionDataNumberOption,\n\ttype APIApplicationCommandInteractionDataOption,\n\ttype APIApplicationCommandInteractionDataStringOption,\n\ttype APIAttachment,\n\ttype APIInteractionDataResolved,\n\ttype APIInteractionDataResolvedChannel,\n\ttype APIInteractionDataResolvedGuildMember,\n\ttype APIMessage,\n\ttype APIMessageApplicationCommandInteractionDataResolved,\n\ttype APIModalSubmitInteraction,\n\ttype APIRole,\n\ttype APIUser,\n\ttype APIUserInteractionDataResolved\n} from 'discord-api-types/v10';\n\n/**\n * Utility class for resolving command interaction options while working with the raw API.\n * Based on {@linkplain https://github.com/discordjs/discord.js/blob/main/packages/discord.js/src/structures/CommandInteractionOptionResolver.js}\n */\nexport class InteractionOptionResolver {\n\tprivate readonly interaction: APIApplicationCommandInteraction | APIApplicationCommandAutocompleteInteraction | APIModalSubmitInteraction;\n\n\t/**\n\t * The interaction options array\n\t */\n\tprivate readonly data: APIApplicationCommandInteractionDataOption[] | null = null;\n\n\t/**\n\t * The interaction resolved data\n\t */\n\tprivate readonly resolved:\n\t\t| APIInteractionDataResolved\n\t\t| APIUserInteractionDataResolved\n\t\t| APIMessageApplicationCommandInteractionDataResolved\n\t\t| null = null;\n\n\t/**\n\t * Bottom-level options for the interaction\n\t * If there is a subcommand (or subcommand and group), this represents the options for the subcommand.\n\t */\n\tprivate readonly hoistedOptions: APIApplicationCommandInteractionDataOption[] | null = null;\n\n\t/**\n\t * The name of the subcommand group\n\t */\n\tprivate readonly group: string | null = null;\n\n\t/**\n\t * The name of the subcommand\n\t */\n\tprivate readonly subcommand: string | null = null;\n\n\tpublic constructor(interaction: APIApplicationCommandInteraction | APIApplicationCommandAutocompleteInteraction | APIModalSubmitInteraction) {\n\t\tthis.interaction = interaction;\n\n\t\tthis.data = 'options' in interaction.data ? (interaction.data.options ?? null) : null;\n\n\t\tthis.resolved = 'resolved' in interaction.data ? (interaction.data.resolved ?? null) : null;\n\n\t\tthis.hoistedOptions = this.data;\n\n\t\t// Hoist subcommand group if present\n\t\tif (this.hoistedOptions?.[0]?.type === ApplicationCommandOptionType.SubcommandGroup) {\n\t\t\tthis.group = this.hoistedOptions[0].name;\n\t\t\tthis.hoistedOptions = this.hoistedOptions[0].options ?? [];\n\t\t}\n\n\t\t// Hoist subcommand if present\n\t\tif (this.hoistedOptions?.[0]?.type === ApplicationCommandOptionType.Subcommand) {\n\t\t\tthis.subcommand = this.hoistedOptions[0].name;\n\t\t\tthis.hoistedOptions = this.hoistedOptions[0].options ?? [];\n\t\t}\n\t}\n\n\t/**\n\t * Gets an option by its name\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic get<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIApplicationCommandInteractionDataOption>;\n\n\tpublic get(name: string, required = false): APIApplicationCommandInteractionDataOption | null {\n\t\tconst option = this.hoistedOptions?.find((opt) => opt.name === name);\n\t\tif (!option) {\n\t\t\tif (required) {\n\t\t\t\tthrow new Error(`Missing required option \"${name}\"`);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\treturn option;\n\t}\n\n\t/**\n\t * Gets the selected subcommand\n\t * @param required Whether to throw an error if there is no subcommand\n\t */\n\tpublic getSubcommand<Required extends boolean = false>(required?: Required): RequiredIf<Required, string>;\n\tpublic getSubcommand(required = true): string | null {\n\t\tif (required && !this.subcommand) {\n\t\t\tthrow new Error('A subcommand was not selected');\n\t\t}\n\n\t\treturn this.subcommand;\n\t}\n\n\t/**\n\t * Gets the selected subcommand group\n\t * @param required Whether to throw an error if there is no subcommand group\n\t */\n\tpublic getSubcommandGroup<Required extends boolean = false>(required?: Required): RequiredIf<Required, string>;\n\tpublic getSubcommandGroup(required = true): string | null {\n\t\tif (required && !this.group) {\n\t\t\tthrow new Error('A subcommand group was not selected');\n\t\t}\n\n\t\treturn this.group;\n\t}\n\n\t/**\n\t * Gets a boolean option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getBoolean<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, boolean>;\n\tpublic getBoolean(name: string, required = false): boolean | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Boolean, required);\n\t\treturn option?.value ?? null;\n\t}\n\n\t/**\n\t * Gets a channel option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getChannel<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIInteractionDataResolvedChannel>;\n\n\tpublic getChannel(name: string, required = false): APIInteractionDataResolvedChannel | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Channel, required);\n\t\treturn option && this.resolved && 'channels' in this.resolved ? (this.resolved.channels?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets a string option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getString<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, string>;\n\tpublic getString(name: string, required = false): string | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.String, required);\n\t\treturn option?.value ?? null;\n\t}\n\n\t/**\n\t * Gets an integer option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getInteger<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, number>;\n\tpublic getInteger(name: string, required = false): number | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Integer, required);\n\t\treturn (option?.value as number | null) ?? null;\n\t}\n\n\t/**\n\t * Gets a number option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getNumber<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, number>;\n\tpublic getNumber(name: string, required = false): number | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Number, required);\n\t\treturn (option?.value as number | null) ?? null;\n\t}\n\n\t/**\n\t * Gets a user option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getUser<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIUser>;\n\tpublic getUser(name: string, required = false): APIUser | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.User, required);\n\t\treturn option && this.resolved && 'users' in this.resolved ? (this.resolved.users?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets a member option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getMember<Required extends boolean = false>(\n\t\tname: string,\n\t\trequired?: Required\n\t): RequiredIf<Required, APIInteractionDataResolvedGuildMember>;\n\n\tpublic getMember(name: string, required = false): APIInteractionDataResolvedGuildMember | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.User, required);\n\t\treturn option && this.resolved && 'members' in this.resolved ? (this.resolved.members?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets a role option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getRole<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIRole>;\n\tpublic getRole(name: string, required = false): APIRole | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Role, required);\n\t\treturn option && this.resolved && 'roles' in this.resolved ? (this.resolved.roles?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets an attachment option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getAttachment<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIAttachment>;\n\tpublic getAttachment(name: string, required = false): APIAttachment | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Attachment, required);\n\t\treturn option && this.resolved && 'attachments' in this.resolved ? (this.resolved.attachments?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets a mentionable option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getMentionable<Required extends boolean = false>(\n\t\tname: string,\n\t\trequired?: Required\n\t): RequiredIf<Required, APIUser | APIInteractionDataResolvedGuildMember | APIRole>;\n\n\tpublic getMentionable(name: string, required = false): APIUser | APIInteractionDataResolvedGuildMember | APIRole | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Mentionable, required);\n\n\t\tif (!option || !this.resolved) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ('members' in this.resolved && this.resolved.members && option.value in this.resolved.members) {\n\t\t\treturn this.resolved.members[option.value] ?? null;\n\t\t}\n\n\t\tif ('users' in this.resolved && this.resolved.users && option.value in this.resolved.users) {\n\t\t\treturn this.resolved.users[option.value] ?? null;\n\t\t}\n\n\t\tif ('roles' in this.resolved && this.resolved.roles && option.value in this.resolved.roles) {\n\t\t\treturn this.resolved.roles[option.value] ?? null;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Gets the target user for a context menu interaction\n\t */\n\tpublic getTargetUser(): APIUser {\n\t\tif (this.interaction.type !== InteractionType.ApplicationCommand || this.interaction.data.type !== ApplicationCommandType.User) {\n\t\t\tthrow new Error('This method can only be used on user context menu interactions');\n\t\t}\n\n\t\treturn (this.resolved as APIUserInteractionDataResolved).users[this.interaction.data.target_id];\n\t}\n\n\t/**\n\t * Gets the target member for a context menu interaction\n\t * @param required Whether to throw an error if the member data is not present\n\t */\n\tpublic getTargetMember<Required extends boolean = false>(required?: Required): RequiredIf<Required, APIInteractionDataResolvedGuildMember>;\n\tpublic getTargetMember(required = false): APIInteractionDataResolvedGuildMember | null {\n\t\tif (this.interaction.type !== InteractionType.ApplicationCommand || this.interaction.data.type !== ApplicationCommandType.User) {\n\t\t\tthrow new Error('This method can only be used on user context menu interactions');\n\t\t}\n\n\t\tconst member = (this.resolved as APIUserInteractionDataResolved).members?.[this.interaction.data.target_id] ?? null;\n\n\t\tif (!member && required) {\n\t\t\tthrow new Error('Member data is not present');\n\t\t}\n\n\t\treturn member;\n\t}\n\n\t/**\n\t * Gets the target message for a context menu interaction\n\t */\n\tpublic getTargetMessage(): APIMessage {\n\t\tif (this.interaction.type !== InteractionType.ApplicationCommand || this.interaction.data.type !== ApplicationCommandType.Message) {\n\t\t\tthrow new Error('This method can only be used on message context menu interactions');\n\t\t}\n\n\t\treturn (this.resolved as APIMessageApplicationCommandInteractionDataResolved).messages[this.interaction.data.target_id];\n\t}\n\n\t/**\n\t * Gets the focused option for an autocomplete interaction\n\t */\n\tpublic getFocusedOption() {\n\t\tif (this.interaction.type !== InteractionType.ApplicationCommandAutocomplete) {\n\t\t\tthrow new Error('This method can only be used on autocomplete interactions');\n\t\t}\n\n\t\tconst focusedOption = this.hoistedOptions?.find((option) => 'focused' in option && option.focused) as\n\t\t\t| APIApplicationCommandInteractionDataStringOption\n\t\t\t| APIApplicationCommandInteractionDataIntegerOption\n\t\t\t| APIApplicationCommandInteractionDataNumberOption\n\t\t\t| undefined;\n\n\t\t// Considering the earlier check, this should be impossible, but it's here for good measure\n\t\tif (!focusedOption) {\n\t\t\tthrow new Error('No focused option for autocomplete interaction');\n\t\t}\n\n\t\tconst { focused, ...option } = focusedOption;\n\n\t\treturn option;\n\t}\n\n\tprivate getTypedOption<Option extends BasicApplicationCommandOptionType, Required extends boolean = false>(\n\t\tname: string,\n\t\ttype: Option,\n\t\trequired: Required\n\t): RequiredIf<Required, TypeToOptionMap[Option]>;\n\n\tprivate getTypedOption<Option extends BasicApplicationCommandOptionType>(\n\t\tname: string,\n\t\ttype: Option,\n\t\trequired: boolean\n\t): TypeToOptionMap[Option] | null {\n\t\tconst option = this.get(name, required);\n\t\tif (!option) {\n\t\t\treturn null;\n\t\t} else if (option.type !== type) {\n\t\t\tthrow new Error(`Option with name \"${name}\" is not of the correct type`);\n\t\t}\n\n\t\treturn option as TypeToOptionMap[Option];\n\t}\n}\n\ntype BasicApplicationCommandOptionType = APIApplicationCommandInteractionDataBasicOption['type'];\n\n// This extra type is required because apparently just inlining what `_TypeToOptionMap` does into `TypeToOptionMap` does not behave the same\ntype _TypeToOptionMap = {\n\t[Option in BasicApplicationCommandOptionType]: APIApplicationCommandInteractionDataBasicOption & { type: Option };\n};\n\ntype TypeToOptionMap = {\n\t[Option in keyof _TypeToOptionMap]: _TypeToOptionMap[Option];\n};\n\ntype If<Value extends boolean, TrueResult, FalseResult> = Value extends true\n\t? TrueResult\n\t: Value extends false\n\t\t? FalseResult\n\t\t: TrueResult | FalseResult;\n\ntype RequiredIf<Value extends boolean, ValueType, FallbackType = null> = If<Value, ValueType, ValueType | FallbackType>;\n","/**\n * Namespace containing limits related to Discord channels.\n */\nexport const ChannelLimits = {\n\t/**\n\t * Maximum characters allowed in a channel description.\n\t */\n\tMaximumDescriptionLength: 1024,\n\n\t/**\n\t * Maximum characters allowed in a channel name.\n\t */\n\tMaximumNameLength: 100,\n\n\t/**\n\t * Maximum viewers allowed per screen share.\n\t * @deprecated Use `VoiceChannelLimits.MaximumViewersPerScreenShare` instead.\n\t */\n\tMaximumViewersPerScreenShare: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord voice channels.\n */\nexport const VoiceChannelLimits = {\n\t/**\n\t * Maximum viewers allowed per screen share.\n\t */\n\tMaximumViewersPerScreenShare: 50,\n\n\t/**\n\t * Maximum user limit of voice channel.\n\t */\n\tMaximumUserLimit: 99\n};\n\n/**\n * Namespace containing limits related to Discord stage channels.\n */\nexport const StageChannelLimits = {\n\t/**\n\t * Maximum user limit of stage channel.\n\t */\n\tMaximumUserLimit: 250\n};\n\n/**\n * Namespace containing limits related to Discord text channels.\n */\nexport const TextChannelLimits = {\n\t/**\n\t * Maximum pins allowed in a text channel.\n\t */\n\tMaximumMessagePins: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord threads.\n */\nexport const ThreadLimits = {\n\t/**\n\t * Minimum number of threads to return from the threads API.\n\t */\n\tMinimumThreadsToFetch: 1,\n\n\t/**\n\t * Maximum number of threads to return from the threads API.\n\t */\n\tMaximumThreadsToFetch: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord embeds.\n */\nexport const EmbedLimits = {\n\t/**\n\t * Maximum characters allowed in the author field of an embed.\n\t */\n\tMaximumAuthorNameLength: 256,\n\n\t/**\n\t * Maximum characters allowed in an embed description.\n\t */\n\tMaximumDescriptionLength: 4096,\n\n\t/**\n\t * Maximum characters allowed in the name of a field in an embed.\n\t */\n\tMaximumFieldNameLength: 256,\n\n\t/**\n\t * Maximum fields allowed in an embed.\n\t */\n\tMaximumFields: 25,\n\n\t/**\n\t * Maximum characters allowed in the value of a field in an embed.\n\t */\n\tMaximumFieldValueLength: 1024,\n\n\t/**\n\t * Maximum characters allowed in a footer of an embed.\n\t */\n\tMaximumFooterLength: 2048,\n\n\t/**\n\t * Maximum characters allowed in the title of an embed.\n\t */\n\tMaximumTitleLength: 256,\n\n\t/**\n\t * Maximum characters allowed in an embed, in total.\n\t */\n\tMaximumTotalCharacters: 6000\n} as const;\n\n/**\n * Namespace containing limits related to Discord emojis.\n */\nexport const EmojiLimits = {\n\t/**\n\t * Maximum characters allowed in a custom guild emoji.\n\t */\n\tMaximumEmojiNameLength: 32,\n\n\t/**\n\t * Maximum size allowed for a custom guild emoji.\n\t * Size is in bytes, and corresponds to 256KB.\n\t */\n\tMaximumEmojiSize: 256_000\n} as const;\n\n/**\n * Namespace containing limits related to Discord guilds.\n */\nexport const GuildLimits = {\n\t/**\n\t * Maximum channels allowed per guild, including category channels.\n\t */\n\tMaximumChannels: 500,\n\n\t/**\n\t * Maximum roles allowed in a guild.\n\t */\n\tMaximumRoles: 250,\n\n\t/**\n\t * Maximum scheduled or active events allowed in a guild.\n\t */\n\tMaximumScheduledOrActiveEvents: 100,\n\n\t/**\n\t * Minimum number of user guilds to return from the user guilds API.\n\t */\n\tMinimumUserGuildsToFetch: 1,\n\n\t/**\n\t * Maximum number of user guilds to return from the user guilds API.\n\t */\n\tMaximumUserGuildsToFetch: 200,\n\n\t/**\n\t * Maximum static emojis allowed in a guild.\n\t */\n\tMaximumStaticEmojis: 50,\n\n\t/**\n\t * Maximum animated emojis allowed in a guild.\n\t */\n\tMaximumAnimatedEmojis: 50,\n\n\t/**\n\t * Maximum emojis (static and animated) allowed in a guild.\n\t */\n\tMaximumEmojis: 100,\n\n\t/**\n\t * Maximum stickers allowed in a guild.\n\t */\n\tMaximumStickers: 5\n} as const;\n\n/**\n * Namespace containing limits related to premium Discord guilds.\n */\nexport const PremiumGuildLimits = {\n\tTierOne: {\n\t\t/**\n\t\t * Maximum static emojis allowed in a guild.\n\t\t */\n\t\tMaximumStaticEmojis: 100,\n\n\t\t/**\n\t\t * Maximum animated emojis allowed in a guild.\n\t\t */\n\t\tMaximumAnimatedEmojis: 100,\n\n\t\t/**\n\t\t * Maximum emojis (static and animated) allowed in a guild.\n\t\t */\n\t\tMaximumEmojis: 200,\n\n\t\t/**\n\t\t * Maximum stickers allowed in a guild.\n\t\t */\n\t\tMaximumStickers: 15\n\t},\n\tTierTwo: {\n\t\t/**\n\t\t * Maximum static emojis allowed in a guild.\n\t\t */\n\t\tMaximumStaticEmojis: 150,\n\n\t\t/**\n\t\t * Maximum animated emojis allowed in a guild.\n\t\t */\n\t\tMaximumAnimatedEmojis: 150,\n\n\t\t/**\n\t\t * Maximum emojis (static and animated) allowed in a guild.\n\t\t */\n\t\tMaximumEmojis: 300,\n\n\t\t/**\n\t\t * Maximum stickers allowed in a guild.\n\t\t */\n\t\tMaximumStickers: 30\n\t},\n\tTierThree: {\n\t\t/**\n\t\t * Maximum static emojis allowed in a guild.\n\t\t */\n\t\tMaximumStaticEmojis: 250,\n\n\t\t/**\n\t\t * Maximum animated emojis allowed in a guild.\n\t\t */\n\t\tMaximumAnimatedEmojis: 250,\n\n\t\t/**\n\t\t * Maximum emojis (static and animated) allowed in a guild.\n\t\t */\n\t\tMaximumEmojis: 500,\n\n\t\t/**\n\t\t * Maximum stickers allowed in a guild.\n\t\t */\n\t\tMaximumStickers: 60\n\t}\n} as const;\n\n/**\n * Namespace containing limits related to Discord guild scheduled events.\n */\nexport const GuildScheduledEventLimits = {\n\t/**\n\t * Maximum number of users to return from the guild scheduled event users API.\n\t */\n\tMaximumUsersToFetch: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord guild members.\n */\nexport const GuildMemberLimits = {\n\t/**\n\t * Maximum characters allowed in the display name of a guild member.\n\t */\n\tMaximumDisplayNameLength: 32,\n\n\t/**\n\t * Minimum number of members to return from the guild members API.\n\t */\n\tMinimumMembersToFetch: 1,\n\n\t/**\n\t * Maximum number of members to return from the guild members API.\n\t */\n\tMaximumMembersToFetch: 1000\n} as const;\n\n/**\n * Namespace containing limits related to Discord guild bans.\n */\nexport const GuildBansLimits = {\n\t/**\n\t * Minimum number of bans to return from the guild bans API.\n\t */\n\tMinimumBansToFetch: 1,\n\n\t/**\n\t * Maximum number of bans to return from the guild bans API.\n\t */\n\tMaximumBansToFetch: 1000\n} as const;\n\n/**\n * Namespace containing limits related to Discord interactions.\n */\nexport const InteractionLimits = {\n\t/**\n\t * Maximum buttons allowed in a single action row.\n\t */\n\tMaximumButtonsPerActionRow: 5,\n\n\t/**\n\t * Maximum select menus allowed in a single action row.\n\t */\n\tMaximumSelectMenusPerActionRow: 1,\n\n\t/**\n\t * Maximum text inputs allowed in a single action row.\n\t */\n\tMaximumTextInputsPerActionRow: 1,\n\n\t/**\n\t * Maximum options allowed in a single select menu.\n\t */\n\tMaximumOptionsInSelectMenus: 25\n} as const;\n\n/**\n * Namespace containing limits related to Discord application commands (slash commands).\n */\nexport const ApplicationCommandLimits = {\n\t/**\n\t * Maximum characters allowed in an application command name.\n\t */\n\tMaximumNameCharacters: 32,\n\n\t/**\n\t * Maximum characters allowed in an application command description.\n\t */\n\tMaximumDescriptionCharacters: 100,\n\n\t/**\n\t * Maximum options allowed in an application command.\n\t */\n\tMaximumOptionsLength: 25,\n\n\t/**\n\t * Maximum combined characters allowed in the name, description, and value properties of an application command, its options (including subcommands and groups), and choices.\n\t */\n\tMaximumCombinedCharacters: 4000\n} as const;\n\n/**\n * Namespace containing limits related to Choices of Discord Application Commands.\n */\nexport const ApplicationCommandOptionLimits = {\n\t/**\n\t * Maximum characters allowed in the name of an option of an application command.\n\t */\n\tMaximumNameCharacters: 32,\n\n\t/**\n\t * Maximum characters allowed in the description of an option of an application command.\n\t */\n\tMaximumDescriptionCharacters: 100,\n\n\t/**\n\t * Maximum length of choices allowed in the option of an application command.\n\t */\n\tMaximumChoicesLength: 25,\n\n\t/**\n\t * Maximum length of string allowed in the string option of an application command.\n\t */\n\tMaximumStringLength: 6000\n} as const;\n\n/**\n * Namespace containing limits related to Permissions of Discord Application Commands.\n */\nexport const ApplicationCommandPermissionLimits = {\n\t/**\n\t * Maximum length of permissions allowed in the option of an application command.\n\t */\n\tMaximumPermissionsLength: 100\n} as const;\n\n/**\n * Namespace containing limits related to Message Buttons.\n */\nexport const ButtonLimits = {\n\t/**\n\t * Maximum characters allowed in a button label.\n\t */\n\tMaximumLabelCharacters: 80,\n\n\t/**\n\t * Maximum characters allowed in a button custom ID.\n\t */\n\tMaximumCustomIdCharacters: 100\n} as const;\n\n/**\n * Namespace containing limits related to Select Menus.\n */\nexport const SelectMenuLimits = {\n\t/**\n\t * Maximum characters allowed in a select menu custom ID.\n\t */\n\tMaximumCustomIdCharacters: 100,\n\n\t/**\n\t * Maximum amount of options allowed in a select menu.\n\t */\n\tMaximumOptionsLength: 25,\n\n\t/**\n\t * Maximum characters allowed in a select menu placeholder.\n\t */\n\tMaximumPlaceholderCharacters: 150,\n\n\t/**\n\t * Maximum \"minimum\" values allowed in a select menu.\n\t */\n\tMaximumMinValuesSize: 25,\n\n\t/**\n\t * Maximum \"maximum\" values allowed in a select menu.\n\t */\n\tMaximumMaxValuesSize: 25,\n\n\t/**\n\t * Maximum characters allowed in a select menu option's name.\n\t */\n\tMaximumLengthOfNameOfOption: 100,\n\n\t/**\n\t * Maximum characters allowed in a select menu option's description.\n\t */\n\tMaximumLengthOfDescriptionOfOption: 100,\n\n\t/**\n\t * Maximum characters allowed in a select menu option's value.\n\t */\n\tMaximumLengthOfValueOfOption: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord messages.\n */\nexport const MessageLimits = {\n\t/**\n\t * Maximum embeds allowed in a single message.\n\t */\n\tMaximumEmbeds: 10,\n\n\t/**\n\t * Maximum action rows allowed in a single message.\n\t */\n\tMaximumActionRows: 5,\n\n\t/**\n\t * Maximum characters allowed in a single message for a user.\n\t */\n\tMaximumLength: 2000,\n\n\t/**\n\t * Maximum characters allowed in a single message for a nitro user.\n\t */\n\tMaximumNitroLength: 4000,\n\n\t/**\n\t * Maximum numbers of reactions allowed for a message.\n\t */\n\tMaximumReactions: 20,\n\n\t/**\n\t * Maximum upload size for a free user in a guild of tier 1 or below, or in DMs.\n\t * Size is in bytes, and corresponds to 25MB.\n\t */\n\tMaximumUploadSize: 25_000_000,\n\n\t/**\n\t * Maximum upload size for a Nitro Basic user, in any guild or in DMs.\n\t * Size is in bytes, and corresponds to 50MB.\n\t */\n\tMaximumNitroBasicUploadSize: 50_000_000,\n\n\t/**\n\t * Maximum upload size for a Nitro user, in any guild or in DMs.\n\t * Size is in bytes, and corresponds to 500MB.\n\t */\n\tMaximumNitroUploadSize: 500_000_000,\n\n\t/**\n\t * Maximum upload size for a free user for all different boost levels available in a guild.\n\t * Sizes are in bytes, and correspond to 25MB, 25MB, 50MB, and 100MB.\n\t */\n\tMaximumUploadSizeInGuild: [25_000_000, 25_000_000, 50_000_000, 100_000_000],\n\n\t/**\n\t * Minimum number of messages to return from the channel messages API.\n\t */\n\tMinimumMessagesToFetch: 1,\n\n\t/**\n\t * Maximum number of messages to return from the channel messages API.\n\t */\n\tMaximumMessagesToFetch: 100,\n\n\t/**\n\t * Maximum request size when sending a messages.\n\t * Size is in bytes, and corresponds to 25MB.\n\t */\n\tMaximumRequestSize: 25_000_000,\n\n\t/**\n\t * Minimum number of messages to delete in a single bulk delete request.\n\t */\n\tMinimumMessagesToBulkDelete: 2,\n\n\t/**\n\t * Maximum number of messages to delete in a single bulk delete request.\n\t */\n\tMaximumMessagesToBulkDelete: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord message reactions.\n */\nexport const ReactionLimits = {\n\t/**\n\t * Minimum number of reactions to fetch from the message reactions API.\n\t */\n\tMinimumReactionToFetch: 1,\n\n\t/**\n\t * Maximum number of reactions to fetch from the message reactions API.\n\t */\n\tMaximumReactionsToFetch: 100\n};\n\n/**\n * Namespace containing limits related to built-in moderation features.\n */\nexport const ModerationLimits = {\n\t/**\n\t * Maximum duration of a guild timeout, in seconds (corresponds to 28 days).\n\t */\n\tMaximumTimeoutDuration: 2_419_200\n} as const;\n\n/**\n * Namespace containing limits related to Discord roles.\n */\nexport const RoleLimits = {\n\t/**\n\t * Maximum characters allowed in a role name.\n\t */\n\tMaximumNameLength: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord users and Direct Messages.\n */\nexport const UserLimits = {\n\t/**\n\t * Maximum numbers of users in a DM group.\n\t */\n\tMaximumUsersPerDMGroup: 10,\n\n\t/**\n\t * Maximum characters allowed in a user's biography (the \"About Me\" section).\n\t */\n\tMaximumBiographyLength: 190\n} as const;\n\n/**\n * Namespace container limits related to Discord autocomplete interactions.\n */\nexport const AutoCompleteLimits = {\n\t/**\n\t * Maximum options allowed in a single autocomplete response.\n\t */\n\tMaximumAmountOfOptions: 25,\n\n\t/**\n\t * Maximum characters allowed in a select menu option's name.\n\t */\n\tMaximumLengthOfNameOfOption: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Modals.\n */\nexport const ModalLimits = {\n\t/**\n\t * Maximum characters allowed in a modal custom ID.\n\t */\n\tMaximumCustomIdCharacters: 100,\n\n\t/**\n\t * Maximum characters allowed in a modal title.\n\t */\n\tMaximumTitleCharacters: 45,\n\n\t/**\n\t * Maximum components allowed in a modal.\n\t */\n\tMaximumComponents: 5\n} as const;\n\n/**\n * Namespace containing limits related to Discord Modal Text Input component.\n */\nexport const TextInputLimits = {\n\t/**\n\t * Maximum characters allowed in a text input custom ID.\n\t */\n\tMaximumCustomIdCharacters: 100,\n\n\t/**\n\t * Maximum characters allowed in a text input label.\n\t */\n\tMaximumLabelCharacters: 45,\n\n\t/**\n\t * Maximum characters allowed in a text input placeholder.\n\t */\n\tMaximumPlaceholderCharacters: 100,\n\n\t/**\n\t * Maximum characters allowed in a text input value.\n\t */\n\tMaximumValueCharacters: 4000\n} as const;\n\n/**\n * Namespace containing limits related to Discord Application Role Connections.\n */\nexport const ApplicationRoleConnectionLimits = {\n\t/**\n\t * Maximum application role connection metadata records an application can have.\n\t */\n\tMaximumMetadataRecords: 5,\n\n\t/**\n\t * Maximum characters allowed in metadata values.\n\t */\n\tMaximumMetadataValueLength: 100,\n\n\t/**\n\t * Maximum characters allowed in a platform name.\n\t */\n\tMaximumPlatformNameLength: 50,\n\n\t/**\n\t * Maximum characters allowed in a platform username.\n\t */\n\tMaximumPlatformUsernameLength: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Guild Audit Logs.\n */\nexport const GuildAuditLogsLimits = {\n\t/**\n\t * Minimum number of entries to return from the guild audit log API.\n\t */\n\tMinimumEntriesToFetch: 1,\n\n\t/**\n\t * Maximum number of entries to return from the guild audit log API.\n\t */\n\tMaximumEntriesToFetch: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Auto Moderation Rules.\n */\nexport const AutoModerationRuleLimits = {\n\t/**\n\t * Maximum number of exempt roles a rule can have.\n\t */\n\tMaximumExemptRoles: 20,\n\n\t/**\n\t * Maximum number of exempt channels a rule can have.\n\t */\n\tMaximumExemptChannels: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord Auto Moderation Triggers.\n */\nexport const TriggerTypeLimits = {\n\t/**\n\t * Maximum number of keyword triggers a guild can have.\n\t */\n\tMaximumKeywordTriggersPerGuild: 6,\n\n\t/**\n\t * Maximum number of mention spam triggers a guild can have.\n\t */\n\tMaximumSpamTriggersPerGuild: 1,\n\n\t/**\n\t * Maximum number of keyword triggers a channel can have.\n\t */\n\tMaximumKeywordPresetTriggersPerChannel: 1,\n\n\t/**\n\t * Maximum number of mention spam triggers a channel can have.\n\t */\n\tMaximumMentionSpamTriggersPerChannel: 1\n} as const;\n\n/**\n * Namespace containing limits related to Discord Auto Moderation Trigger Metadata.\n */\nexport const TriggerMetadataLimits = {\n\t/**\n\t * Maximum number of substrings which will be searched for in content.\n\t */\n\tMaximumKeywordFilters: 1000,\n\n\t/**\n\t * Maximum number of characters allowed in a keyword filter.\n\t */\n\tMaximumKeywordFilterLength: 60,\n\n\t/**\n\t * Maximum number of regular expression patterns which will be matched against content.\n\t */\n\tMaximumRegexPatterns: 10,\n\n\t/**\n\t * Maximum number of characters allowed in a regular expression pattern.\n\t */\n\tMaximumCharactersPerRegexPattern: 260,\n\n\t/**\n\t * Maximum number of substrings which should not trigger the keyword rule.\n\t */\n\tMaximumKeywordAllowListLength: 100,\n\n\t/**\n\t * Maximum characters per keyword that should not trigger the keyword rule.\n\t */\n\tMaximumKeywordAllowListKeywordLength: 60,\n\n\t/**\n\t * Maximum characters per keyword should not trigger the keyword preset rule.\n\t */\n\tMaximumKeywordPresetAllowListKeywordPresetLength: 60,\n\n\t/**\n\t * Maximum number of substrings which should not trigger the keyword preset rule.\n\t */\n\tMaximumKeywordPresetAllowListLength: 1000,\n\n\t/**\n\t * Maximum number of unique role and user mentions allowed per message.\n\t */\n\tMaximumMentionSpamTotalMentions: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord Auto Moderation Action Metadata.\n */\nexport const ActionMetadataLimits = {\n\t/**\n\t * Maximum timeout duration in seconds.\n\t */\n\tMaximumTimeoutDurationSeconds: 2_419_200,\n\n\t/**\n\t * Maximum number of characters allowed in a custom block message.\n\t */\n\tMaximumCustomBlockMessageLength: 150\n} as const;\n\n/**\n * Namespace containing limits related to Discord Message Allowed Mentions.\n */\nexport const AllowedMentionsLimits = {\n\t/**\n\t * Maximum number of users allowed in an allowed mentions object.\n\t */\n\tMaximumUsers: 100,\n\n\t/**\n\t * Maximum number of roles allowed in an allowed mentions object.\n\t */\n\tMaximumRoles: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Channel Invites.\n */\nexport const ChannelInviteLimits = {\n\t/**\n\t * Maximum age of an invite in seconds.\n\t */\n\tMaximumAgeSeconds: 604_800,\n\n\t/**\n\t * Maximum number of uses allowed for an invite.\n\t */\n\tMaximumUses: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Guild Integrations.\n */\nexport const GuildIntegrationLimits = {\n\t/**\n\t * Maximum number of integrations returned from the guild integrations API. Needs a more description name than \"MaximumIntegrations\".\n\t */\n\tMaximumIntegrationsToFetch: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord Stickers.\n */\nexport const StickerLimits = {\n\t/**\n\t * Maximum number of characters allowed in the autocomplete/suggestion tags for the sticker.\n\t */\n\tMaximumTagsLength: 200,\n\n\t/**\n\t * Maximum size allowed for a sticker.\n\t * Size is in bytes, and corresponds to 512KB.\n\t */\n\tMaximumStickerSize: 512_000\n};\n","/**\n * Regex that can capture the ID in Discord Channel mentions\n * @raw `/^<#(?<id>\\d{17,20})>$/`\n * @remark Capture group 1 is the ID of the channel. It is named `id`.\n */\nexport const ChannelMentionRegex = /^<#(?<id>\\d{17,20})>$/;\n\n/**\n * Regex that can capture the channel and message IDs in a channelId-messageId pattern\n * This pattern can be found when you hold Shift and hover over a message, and click the \"ID\" button\n * @raw `/^(?<channelId>\\d{17,20})-(?<messageId>\\d{17,20})$/`\n * @remark Capture group 1 is the ID of the channel, named `channelId`.\n * @remark Capture group 2 is the ID of the message, named `messageId`.\n */\nexport const ChannelMessageRegex = /^(?<channelId>\\d{17,20})-(?<messageId>\\d{17,20})$/;\n\n/**\n * Regex that matches links on the known Discord host names\n * @raw `/(?<subdomain>\\w+)\\.?(?<hostname>dis(?:cord)?(?:app|merch|status)?)\\.(?<tld>com|g(?:d|g|ift)|(?:de(?:sign|v))|media|new|store|net)/i`\n * @remark The regex is case insensitive\n * @remark Capture group 1 is the subdomain for this URL. It is named `subdomain`.\n * @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`.\n * @remark Capture group 3 is the Top-Level Domain *without* `.`. It is named `tld`.\n */\nexport const DiscordHostnameRegex =\n\t/(?<subdomain>\\w+)\\.?(?<hostname>dis(?:cord)?(?:app|merch|status)?)\\.(?<tld>com|g(?:d|g|ift)|(?:de(?:sign|v))|media|new|store|net)/i;\n\n/**\n * Regex that can can capture the code of Discord invite links\n * @raw `/(?:^|\\b)discord(?:(?:app)?\\.com\\/invite|\\.gg(?:\\/invite)?)\\/(?<code>[\\w-]{2,255})(?:$|\\b)/gi`\n * @remark Capture group 1 is the invite URL's unique code. It is named `code`.\n */\nexport const DiscordInviteLinkRegex = /(?:^|\\b)discord(?:(?:app)?\\.com\\/invite|\\.gg(?:\\/invite)?)\\/(?<code>[\\w-]{2,255})(?:$|\\b)/gi;\n\n/**\n * Regex that can capture the ID of any animated or non-animated custom Discord emoji\n * @raw `/^(?:<(?<animated>a)?:(?<name>\\w{2,32}):)?(?<id>\\d{17,21})>?$/`\n * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.\n * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.\n * @remark Capture group 3 is the ID of the emoji. It is named `id`.\n */\nexport const EmojiRegex = /^(?:<(?<animated>a)?:(?<name>\\w{2,32}):)?(?<id>\\d{17,21})>?$/;\n\n/**\n * Regex that matches any animated or non-animated custom Discord emoji.\n * Unlike {@link EmojiRegex} It can be a substring of a larger string.\n * @raw `/<a?:\\w{2,32}:\\d{17,20}>/`\n */\nexport const FormattedCustomEmoji = /<a?:\\w{2,32}:\\d{17,20}>/;\n\n/**\n * Regex that can capture any animated or non-animated custom Discord emoji.\n * Similar to {@link FormattedCustomEmoji} and unlike {@link EmojiRegex} can also be a substring of a larger string.\n * @raw `/(?<animated>a?):(?<name>[^:]+):(?<id>\\d{17,20})/`\n * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.\n * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.\n * @remark Capture group 3 is the ID of the emoji. It is named `id`.\n */\nexport const FormattedCustomEmojiWithGroups = /(?<animated>a?):(?<name>[^:]+):(?<id>\\d{17,20})/;\n\n/**\n * Regex that matches any URL starting with `http` or `https`\n * @raw `/^https?:\\/\\//`\n * @remark for WebSocket URLs see {@link WebSocketUrlRegex}\n */\nexport const HttpUrlRegex = /^https?:\\/\\//;\n\n/**\n * Regex that can capture the Guild, Channel, and Message ID based on a shareable Discord message link.\n * @raw `/^(?:https:\\/\\/)?(?:ptb\\.|canary\\.)?discord(?:app)?\\.com\\/channels\\/(?<guildId>(?:\\d{17,20}|@me))\\/(?<channelId>\\d{17,20})\\/(?<messageId>\\d{17,20})$/`\n * @remark Capture group 1 is the ID of the guild the message was sent in. It is named `guildId`.\n * @remark Capture group 2 is the ID of the channel in that guild the message was sent in. It is named `channelId`.\n * @remark Capture group 3 is the ID of the message itself. It is named `messageId`.\n */\nexport const MessageLinkRegex =\n\t/^(?:https:\\/\\/)?(?:ptb\\.|canary\\.)?discord(?:app)?\\.com\\/channels\\/(?<guildId>(?:\\d{17,20}|@me))\\/(?<channelId>\\d{17,20})\\/(?<messageId>\\d{17,20})$/;\n\n/**\n * Regex that matches any animated or non-animated custom Discord emoji *without the wrapping `<...>` symbols.\n * This means that a string that matches this regex can directly be send inside a Discord message.\n * Other than this difference it is similar to {@link FormattedCustomEmoji}.\n * @raw `/a?:\\w{2,32}:\\d{17,20}/`\n */\nexport const ParsedCustomEmoji = /a?:\\w{2,32}:\\d{17,20}/;\n\n/**\n * Regex that matches any animated or non-animated custom Discord emoji *without the wrapping `<...>` symbols.\n * This means that a string that matches this regex can directly be send inside a Discord message.\n * Other than this difference it is similar to {@link FormattedCustomEmojiWithGroups}.\n * @raw `/(?<animated>a?):(?<name>[^:]+):(?<id>\\d{17,20})/`\n * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.\n * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.\n * @remark Capture group 3 is the ID of the emoji. It is named `id`.\n */\nexport const ParsedCustomEmojiWithGroups = /(?<animated>a?):(?<name>[^:]+):(?<id>\\d{17,20})/;\n\n/**\n * Regex that can capture the ID in Discord Role mentions\n * @raw `/^<@&(?<id>\\d{17,20})>$/`\n * @remark Capture group 1 is the ID of the role. It is named `id`.\n */\nexport const RoleMentionRegex = /^<@&(?<id>\\d{17,20})>$/;\n\n/**\n * Regex that can capture any Discord Snowflake ID\n * @raw `/^(?<id>\\d{17,20})$/`\n * @remark Capture group 1 is the Snowflake. It is named `id`.\n */\nexport const SnowflakeRegex = /^(?<id>\\d{17,20})$/;\n\n/**\n * Regex that can capture a Discord Token\n * @raw `/(?<mfaToken>mfa\\.[a-z0-9_-]{20,})|(?<basicToken>[a-z0-9_-]{23,28}\\.[a-z0-9_-]{6,7}\\.[a-z0-9_-]{27})/i`\n * @remark Capture group 1 can be used to retrieve a token for a User that has Multi-Factor Authentication enabled. It is named `mfaToken`.\n * @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`.\n * @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\n * contain the matched token.\n * 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.\n * If both capture groups are undefined, then the token is invalid.\n */\nexport const TokenRegex = /(?<mfaToken>mfa\\.[a-z0-9_-]{20,})|(?<basicToken>[a-z0-9_-]{23,28}\\.[a-z0-9_-]{6,7}\\.[a-z0-9_-]{27})/i;\n\n/**\n * Regex that can capture the ID of a user in Discord user mentions\n * @raw `/^<@!?(?<id>\\d{17,20})>$/`\n * @remark Capture group 1 is the ID of the user. It is named `id`.\n */\nexport const UserOrMemberMentionRegex = /^<@!?(?<id>\\d{17,20})>$/;\n\n/**\n * Regex that matches any WebSocket URL starting with `ws` or `wss`\n * @raw `/^wss?:\\/\\//`\n * @remark for regular HTTP URLs see {@link HttpUrlRegex}\n */\nexport const WebSocketUrlRegex = /^wss?:\\/\\//;\n\n/**\n * Regex that captures the Webhook ID and token from a Discord Webhook URL.\n * @raw `/(?<url>^https:\\/\\/(?:(?:canary|ptb).)?discord(?:app)?.com\\/api(?:\\/v\\d+)?\\/webhooks\\/(?<id>\\d+)\\/(?<token>[\\w-]+)\\/?$)/`\n * @remark Capture group 1 is the full URL of the Discord Webhook. It is named `url`.\n * @remark Capture group 2 is the ID of the Discord Webhook. It is named `id`.\n * @remark Capture group 3 is the token of the Discord Webhook. It is named `token`.\n * @remark for regular HTTP URLs see {@link HttpUrlRegex}\n */\nexport const WebhookRegex = /(?<url>^https:\\/\\/(?:(?:canary|ptb).)?discord(?:app)?.com\\/api(?:\\/v\\d+)?\\/webhooks\\/(?<id>\\d+)\\/(?<token>[\\w-]+)\\/?$)/;\n","/**\n * Regex that can capture a Twemoji (Twitter Emoji)\n * @raw {@linkplain https://github.com/jdecked/twemoji-parser/blob/main/src/lib/regex.js See official source code}\n */\nexport const TwemojiRegex =\n\t/(?:\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\udef1\\ud83c\\udffb\\u200d\\ud83e\\udef2\\ud83c[\\udffc-\\udfff]|\\ud83e\\udef1\\ud83c\\udffc\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\udef1\\ud83c\\udffd\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\udef1\\ud83c\\udffe\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\udef1\\ud83c\\udfff\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1|\\ud83d\\udc6b\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6c\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6d\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc8f\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc91\\ud83c[\\udffb-\\udfff]|\\ud83e\\udd1d\\ud83c[\\udffb-\\udfff]|\\ud83d[\\udc6b-\\udc6d\\udc8f\\udc91]|\\ud83e\\udd1d)|(?:\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1)(?:\\ud83c[\\udffb-\\udfff])?\\u200d(?:\\u2695\\ufe0f|\\u2696\\ufe0f|\\u2708\\ufe0f|\\ud83c[\\udf3e\\udf73\\udf7c\\udf84\\udf93\\udfa4\\udfa8\\udfeb\\udfed]|\\ud83d[\\udcbb\\udcbc\\udd27\\udd2c\\ude80\\ude92]|\\ud83e[\\uddaf-\\uddb3\\uddbc\\uddbd])(?:\\u200d\\u27a1\\ufe0f)?|(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75]|\\u26f9)((?:\\ud83c[\\udffb-\\udfff]|\\ufe0f)\\u200d[\\u2640\\u2642]\\ufe0f(?:\\u200d\\u27a1\\ufe0f)?)|(?:\\ud83c[\\udfc3\\udfc4\\udfca]|\\ud83d[\\udc6e\\udc70\\udc71\\udc73\\udc77\\udc81\\udc82\\udc86\\udc87\\ude45-\\ude47\\ude4b\\ude4d\\ude4e\\udea3\\udeb4-\\udeb6]|\\ud83e[\\udd26\\udd35\\udd37-\\udd39\\udd3d\\udd3e\\uddb8\\uddb9\\uddcd-\\uddcf\\uddd4\\uddd6-\\udddd])(?:\\ud83c[\\udffb-\\udfff])?\\u200d[\\u2640\\u2642]\\ufe0f(?:\\u200d\\u27a1\\ufe0f)?|(?:\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83e\\uddd1\\u200d\\ud83e\\uddd1\\u200d\\ud83e\\uddd2\\u200d\\ud83e\\uddd2|\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83e\\uddd1\\u200d\\ud83e\\uddd1\\u200d\\ud83e\\uddd2|\\ud83e\\uddd1\\u200d\\ud83e\\uddd2\\u200d\\ud83e\\uddd2|\\ud83c\\udff3\\ufe0f\\u200d\\u26a7\\ufe0f|\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08|\\ud83d\\ude36\\u200d\\ud83c\\udf2b\\ufe0f|\\u26d3\\ufe0f\\u200d\\ud83d\\udca5|\\u2764\\ufe0f\\u200d\\ud83d\\udd25|\\u2764\\ufe0f\\u200d\\ud83e\\ude79|\\ud83c\\udf44\\u200d\\ud83d\\udfeb|\\ud83c\\udf4b\\u200d\\ud83d\\udfe9|\\ud83c\\udff4\\u200d\\u2620\\ufe0f|\\ud83d\\udc15\\u200d\\ud83e\\uddba|\\ud83d\\udc26\\u200d\\ud83d\\udd25|\\ud83d\\udc3b\\u200d\\u2744\\ufe0f|\\ud83d\\udc41\\u200d\\ud83d\\udde8|\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc6f\\u200d\\u2640\\ufe0f|\\ud83d\\udc6f\\u200d\\u2642\\ufe0f|\\ud83d\\ude2e\\u200d\\ud83d\\udca8|\\ud83d\\ude35\\u200d\\ud83d\\udcab|\\ud83d\\ude42\\u200d\\u2194\\ufe0f|\\ud83d\\ude42\\u200d\\u2195\\ufe0f|\\ud83e\\udd3c\\u200d\\u2640\\ufe0f|\\ud83e\\udd3c\\u200d\\u2642\\ufe0f|\\ud83e\\uddd1\\u200d\\ud83e\\uddd2|\\ud83e\\uddde\\u200d\\u2640\\ufe0f|\\ud83e\\uddde\\u200d\\u2642\\ufe0f|\\ud83e\\udddf\\u200d\\u2640\\ufe0f|\\ud83e\\udddf\\u200d\\u2642\\ufe0f|\\ud83d\\udc08\\u200d\\u2b1b|\\ud83d\\udc26\\u200d\\u2b1b)|[#*0-9]\\ufe0f?\\u20e3|(?:[©®\\u2122\\u265f]\\ufe0f)|(?:\\ud83c[\\udc04\\udd70\\udd71\\udd7e\\udd7f\\ude02\\ude1a\\ude2f\\ude37\\udf21\\udf24-\\udf2c\\udf36\\udf7d\\udf96\\udf97\\udf99-\\udf9b\\udf9e\\udf9f\\udfcd\\udfce\\udfd4-\\udfdf\\udff3\\udff5\\udff7]|\\ud83d[\\udc3f\\udc41\\udcfd\\udd49\\udd4a\\udd6f\\udd70\\udd73\\udd76-\\udd79\\udd87\\udd8a-\\udd8d\\udda5\\udda8\\uddb1\\uddb2\\uddbc\\uddc2-\\uddc4\\uddd1-\\uddd3\\udddc-\\uddde\\udde1\\udde3\\udde8\\uddef\\uddf3\\uddfa\\udecb\\udecd-\\udecf\\udee0-\\udee5\\udee9\\udef0\\udef3]|[\\u203c\\u2049\\u2139\\u2194-\\u2199\\u21a9\\u21aa\\u231a\\u231b\\u2328\\u23cf\\u23ed-\\u23ef\\u23f1\\u23f2\\u23f8-\\u23fa\\u24c2\\u25aa\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u2600-\\u2604\\u260e\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262a\\u262e\\u262f\\u2638-\\u263a\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267b\\u267f\\u2692-\\u2697\\u2699\\u269b\\u269c\\u26a0\\u26a1\\u26a7\\u26aa\\u26ab\\u26b0\\u26b1\\u26bd\\u26be\\u26c4\\u26c5\\u26c8\\u26cf\\u26d1\\u26d3\\u26d4\\u26e9\\u26ea\\u26f0-\\u26f5\\u26f8\\u26fa\\u26fd\\u2702\\u2708\\u2709\\u270f\\u2712\\u2714\\u2716\\u271d\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u2764\\u27a1\\u2934\\u2935\\u2b05-\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u3030\\u303d\\u3297\\u3299])(?:\\ufe0f|(?!\\ufe0e))|(?:(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75\\udd90]|\\ud83e\\udef0|[\\u261d\\u26f7\\u26f9\\u270c\\u270d])(?:\\ufe0f|(?!\\ufe0e))|(?:\\ud83c\\udfc3|\\ud83d\\udeb6|\\ud83e\\uddce)(?:\\ud83c[\\udffb-\\udfff])?(?:\\u200d\\u27a1\\ufe0f)?|(?:\\ud83c[\\udf85\\udfc2\\udfc4\\udfc7\\udfca]|\\ud83d[\\udc42\\udc43\\udc46-\\udc50\\udc66-\\udc69\\udc6e\\udc70-\\udc78\\udc7c\\udc81-\\udc83\\udc85-\\udc87\\udcaa\\udd7a\\udd95\\udd96\\ude45-\\ude47\\ude4b-\\ude4f\\udea3\\udeb4\\udeb5\\udec0\\udecc]|\\ud83e[\\udd0c\\udd0f\\udd18-\\udd1c\\udd1e\\udd1f\\udd26\\udd30-\\udd39\\udd3d\\udd3e\\udd77\\uddb5\\uddb6\\uddb8\\uddb9\\uddbb\\uddcd\\uddcf\\uddd1-\\udddd\\udec3-\\udec5\\udef1-\\udef8]|[\\u270a\\u270b]))(?:\\ud83c[\\udffb-\\udfff])?|(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f|\\ud83c\\udde6\\ud83c[\\udde8-\\uddec\\uddee\\uddf1\\uddf2\\uddf4\\uddf6-\\uddfa\\uddfc\\uddfd\\uddff]|\\ud83c\\udde7\\ud83c[\\udde6\\udde7\\udde9-\\uddef\\uddf1-\\uddf4\\uddf6-\\uddf9\\uddfb\\uddfc\\uddfe\\uddff]|\\ud83c\\udde8\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\uddee\\uddf0-\\uddf7\\uddfa-\\uddff]|\\ud83c\\udde9\\ud83c[\\uddea\\uddec\\uddef\\uddf0\\uddf2\\uddf4\\uddff]|\\ud83c\\uddea\\ud83c[\\udde6\\udde8\\uddea\\uddec\\udded\\uddf7-\\uddfa]|\\ud83c\\uddeb\\ud83c[\\uddee-\\uddf0\\uddf2\\uddf4\\uddf7]|\\ud83c\\uddec\\ud83c[\\udde6\\udde7\\udde9-\\uddee\\uddf1-\\uddf3\\uddf5-\\uddfa\\uddfc\\uddfe]|\\ud83c\\udded\\ud83c[\\uddf0\\uddf2\\uddf3\\uddf7\\uddf9\\uddfa]|\\ud83c\\uddee\\ud83c[\\udde8-\\uddea\\uddf1-\\uddf4\\uddf6-\\uddf9]|\\ud83c\\uddef\\ud83c[\\uddea\\uddf2\\uddf4\\uddf5]|\\ud83c\\uddf0\\ud83c[\\uddea\\uddec-\\uddee\\uddf2\\uddf3\\uddf5\\uddf7\\uddfc\\uddfe\\uddff]|\\ud83c\\uddf1\\ud83c[\\udde6-\\udde8\\uddee\\uddf0\\uddf7-\\uddfb\\uddfe]|\\ud83c\\uddf2\\ud83c[\\udde6\\udde8-\\udded\\uddf0-\\uddff]|\\ud83c\\uddf3\\ud83c[\\udde6\\udde8\\uddea-\\uddec\\uddee\\uddf1\\uddf4\\uddf5\\uddf7\\uddfa\\uddff]|\\ud83c\\uddf4\\ud83c\\uddf2|\\ud83c\\uddf5\\ud83c[\\udde6\\uddea-\\udded\\uddf0-\\uddf3\\uddf7-\\uddf9\\uddfc\\uddfe]|\\ud83c\\uddf6\\ud83c\\udde6|\\ud83c\\uddf7\\ud83c[\\uddea\\uddf4\\uddf8\\uddfa\\uddfc]|\\ud83c\\uddf8\\ud83c[\\udde6-\\uddea\\uddec-\\uddf4\\uddf7-\\uddf9\\uddfb\\uddfd-\\uddff]|\\ud83c\\uddf9\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\udded\\uddef-\\uddf4\\uddf7\\uddf9\\uddfb\\uddfc\\uddff]|\\ud83c\\uddfa\\ud83c[\\udde6\\uddec\\uddf2\\uddf3\\uddf8\\uddfe\\uddff]|\\ud83c\\uddfb\\ud83c[\\udde6\\udde8\\uddea\\uddec\\uddee\\uddf3\\uddfa]|\\ud83c\\uddfc\\ud83c[\\uddeb\\uddf8]|\\ud83c\\uddfd\\ud83c\\uddf0|\\ud83c\\uddfe\\ud83c[\\uddea\\uddf9]|\\ud83c\\uddff\\ud83c[\\udde6\\uddf2\\uddfc]|\\ud83c[\\udccf\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01\\ude32-\\ude36\\ude38-\\ude3a\\ude50\\ude51\\udf00-\\udf20\\udf2d-\\udf35\\udf37-\\udf7c\\udf7e-\\udf84\\udf86-\\udf93\\udfa0-\\udfc1\\udfc5\\udfc6\\udfc8\\udfc9\\udfcf-\\udfd3\\udfe0-\\udff0\\udff4\\udff8-\\udfff]|\\ud83d[\\udc00-\\udc3e\\udc40\\udc44\\udc45\\udc51-\\udc65\\udc6a\\udc6f\\udc79-\\udc7b\\udc7d-\\udc80\\udc84\\udc88-\\udc8e\\udc90\\udc92-\\udca9\\udcab-\\udcfc\\udcff-\\udd3d\\udd4b-\\udd4e\\udd50-\\udd67\\udda4\\uddfb-\\ude44\\ude48-\\ude4a\\ude80-\\udea2\\udea4-\\udeb3\\udeb7-\\udebf\\udec1-\\udec5\\uded0-\\uded2\\uded5-\\uded7\\udedc-\\udedf\\udeeb\\udeec\\udef4-\\udefc\\udfe0-\\udfeb\\udff0]|\\ud83e[\\udd0d\\udd0e\\udd10-\\udd17\\udd20-\\udd25\\udd27-\\udd2f\\udd3a\\udd3c\\udd3f-\\udd45\\udd47-\\udd76\\udd78-\\uddb4\\uddb7\\uddba\\uddbc-\\uddcc\\uddd0\\uddde-\\uddff\\ude70-\\ude7c\\ude80-\\ude89\\ude8f-\\udec2\\udec6\\udece-\\udedc\\udedf-\\udee9]|[\\u23e9-\\u23ec\\u23f0\\u23f3\\u267e\\u26ce\\u2705\\u2728\\u274c\\u274e\\u2753-\\u2755\\u2795-\\u2797\\u27b0\\u27bf\\ue50a])|\\ufe0f/g;\n\n/**\n * 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\n * @returns A clone of the Twemoji regex\n */\nexport function createTwemojiRegex(): RegExp {\n\treturn new RegExp(TwemojiRegex);\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/InteractionOptionResolver.ts","../../src/lib/limits.ts","../../src/lib/regexes.ts","../../src/lib/TwemojiRegex.ts"],"names":["ApplicationCommandOptionType","InteractionType","ApplicationCommandType","option"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n\tApplicationCommandOptionType,\n\tApplicationCommandType,\n\tInteractionType,\n\ttype APIApplicationCommandAutocompleteInteraction,\n\ttype APIApplicationCommandInteraction,\n\ttype APIApplicationCommandInteractionDataBasicOption,\n\ttype APIApplicationCommandInteractionDataIntegerOption,\n\ttype APIApplicationCommandInteractionDataNumberOption,\n\ttype APIApplicationCommandInteractionDataOption,\n\ttype APIApplicationCommandInteractionDataStringOption,\n\ttype APIAttachment,\n\ttype APIInteractionDataResolved,\n\ttype APIInteractionDataResolvedChannel,\n\ttype APIInteractionDataResolvedGuildMember,\n\ttype APIMessage,\n\ttype APIMessageApplicationCommandInteractionDataResolved,\n\ttype APIModalSubmitInteraction,\n\ttype APIRole,\n\ttype APIUser,\n\ttype APIUserInteractionDataResolved\n} from 'discord-api-types/v10';\n\n/**\n * Utility class for resolving command interaction options while working with the raw API.\n * Based on {@linkplain https://github.com/discordjs/discord.js/blob/main/packages/discord.js/src/structures/CommandInteractionOptionResolver.js}\n */\nexport class InteractionOptionResolver {\n\tprivate readonly interaction: APIApplicationCommandInteraction | APIApplicationCommandAutocompleteInteraction | APIModalSubmitInteraction;\n\n\t/**\n\t * The interaction options array\n\t */\n\tprivate readonly data: APIApplicationCommandInteractionDataOption[] | null = null;\n\n\t/**\n\t * The interaction resolved data\n\t */\n\tprivate readonly resolved:\n\t\t| APIInteractionDataResolved\n\t\t| APIUserInteractionDataResolved\n\t\t| APIMessageApplicationCommandInteractionDataResolved\n\t\t| null = null;\n\n\t/**\n\t * Bottom-level options for the interaction\n\t * If there is a subcommand (or subcommand and group), this represents the options for the subcommand.\n\t */\n\tprivate readonly hoistedOptions: APIApplicationCommandInteractionDataOption[] | null = null;\n\n\t/**\n\t * The name of the subcommand group\n\t */\n\tprivate readonly group: string | null = null;\n\n\t/**\n\t * The name of the subcommand\n\t */\n\tprivate readonly subcommand: string | null = null;\n\n\tpublic constructor(interaction: APIApplicationCommandInteraction | APIApplicationCommandAutocompleteInteraction | APIModalSubmitInteraction) {\n\t\tthis.interaction = interaction;\n\n\t\tthis.data = 'options' in interaction.data ? (interaction.data.options ?? null) : null;\n\n\t\tthis.resolved = 'resolved' in interaction.data ? (interaction.data.resolved ?? null) : null;\n\n\t\tthis.hoistedOptions = this.data;\n\n\t\t// Hoist subcommand group if present\n\t\tif (this.hoistedOptions?.[0]?.type === ApplicationCommandOptionType.SubcommandGroup) {\n\t\t\tthis.group = this.hoistedOptions[0].name;\n\t\t\tthis.hoistedOptions = this.hoistedOptions[0].options ?? [];\n\t\t}\n\n\t\t// Hoist subcommand if present\n\t\tif (this.hoistedOptions?.[0]?.type === ApplicationCommandOptionType.Subcommand) {\n\t\t\tthis.subcommand = this.hoistedOptions[0].name;\n\t\t\tthis.hoistedOptions = this.hoistedOptions[0].options ?? [];\n\t\t}\n\t}\n\n\t/**\n\t * Gets an option by its name\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic get<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIApplicationCommandInteractionDataOption>;\n\n\tpublic get(name: string, required = false): APIApplicationCommandInteractionDataOption | null {\n\t\tconst option = this.hoistedOptions?.find((opt) => opt.name === name);\n\t\tif (!option) {\n\t\t\tif (required) {\n\t\t\t\tthrow new Error(`Missing required option \"${name}\"`);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\treturn option;\n\t}\n\n\t/**\n\t * Gets the selected subcommand\n\t * @param required Whether to throw an error if there is no subcommand\n\t */\n\tpublic getSubcommand<Required extends boolean = false>(required?: Required): RequiredIf<Required, string>;\n\tpublic getSubcommand(required = true): string | null {\n\t\tif (required && !this.subcommand) {\n\t\t\tthrow new Error('A subcommand was not selected');\n\t\t}\n\n\t\treturn this.subcommand;\n\t}\n\n\t/**\n\t * Gets the selected subcommand group\n\t * @param required Whether to throw an error if there is no subcommand group\n\t */\n\tpublic getSubcommandGroup<Required extends boolean = false>(required?: Required): RequiredIf<Required, string>;\n\tpublic getSubcommandGroup(required = true): string | null {\n\t\tif (required && !this.group) {\n\t\t\tthrow new Error('A subcommand group was not selected');\n\t\t}\n\n\t\treturn this.group;\n\t}\n\n\t/**\n\t * Gets a boolean option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getBoolean<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, boolean>;\n\tpublic getBoolean(name: string, required = false): boolean | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Boolean, required);\n\t\treturn option?.value ?? null;\n\t}\n\n\t/**\n\t * Gets a channel option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getChannel<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIInteractionDataResolvedChannel>;\n\n\tpublic getChannel(name: string, required = false): APIInteractionDataResolvedChannel | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Channel, required);\n\t\treturn option && this.resolved && 'channels' in this.resolved ? (this.resolved.channels?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets a string option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getString<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, string>;\n\tpublic getString(name: string, required = false): string | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.String, required);\n\t\treturn option?.value ?? null;\n\t}\n\n\t/**\n\t * Gets an integer option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getInteger<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, number>;\n\tpublic getInteger(name: string, required = false): number | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Integer, required);\n\t\treturn (option?.value as number | null) ?? null;\n\t}\n\n\t/**\n\t * Gets a number option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getNumber<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, number>;\n\tpublic getNumber(name: string, required = false): number | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Number, required);\n\t\treturn (option?.value as number | null) ?? null;\n\t}\n\n\t/**\n\t * Gets a user option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getUser<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIUser>;\n\tpublic getUser(name: string, required = false): APIUser | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.User, required);\n\t\treturn option && this.resolved && 'users' in this.resolved ? (this.resolved.users?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets a member option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getMember<Required extends boolean = false>(\n\t\tname: string,\n\t\trequired?: Required\n\t): RequiredIf<Required, APIInteractionDataResolvedGuildMember>;\n\n\tpublic getMember(name: string, required = false): APIInteractionDataResolvedGuildMember | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.User, required);\n\t\treturn option && this.resolved && 'members' in this.resolved ? (this.resolved.members?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets a role option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getRole<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIRole>;\n\tpublic getRole(name: string, required = false): APIRole | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Role, required);\n\t\treturn option && this.resolved && 'roles' in this.resolved ? (this.resolved.roles?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets an attachment option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getAttachment<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIAttachment>;\n\tpublic getAttachment(name: string, required = false): APIAttachment | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Attachment, required);\n\t\treturn option && this.resolved && 'attachments' in this.resolved ? (this.resolved.attachments?.[option.value] ?? null) : null;\n\t}\n\n\t/**\n\t * Gets a mentionable option\n\t * @param name The name of the option\n\t * @param required Whether to throw an error if the option is not found\n\t */\n\tpublic getMentionable<Required extends boolean = false>(\n\t\tname: string,\n\t\trequired?: Required\n\t): RequiredIf<Required, APIUser | APIInteractionDataResolvedGuildMember | APIRole>;\n\n\tpublic getMentionable(name: string, required = false): APIUser | APIInteractionDataResolvedGuildMember | APIRole | null {\n\t\tconst option = this.getTypedOption(name, ApplicationCommandOptionType.Mentionable, required);\n\n\t\tif (!option || !this.resolved) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ('members' in this.resolved && this.resolved.members && option.value in this.resolved.members) {\n\t\t\treturn this.resolved.members[option.value] ?? null;\n\t\t}\n\n\t\tif ('users' in this.resolved && this.resolved.users && option.value in this.resolved.users) {\n\t\t\treturn this.resolved.users[option.value] ?? null;\n\t\t}\n\n\t\tif ('roles' in this.resolved && this.resolved.roles && option.value in this.resolved.roles) {\n\t\t\treturn this.resolved.roles[option.value] ?? null;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Gets the target user for a context menu interaction\n\t */\n\tpublic getTargetUser(): APIUser {\n\t\tif (this.interaction.type !== InteractionType.ApplicationCommand || this.interaction.data.type !== ApplicationCommandType.User) {\n\t\t\tthrow new Error('This method can only be used on user context menu interactions');\n\t\t}\n\n\t\treturn (this.resolved as APIUserInteractionDataResolved).users[this.interaction.data.target_id];\n\t}\n\n\t/**\n\t * Gets the target member for a context menu interaction\n\t * @param required Whether to throw an error if the member data is not present\n\t */\n\tpublic getTargetMember<Required extends boolean = false>(required?: Required): RequiredIf<Required, APIInteractionDataResolvedGuildMember>;\n\tpublic getTargetMember(required = false): APIInteractionDataResolvedGuildMember | null {\n\t\tif (this.interaction.type !== InteractionType.ApplicationCommand || this.interaction.data.type !== ApplicationCommandType.User) {\n\t\t\tthrow new Error('This method can only be used on user context menu interactions');\n\t\t}\n\n\t\tconst member = (this.resolved as APIUserInteractionDataResolved).members?.[this.interaction.data.target_id] ?? null;\n\n\t\tif (!member && required) {\n\t\t\tthrow new Error('Member data is not present');\n\t\t}\n\n\t\treturn member;\n\t}\n\n\t/**\n\t * Gets the target message for a context menu interaction\n\t */\n\tpublic getTargetMessage(): APIMessage {\n\t\tif (this.interaction.type !== InteractionType.ApplicationCommand || this.interaction.data.type !== ApplicationCommandType.Message) {\n\t\t\tthrow new Error('This method can only be used on message context menu interactions');\n\t\t}\n\n\t\treturn (this.resolved as APIMessageApplicationCommandInteractionDataResolved).messages[this.interaction.data.target_id];\n\t}\n\n\t/**\n\t * Gets the focused option for an autocomplete interaction\n\t */\n\tpublic getFocusedOption() {\n\t\tif (this.interaction.type !== InteractionType.ApplicationCommandAutocomplete) {\n\t\t\tthrow new Error('This method can only be used on autocomplete interactions');\n\t\t}\n\n\t\tconst focusedOption = this.hoistedOptions?.find((option) => 'focused' in option && option.focused) as\n\t\t\t| APIApplicationCommandInteractionDataStringOption\n\t\t\t| APIApplicationCommandInteractionDataIntegerOption\n\t\t\t| APIApplicationCommandInteractionDataNumberOption\n\t\t\t| undefined;\n\n\t\t// Considering the earlier check, this should be impossible, but it's here for good measure\n\t\tif (!focusedOption) {\n\t\t\tthrow new Error('No focused option for autocomplete interaction');\n\t\t}\n\n\t\tconst { focused, ...option } = focusedOption;\n\n\t\treturn option;\n\t}\n\n\tprivate getTypedOption<Option extends BasicApplicationCommandOptionType, Required extends boolean = false>(\n\t\tname: string,\n\t\ttype: Option,\n\t\trequired: Required\n\t): RequiredIf<Required, TypeToOptionMap[Option]>;\n\n\tprivate getTypedOption<Option extends BasicApplicationCommandOptionType>(\n\t\tname: string,\n\t\ttype: Option,\n\t\trequired: boolean\n\t): TypeToOptionMap[Option] | null {\n\t\tconst option = this.get(name, required);\n\t\tif (!option) {\n\t\t\treturn null;\n\t\t} else if (option.type !== type) {\n\t\t\tthrow new Error(`Option with name \"${name}\" is not of the correct type`);\n\t\t}\n\n\t\treturn option as TypeToOptionMap[Option];\n\t}\n}\n\ntype BasicApplicationCommandOptionType = APIApplicationCommandInteractionDataBasicOption['type'];\n\n// This extra type is required because apparently just inlining what `_TypeToOptionMap` does into `TypeToOptionMap` does not behave the same\ntype _TypeToOptionMap = {\n\t[Option in BasicApplicationCommandOptionType]: APIApplicationCommandInteractionDataBasicOption & { type: Option };\n};\n\ntype TypeToOptionMap = {\n\t[Option in keyof _TypeToOptionMap]: _TypeToOptionMap[Option];\n};\n\ntype If<Value extends boolean, TrueResult, FalseResult> = Value extends true\n\t? TrueResult\n\t: Value extends false\n\t\t? FalseResult\n\t\t: TrueResult | FalseResult;\n\ntype RequiredIf<Value extends boolean, ValueType, FallbackType = null> = If<Value, ValueType, ValueType | FallbackType>;\n","/**\n * Namespace containing limits related to Discord channels.\n */\nexport const ChannelLimits = {\n\t/**\n\t * Maximum characters allowed in a channel description.\n\t */\n\tMaximumDescriptionLength: 1024,\n\n\t/**\n\t * Maximum characters allowed in a channel name.\n\t */\n\tMaximumNameLength: 100,\n\n\t/**\n\t * Maximum viewers allowed per screen share.\n\t * @deprecated Use `VoiceChannelLimits.MaximumViewersPerScreenShare` instead.\n\t */\n\tMaximumViewersPerScreenShare: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord voice channels.\n */\nexport const VoiceChannelLimits = {\n\t/**\n\t * Maximum viewers allowed per screen share.\n\t */\n\tMaximumViewersPerScreenShare: 50,\n\n\t/**\n\t * Maximum user limit of voice channel.\n\t */\n\tMaximumUserLimit: 99\n};\n\n/**\n * Namespace containing limits related to Discord stage channels.\n */\nexport const StageChannelLimits = {\n\t/**\n\t * Maximum user limit of stage channel.\n\t */\n\tMaximumUserLimit: 250\n};\n\n/**\n * Namespace containing limits related to Discord text channels.\n */\nexport const TextChannelLimits = {\n\t/**\n\t * Maximum pins allowed in a text channel.\n\t */\n\tMaximumMessagePins: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord threads.\n */\nexport const ThreadLimits = {\n\t/**\n\t * Minimum number of threads to return from the threads API.\n\t */\n\tMinimumThreadsToFetch: 1,\n\n\t/**\n\t * Maximum number of threads to return from the threads API.\n\t */\n\tMaximumThreadsToFetch: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord embeds.\n */\nexport const EmbedLimits = {\n\t/**\n\t * Maximum characters allowed in the author field of an embed.\n\t */\n\tMaximumAuthorNameLength: 256,\n\n\t/**\n\t * Maximum characters allowed in an embed description.\n\t */\n\tMaximumDescriptionLength: 4096,\n\n\t/**\n\t * Maximum characters allowed in the name of a field in an embed.\n\t */\n\tMaximumFieldNameLength: 256,\n\n\t/**\n\t * Maximum fields allowed in an embed.\n\t */\n\tMaximumFields: 25,\n\n\t/**\n\t * Maximum characters allowed in the value of a field in an embed.\n\t */\n\tMaximumFieldValueLength: 1024,\n\n\t/**\n\t * Maximum characters allowed in a footer of an embed.\n\t */\n\tMaximumFooterLength: 2048,\n\n\t/**\n\t * Maximum characters allowed in the title of an embed.\n\t */\n\tMaximumTitleLength: 256,\n\n\t/**\n\t * Maximum characters allowed in an embed, in total.\n\t */\n\tMaximumTotalCharacters: 6000\n} as const;\n\n/**\n * Namespace containing limits related to Discord emojis.\n */\nexport const EmojiLimits = {\n\t/**\n\t * Maximum characters allowed in a custom guild emoji.\n\t */\n\tMaximumEmojiNameLength: 32,\n\n\t/**\n\t * Maximum size allowed for a custom guild emoji.\n\t * Size is in bytes, and corresponds to 256KB.\n\t */\n\tMaximumEmojiSize: 256_000\n} as const;\n\n/**\n * Namespace containing limits related to Discord guilds.\n */\nexport const GuildLimits = {\n\t/**\n\t * Maximum channels allowed per guild, including category channels.\n\t */\n\tMaximumChannels: 500,\n\n\t/**\n\t * Maximum roles allowed in a guild.\n\t */\n\tMaximumRoles: 250,\n\n\t/**\n\t * Maximum scheduled or active events allowed in a guild.\n\t */\n\tMaximumScheduledOrActiveEvents: 100,\n\n\t/**\n\t * Minimum number of user guilds to return from the user guilds API.\n\t */\n\tMinimumUserGuildsToFetch: 1,\n\n\t/**\n\t * Maximum number of user guilds to return from the user guilds API.\n\t */\n\tMaximumUserGuildsToFetch: 200,\n\n\t/**\n\t * Maximum static emojis allowed in a guild.\n\t */\n\tMaximumStaticEmojis: 50,\n\n\t/**\n\t * Maximum animated emojis allowed in a guild.\n\t */\n\tMaximumAnimatedEmojis: 50,\n\n\t/**\n\t * Maximum emojis (static and animated) allowed in a guild.\n\t */\n\tMaximumEmojis: 100,\n\n\t/**\n\t * Maximum stickers allowed in a guild.\n\t */\n\tMaximumStickers: 5\n} as const;\n\n/**\n * Namespace containing limits related to premium Discord guilds.\n */\nexport const PremiumGuildLimits = {\n\tTierOne: {\n\t\t/**\n\t\t * Maximum static emojis allowed in a guild.\n\t\t */\n\t\tMaximumStaticEmojis: 100,\n\n\t\t/**\n\t\t * Maximum animated emojis allowed in a guild.\n\t\t */\n\t\tMaximumAnimatedEmojis: 100,\n\n\t\t/**\n\t\t * Maximum emojis (static and animated) allowed in a guild.\n\t\t */\n\t\tMaximumEmojis: 200,\n\n\t\t/**\n\t\t * Maximum stickers allowed in a guild.\n\t\t */\n\t\tMaximumStickers: 15\n\t},\n\tTierTwo: {\n\t\t/**\n\t\t * Maximum static emojis allowed in a guild.\n\t\t */\n\t\tMaximumStaticEmojis: 150,\n\n\t\t/**\n\t\t * Maximum animated emojis allowed in a guild.\n\t\t */\n\t\tMaximumAnimatedEmojis: 150,\n\n\t\t/**\n\t\t * Maximum emojis (static and animated) allowed in a guild.\n\t\t */\n\t\tMaximumEmojis: 300,\n\n\t\t/**\n\t\t * Maximum stickers allowed in a guild.\n\t\t */\n\t\tMaximumStickers: 30\n\t},\n\tTierThree: {\n\t\t/**\n\t\t * Maximum static emojis allowed in a guild.\n\t\t */\n\t\tMaximumStaticEmojis: 250,\n\n\t\t/**\n\t\t * Maximum animated emojis allowed in a guild.\n\t\t */\n\t\tMaximumAnimatedEmojis: 250,\n\n\t\t/**\n\t\t * Maximum emojis (static and animated) allowed in a guild.\n\t\t */\n\t\tMaximumEmojis: 500,\n\n\t\t/**\n\t\t * Maximum stickers allowed in a guild.\n\t\t */\n\t\tMaximumStickers: 60\n\t}\n} as const;\n\n/**\n * Namespace containing limits related to Discord guild scheduled events.\n */\nexport const GuildScheduledEventLimits = {\n\t/**\n\t * Maximum number of users to return from the guild scheduled event users API.\n\t */\n\tMaximumUsersToFetch: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord guild members.\n */\nexport const GuildMemberLimits = {\n\t/**\n\t * Maximum characters allowed in the display name of a guild member.\n\t */\n\tMaximumDisplayNameLength: 32,\n\n\t/**\n\t * Minimum number of members to return from the guild members API.\n\t */\n\tMinimumMembersToFetch: 1,\n\n\t/**\n\t * Maximum number of members to return from the guild members API.\n\t */\n\tMaximumMembersToFetch: 1000\n} as const;\n\n/**\n * Namespace containing limits related to Discord guild bans.\n */\nexport const GuildBansLimits = {\n\t/**\n\t * Minimum number of bans to return from the guild bans API.\n\t */\n\tMinimumBansToFetch: 1,\n\n\t/**\n\t * Maximum number of bans to return from the guild bans API.\n\t */\n\tMaximumBansToFetch: 1000\n} as const;\n\n/**\n * Namespace containing limits related to Discord interactions.\n */\nexport const InteractionLimits = {\n\t/**\n\t * Maximum buttons allowed in a single action row.\n\t */\n\tMaximumButtonsPerActionRow: 5,\n\n\t/**\n\t * Maximum select menus allowed in a single action row.\n\t */\n\tMaximumSelectMenusPerActionRow: 1,\n\n\t/**\n\t * Maximum text inputs allowed in a single action row.\n\t */\n\tMaximumTextInputsPerActionRow: 1,\n\n\t/**\n\t * Maximum options allowed in a single select menu.\n\t */\n\tMaximumOptionsInSelectMenus: 25\n} as const;\n\n/**\n * Namespace containing limits related to Discord application commands (slash commands).\n */\nexport const ApplicationCommandLimits = {\n\t/**\n\t * Maximum characters allowed in an application command name.\n\t */\n\tMaximumNameCharacters: 32,\n\n\t/**\n\t * Maximum characters allowed in an application command description.\n\t */\n\tMaximumDescriptionCharacters: 100,\n\n\t/**\n\t * Maximum options allowed in an application command.\n\t */\n\tMaximumOptionsLength: 25,\n\n\t/**\n\t * Maximum combined characters allowed in the name, description, and value properties of an application command, its options (including subcommands and groups), and choices.\n\t */\n\tMaximumCombinedCharacters: 4000\n} as const;\n\n/**\n * Namespace containing limits related to Choices of Discord Application Commands.\n */\nexport const ApplicationCommandOptionLimits = {\n\t/**\n\t * Maximum characters allowed in the name of an option of an application command.\n\t */\n\tMaximumNameCharacters: 32,\n\n\t/**\n\t * Maximum characters allowed in the description of an option of an application command.\n\t */\n\tMaximumDescriptionCharacters: 100,\n\n\t/**\n\t * Maximum length of choices allowed in the option of an application command.\n\t */\n\tMaximumChoicesLength: 25,\n\n\t/**\n\t * Maximum length of string allowed in the string option of an application command.\n\t */\n\tMaximumStringLength: 6000\n} as const;\n\n/**\n * Namespace containing limits related to Permissions of Discord Application Commands.\n */\nexport const ApplicationCommandPermissionLimits = {\n\t/**\n\t * Maximum length of permissions allowed in the option of an application command.\n\t */\n\tMaximumPermissionsLength: 100\n} as const;\n\n/**\n * Namespace containing limits related to Message Buttons.\n */\nexport const ButtonLimits = {\n\t/**\n\t * Maximum characters allowed in a button label.\n\t */\n\tMaximumLabelCharacters: 80,\n\n\t/**\n\t * Maximum characters allowed in a button custom ID.\n\t */\n\tMaximumCustomIdCharacters: 100\n} as const;\n\n/**\n * Namespace containing limits related to Select Menus.\n */\nexport const SelectMenuLimits = {\n\t/**\n\t * Maximum characters allowed in a select menu custom ID.\n\t */\n\tMaximumCustomIdCharacters: 100,\n\n\t/**\n\t * Maximum amount of options allowed in a select menu.\n\t */\n\tMaximumOptionsLength: 25,\n\n\t/**\n\t * Maximum characters allowed in a select menu placeholder.\n\t */\n\tMaximumPlaceholderCharacters: 150,\n\n\t/**\n\t * Maximum \"minimum\" values allowed in a select menu.\n\t */\n\tMaximumMinValuesSize: 25,\n\n\t/**\n\t * Maximum \"maximum\" values allowed in a select menu.\n\t */\n\tMaximumMaxValuesSize: 25,\n\n\t/**\n\t * Maximum characters allowed in a select menu option's name.\n\t */\n\tMaximumLengthOfNameOfOption: 100,\n\n\t/**\n\t * Maximum characters allowed in a select menu option's description.\n\t */\n\tMaximumLengthOfDescriptionOfOption: 100,\n\n\t/**\n\t * Maximum characters allowed in a select menu option's value.\n\t */\n\tMaximumLengthOfValueOfOption: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord messages.\n */\nexport const MessageLimits = {\n\t/**\n\t * Maximum embeds allowed in a single message.\n\t */\n\tMaximumEmbeds: 10,\n\n\t/**\n\t * Maximum action rows allowed in a single message.\n\t */\n\tMaximumActionRows: 5,\n\n\t/**\n\t * Maximum characters allowed in a single message for a user.\n\t */\n\tMaximumLength: 2000,\n\n\t/**\n\t * Maximum characters allowed in a single message for a nitro user.\n\t */\n\tMaximumNitroLength: 4000,\n\n\t/**\n\t * Maximum numbers of reactions allowed for a message.\n\t */\n\tMaximumReactions: 20,\n\n\t/**\n\t * Maximum upload size for a free user in a guild of tier 1 or below, or in DMs.\n\t * Size is in bytes, and corresponds to 25MB.\n\t */\n\tMaximumUploadSize: 25_000_000,\n\n\t/**\n\t * Maximum upload size for a Nitro Basic user, in any guild or in DMs.\n\t * Size is in bytes, and corresponds to 50MB.\n\t */\n\tMaximumNitroBasicUploadSize: 50_000_000,\n\n\t/**\n\t * Maximum upload size for a Nitro user, in any guild or in DMs.\n\t * Size is in bytes, and corresponds to 500MB.\n\t */\n\tMaximumNitroUploadSize: 500_000_000,\n\n\t/**\n\t * Maximum upload size for a free user for all different boost levels available in a guild.\n\t * Sizes are in bytes, and correspond to 25MB, 25MB, 50MB, and 100MB.\n\t */\n\tMaximumUploadSizeInGuild: [25_000_000, 25_000_000, 50_000_000, 100_000_000],\n\n\t/**\n\t * Minimum number of messages to return from the channel messages API.\n\t */\n\tMinimumMessagesToFetch: 1,\n\n\t/**\n\t * Maximum number of messages to return from the channel messages API.\n\t */\n\tMaximumMessagesToFetch: 100,\n\n\t/**\n\t * Maximum request size when sending a messages.\n\t * Size is in bytes, and corresponds to 25MB.\n\t */\n\tMaximumRequestSize: 25_000_000,\n\n\t/**\n\t * Minimum number of messages to delete in a single bulk delete request.\n\t */\n\tMinimumMessagesToBulkDelete: 2,\n\n\t/**\n\t * Maximum number of messages to delete in a single bulk delete request.\n\t */\n\tMaximumMessagesToBulkDelete: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord message reactions.\n */\nexport const ReactionLimits = {\n\t/**\n\t * Minimum number of reactions to fetch from the message reactions API.\n\t */\n\tMinimumReactionToFetch: 1,\n\n\t/**\n\t * Maximum number of reactions to fetch from the message reactions API.\n\t */\n\tMaximumReactionsToFetch: 100\n};\n\n/**\n * Namespace containing limits related to built-in moderation features.\n */\nexport const ModerationLimits = {\n\t/**\n\t * Maximum duration of a guild timeout, in seconds (corresponds to 28 days).\n\t */\n\tMaximumTimeoutDuration: 2_419_200\n} as const;\n\n/**\n * Namespace containing limits related to Discord roles.\n */\nexport const RoleLimits = {\n\t/**\n\t * Maximum characters allowed in a role name.\n\t */\n\tMaximumNameLength: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord users and Direct Messages.\n */\nexport const UserLimits = {\n\t/**\n\t * Maximum numbers of users in a DM group.\n\t */\n\tMaximumUsersPerDMGroup: 10,\n\n\t/**\n\t * Maximum characters allowed in a user's biography (the \"About Me\" section).\n\t */\n\tMaximumBiographyLength: 190\n} as const;\n\n/**\n * Namespace container limits related to Discord autocomplete interactions.\n */\nexport const AutoCompleteLimits = {\n\t/**\n\t * Maximum options allowed in a single autocomplete response.\n\t */\n\tMaximumAmountOfOptions: 25,\n\n\t/**\n\t * Maximum characters allowed in a select menu option's name.\n\t */\n\tMaximumLengthOfNameOfOption: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Modals.\n */\nexport const ModalLimits = {\n\t/**\n\t * Maximum characters allowed in a modal custom ID.\n\t */\n\tMaximumCustomIdCharacters: 100,\n\n\t/**\n\t * Maximum characters allowed in a modal title.\n\t */\n\tMaximumTitleCharacters: 45,\n\n\t/**\n\t * Maximum components allowed in a modal.\n\t */\n\tMaximumComponents: 5\n} as const;\n\n/**\n * Namespace containing limits related to Discord Modal Text Input component.\n */\nexport const TextInputLimits = {\n\t/**\n\t * Maximum characters allowed in a text input custom ID.\n\t */\n\tMaximumCustomIdCharacters: 100,\n\n\t/**\n\t * Maximum characters allowed in a text input label.\n\t */\n\tMaximumLabelCharacters: 45,\n\n\t/**\n\t * Maximum characters allowed in a text input placeholder.\n\t */\n\tMaximumPlaceholderCharacters: 100,\n\n\t/**\n\t * Maximum characters allowed in a text input value.\n\t */\n\tMaximumValueCharacters: 4000\n} as const;\n\n/**\n * Namespace containing limits related to Discord Application Role Connections.\n */\nexport const ApplicationRoleConnectionLimits = {\n\t/**\n\t * Maximum application role connection metadata records an application can have.\n\t */\n\tMaximumMetadataRecords: 5,\n\n\t/**\n\t * Maximum characters allowed in metadata values.\n\t */\n\tMaximumMetadataValueLength: 100,\n\n\t/**\n\t * Maximum characters allowed in a platform name.\n\t */\n\tMaximumPlatformNameLength: 50,\n\n\t/**\n\t * Maximum characters allowed in a platform username.\n\t */\n\tMaximumPlatformUsernameLength: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Guild Audit Logs.\n */\nexport const GuildAuditLogsLimits = {\n\t/**\n\t * Minimum number of entries to return from the guild audit log API.\n\t */\n\tMinimumEntriesToFetch: 1,\n\n\t/**\n\t * Maximum number of entries to return from the guild audit log API.\n\t */\n\tMaximumEntriesToFetch: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Auto Moderation Rules.\n */\nexport const AutoModerationRuleLimits = {\n\t/**\n\t * Maximum number of exempt roles a rule can have.\n\t */\n\tMaximumExemptRoles: 20,\n\n\t/**\n\t * Maximum number of exempt channels a rule can have.\n\t */\n\tMaximumExemptChannels: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord Auto Moderation Triggers.\n */\nexport const TriggerTypeLimits = {\n\t/**\n\t * Maximum number of keyword triggers a guild can have.\n\t */\n\tMaximumKeywordTriggersPerGuild: 6,\n\n\t/**\n\t * Maximum number of mention spam triggers a guild can have.\n\t */\n\tMaximumSpamTriggersPerGuild: 1,\n\n\t/**\n\t * Maximum number of keyword triggers a channel can have.\n\t */\n\tMaximumKeywordPresetTriggersPerChannel: 1,\n\n\t/**\n\t * Maximum number of mention spam triggers a channel can have.\n\t */\n\tMaximumMentionSpamTriggersPerChannel: 1\n} as const;\n\n/**\n * Namespace containing limits related to Discord Auto Moderation Trigger Metadata.\n */\nexport const TriggerMetadataLimits = {\n\t/**\n\t * Maximum number of substrings which will be searched for in content.\n\t */\n\tMaximumKeywordFilters: 1000,\n\n\t/**\n\t * Maximum number of characters allowed in a keyword filter.\n\t */\n\tMaximumKeywordFilterLength: 60,\n\n\t/**\n\t * Maximum number of regular expression patterns which will be matched against content.\n\t */\n\tMaximumRegexPatterns: 10,\n\n\t/**\n\t * Maximum number of characters allowed in a regular expression pattern.\n\t */\n\tMaximumCharactersPerRegexPattern: 260,\n\n\t/**\n\t * Maximum number of substrings which should not trigger the keyword rule.\n\t */\n\tMaximumKeywordAllowListLength: 100,\n\n\t/**\n\t * Maximum characters per keyword that should not trigger the keyword rule.\n\t */\n\tMaximumKeywordAllowListKeywordLength: 60,\n\n\t/**\n\t * Maximum characters per keyword should not trigger the keyword preset rule.\n\t */\n\tMaximumKeywordPresetAllowListKeywordPresetLength: 60,\n\n\t/**\n\t * Maximum number of substrings which should not trigger the keyword preset rule.\n\t */\n\tMaximumKeywordPresetAllowListLength: 1000,\n\n\t/**\n\t * Maximum number of unique role and user mentions allowed per message.\n\t */\n\tMaximumMentionSpamTotalMentions: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord Auto Moderation Action Metadata.\n */\nexport const ActionMetadataLimits = {\n\t/**\n\t * Maximum timeout duration in seconds.\n\t */\n\tMaximumTimeoutDurationSeconds: 2_419_200,\n\n\t/**\n\t * Maximum number of characters allowed in a custom block message.\n\t */\n\tMaximumCustomBlockMessageLength: 150\n} as const;\n\n/**\n * Namespace containing limits related to Discord Message Allowed Mentions.\n */\nexport const AllowedMentionsLimits = {\n\t/**\n\t * Maximum number of users allowed in an allowed mentions object.\n\t */\n\tMaximumUsers: 100,\n\n\t/**\n\t * Maximum number of roles allowed in an allowed mentions object.\n\t */\n\tMaximumRoles: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Channel Invites.\n */\nexport const ChannelInviteLimits = {\n\t/**\n\t * Maximum age of an invite in seconds.\n\t */\n\tMaximumAgeSeconds: 604_800,\n\n\t/**\n\t * Maximum number of uses allowed for an invite.\n\t */\n\tMaximumUses: 100\n} as const;\n\n/**\n * Namespace containing limits related to Discord Guild Integrations.\n */\nexport const GuildIntegrationLimits = {\n\t/**\n\t * Maximum number of integrations returned from the guild integrations API. Needs a more description name than \"MaximumIntegrations\".\n\t */\n\tMaximumIntegrationsToFetch: 50\n} as const;\n\n/**\n * Namespace containing limits related to Discord Stickers.\n */\nexport const StickerLimits = {\n\t/**\n\t * Maximum number of characters allowed in the autocomplete/suggestion tags for the sticker.\n\t */\n\tMaximumTagsLength: 200,\n\n\t/**\n\t * Maximum size allowed for a sticker.\n\t * Size is in bytes, and corresponds to 512KB.\n\t */\n\tMaximumStickerSize: 512_000\n};\n","/**\n * Regex that can capture the ID in Discord Channel mentions\n * @raw `/^<#(?<id>\\d{17,20})>$/`\n * @remark Capture group 1 is the ID of the channel. It is named `id`.\n */\nexport const ChannelMentionRegex = /^<#(?<id>\\d{17,20})>$/;\n\n/**\n * Regex that can capture the channel and message IDs in a channelId-messageId pattern\n * This pattern can be found when you hold Shift and hover over a message, and click the \"ID\" button\n * @raw `/^(?<channelId>\\d{17,20})-(?<messageId>\\d{17,20})$/`\n * @remark Capture group 1 is the ID of the channel, named `channelId`.\n * @remark Capture group 2 is the ID of the message, named `messageId`.\n */\nexport const ChannelMessageRegex = /^(?<channelId>\\d{17,20})-(?<messageId>\\d{17,20})$/;\n\n/**\n * Regex that matches links on the known Discord host names\n * @raw `/(?<subdomain>\\w+)\\.?(?<hostname>dis(?:cord)?(?:app|merch|status)?)\\.(?<tld>com|g(?:d|g|ift)|(?:de(?:sign|v))|media|new|store|net)/i`\n * @remark The regex is case insensitive\n * @remark Capture group 1 is the subdomain for this URL. It is named `subdomain`.\n * @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`.\n * @remark Capture group 3 is the Top-Level Domain *without* `.`. It is named `tld`.\n */\nexport const DiscordHostnameRegex =\n\t/(?<subdomain>\\w+)\\.?(?<hostname>dis(?:cord)?(?:app|merch|status)?)\\.(?<tld>com|g(?:d|g|ift)|(?:de(?:sign|v))|media|new|store|net)/i;\n\n/**\n * Regex that can can capture the code of Discord invite links\n * @raw `/(?:^|\\b)discord(?:(?:app)?\\.com\\/invite|\\.gg(?:\\/invite)?)\\/(?<code>[\\w-]{2,255})(?:$|\\b)/gi`\n * @remark Capture group 1 is the invite URL's unique code. It is named `code`.\n */\nexport const DiscordInviteLinkRegex = /(?:^|\\b)discord(?:(?:app)?\\.com\\/invite|\\.gg(?:\\/invite)?)\\/(?<code>[\\w-]{2,255})(?:$|\\b)/gi;\n\n/**\n * Regex that can capture the ID of any animated or non-animated custom Discord emoji\n * @raw `/^(?:<(?<animated>a)?:(?<name>\\w{2,32}):)?(?<id>\\d{17,21})>?$/`\n * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.\n * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.\n * @remark Capture group 3 is the ID of the emoji. It is named `id`.\n */\nexport const EmojiRegex = /^(?:<(?<animated>a)?:(?<name>\\w{2,32}):)?(?<id>\\d{17,21})>?$/;\n\n/**\n * Regex that matches any animated or non-animated custom Discord emoji.\n * Unlike {@link EmojiRegex} It can be a substring of a larger string.\n * @raw `/<a?:\\w{2,32}:\\d{17,20}>/`\n */\nexport const FormattedCustomEmoji = /<a?:\\w{2,32}:\\d{17,20}>/;\n\n/**\n * Regex that can capture any animated or non-animated custom Discord emoji.\n * Similar to {@link FormattedCustomEmoji} and unlike {@link EmojiRegex} can also be a substring of a larger string.\n * @raw `/(?<animated>a?):(?<name>[^:]+):(?<id>\\d{17,20})/`\n * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.\n * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.\n * @remark Capture group 3 is the ID of the emoji. It is named `id`.\n */\nexport const FormattedCustomEmojiWithGroups = /(?<animated>a?):(?<name>[^:]+):(?<id>\\d{17,20})/;\n\n/**\n * Regex that matches any URL starting with `http` or `https`\n * @raw `/^https?:\\/\\//`\n * @remark for WebSocket URLs see {@link WebSocketUrlRegex}\n */\nexport const HttpUrlRegex = /^https?:\\/\\//;\n\n/**\n * Regex that can capture the Guild, Channel, and Message ID based on a shareable Discord message link.\n * @raw `/^(?:https:\\/\\/)?(?:ptb\\.|canary\\.)?discord(?:app)?\\.com\\/channels\\/(?<guildId>(?:\\d{17,20}|@me))\\/(?<channelId>\\d{17,20})\\/(?<messageId>\\d{17,20})$/`\n * @remark Capture group 1 is the ID of the guild the message was sent in. It is named `guildId`.\n * @remark Capture group 2 is the ID of the channel in that guild the message was sent in. It is named `channelId`.\n * @remark Capture group 3 is the ID of the message itself. It is named `messageId`.\n */\nexport const MessageLinkRegex =\n\t/^(?:https:\\/\\/)?(?:ptb\\.|canary\\.)?discord(?:app)?\\.com\\/channels\\/(?<guildId>(?:\\d{17,20}|@me))\\/(?<channelId>\\d{17,20})\\/(?<messageId>\\d{17,20})$/;\n\n/**\n * Regex that matches any animated or non-animated custom Discord emoji *without the wrapping `<...>` symbols.\n * This means that a string that matches this regex can directly be send inside a Discord message.\n * Other than this difference it is similar to {@link FormattedCustomEmoji}.\n * @raw `/a?:\\w{2,32}:\\d{17,20}/`\n */\nexport const ParsedCustomEmoji = /a?:\\w{2,32}:\\d{17,20}/;\n\n/**\n * Regex that matches any animated or non-animated custom Discord emoji *without the wrapping `<...>` symbols.\n * This means that a string that matches this regex can directly be send inside a Discord message.\n * Other than this difference it is similar to {@link FormattedCustomEmojiWithGroups}.\n * @raw `/(?<animated>a?):(?<name>[^:]+):(?<id>\\d{17,20})/`\n * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.\n * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.\n * @remark Capture group 3 is the ID of the emoji. It is named `id`.\n */\nexport const ParsedCustomEmojiWithGroups = /(?<animated>a?):(?<name>[^:]+):(?<id>\\d{17,20})/;\n\n/**\n * Regex that can capture the ID in Discord Role mentions\n * @raw `/^<@&(?<id>\\d{17,20})>$/`\n * @remark Capture group 1 is the ID of the role. It is named `id`.\n */\nexport const RoleMentionRegex = /^<@&(?<id>\\d{17,20})>$/;\n\n/**\n * Regex that can capture any Discord Snowflake ID\n * @raw `/^(?<id>\\d{17,20})$/`\n * @remark Capture group 1 is the Snowflake. It is named `id`.\n */\nexport const SnowflakeRegex = /^(?<id>\\d{17,20})$/;\n\n/**\n * Regex that can capture a Discord Token\n * @raw `/(?<mfaToken>mfa\\.[a-z0-9_-]{20,})|(?<basicToken>[a-z0-9_-]{23,28}\\.[a-z0-9_-]{6,7}\\.[a-z0-9_-]{27})/i`\n * @remark Capture group 1 can be used to retrieve a token for a User that has Multi-Factor Authentication enabled. It is named `mfaToken`.\n * @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`.\n * @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\n * contain the matched token.\n * 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.\n * If both capture groups are undefined, then the token is invalid.\n */\nexport const TokenRegex = /(?<mfaToken>mfa\\.[a-z0-9_-]{20,})|(?<basicToken>[a-z0-9_-]{23,28}\\.[a-z0-9_-]{6,7}\\.[a-z0-9_-]{27})/i;\n\n/**\n * Regex that can capture the ID of a user in Discord user mentions\n * @raw `/^<@!?(?<id>\\d{17,20})>$/`\n * @remark Capture group 1 is the ID of the user. It is named `id`.\n */\nexport const UserOrMemberMentionRegex = /^<@!?(?<id>\\d{17,20})>$/;\n\n/**\n * Regex that matches any WebSocket URL starting with `ws` or `wss`\n * @raw `/^wss?:\\/\\//`\n * @remark for regular HTTP URLs see {@link HttpUrlRegex}\n */\nexport const WebSocketUrlRegex = /^wss?:\\/\\//;\n\n/**\n * Regex that captures the Webhook ID and token from a Discord Webhook URL.\n * @raw `/(?<url>^https:\\/\\/(?:(?:canary|ptb).)?discord(?:app)?.com\\/api(?:\\/v\\d+)?\\/webhooks\\/(?<id>\\d+)\\/(?<token>[\\w-]+)\\/?$)/`\n * @remark Capture group 1 is the full URL of the Discord Webhook. It is named `url`.\n * @remark Capture group 2 is the ID of the Discord Webhook. It is named `id`.\n * @remark Capture group 3 is the token of the Discord Webhook. It is named `token`.\n * @remark for regular HTTP URLs see {@link HttpUrlRegex}\n */\nexport const WebhookRegex = /(?<url>^https:\\/\\/(?:(?:canary|ptb).)?discord(?:app)?.com\\/api(?:\\/v\\d+)?\\/webhooks\\/(?<id>\\d+)\\/(?<token>[\\w-]+)\\/?$)/;\n","/**\n * Regex that can capture a Twemoji (Twitter Emoji)\n * @raw {@linkplain https://github.com/jdecked/twemoji-parser/blob/main/src/lib/regex.js See official source code}\n */\nexport const TwemojiRegex =\n\t/(?:\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\udef1\\ud83c\\udffb\\u200d\\ud83e\\udef2\\ud83c[\\udffc-\\udfff]|\\ud83e\\udef1\\ud83c\\udffc\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\udef1\\ud83c\\udffd\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\udef1\\ud83c\\udffe\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\udef1\\ud83c\\udfff\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1|\\ud83d\\udc6b\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6c\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6d\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc8f\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc91\\ud83c[\\udffb-\\udfff]|\\ud83e\\udd1d\\ud83c[\\udffb-\\udfff]|\\ud83d[\\udc6b-\\udc6d\\udc8f\\udc91]|\\ud83e\\udd1d)|(?:\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1)(?:\\ud83c[\\udffb-\\udfff])?\\u200d(?:\\u2695\\ufe0f|\\u2696\\ufe0f|\\u2708\\ufe0f|\\ud83c[\\udf3e\\udf73\\udf7c\\udf84\\udf93\\udfa4\\udfa8\\udfeb\\udfed]|\\ud83d[\\udcbb\\udcbc\\udd27\\udd2c\\ude80\\ude92]|\\ud83e[\\uddaf-\\uddb3\\uddbc\\uddbd])(?:\\u200d\\u27a1\\ufe0f)?|(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75]|\\u26f9)((?:\\ud83c[\\udffb-\\udfff]|\\ufe0f)\\u200d[\\u2640\\u2642]\\ufe0f(?:\\u200d\\u27a1\\ufe0f)?)|(?:\\ud83c[\\udfc3\\udfc4\\udfca]|\\ud83d[\\udc6e\\udc70\\udc71\\udc73\\udc77\\udc81\\udc82\\udc86\\udc87\\ude45-\\ude47\\ude4b\\ude4d\\ude4e\\udea3\\udeb4-\\udeb6]|\\ud83e[\\udd26\\udd35\\udd37-\\udd39\\udd3d\\udd3e\\uddb8\\uddb9\\uddcd-\\uddcf\\uddd4\\uddd6-\\udddd])(?:\\ud83c[\\udffb-\\udfff])?\\u200d[\\u2640\\u2642]\\ufe0f(?:\\u200d\\u27a1\\ufe0f)?|(?:\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83e\\uddd1\\u200d\\ud83e\\uddd1\\u200d\\ud83e\\uddd2\\u200d\\ud83e\\uddd2|\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83e\\uddd1\\u200d\\ud83e\\uddd1\\u200d\\ud83e\\uddd2|\\ud83e\\uddd1\\u200d\\ud83e\\uddd2\\u200d\\ud83e\\uddd2|\\ud83c\\udff3\\ufe0f\\u200d\\u26a7\\ufe0f|\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08|\\ud83d\\ude36\\u200d\\ud83c\\udf2b\\ufe0f|\\u26d3\\ufe0f\\u200d\\ud83d\\udca5|\\u2764\\ufe0f\\u200d\\ud83d\\udd25|\\u2764\\ufe0f\\u200d\\ud83e\\ude79|\\ud83c\\udf44\\u200d\\ud83d\\udfeb|\\ud83c\\udf4b\\u200d\\ud83d\\udfe9|\\ud83c\\udff4\\u200d\\u2620\\ufe0f|\\ud83d\\udc15\\u200d\\ud83e\\uddba|\\ud83d\\udc26\\u200d\\ud83d\\udd25|\\ud83d\\udc3b\\u200d\\u2744\\ufe0f|\\ud83d\\udc41\\u200d\\ud83d\\udde8|\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc6f\\u200d\\u2640\\ufe0f|\\ud83d\\udc6f\\u200d\\u2642\\ufe0f|\\ud83d\\ude2e\\u200d\\ud83d\\udca8|\\ud83d\\ude35\\u200d\\ud83d\\udcab|\\ud83d\\ude42\\u200d\\u2194\\ufe0f|\\ud83d\\ude42\\u200d\\u2195\\ufe0f|\\ud83e\\udd3c\\u200d\\u2640\\ufe0f|\\ud83e\\udd3c\\u200d\\u2642\\ufe0f|\\ud83e\\uddd1\\u200d\\ud83e\\uddd2|\\ud83e\\uddde\\u200d\\u2640\\ufe0f|\\ud83e\\uddde\\u200d\\u2642\\ufe0f|\\ud83e\\udddf\\u200d\\u2640\\ufe0f|\\ud83e\\udddf\\u200d\\u2642\\ufe0f|\\ud83d\\udc08\\u200d\\u2b1b|\\ud83d\\udc26\\u200d\\u2b1b)|[#*0-9]\\ufe0f?\\u20e3|(?:[©®\\u2122\\u265f]\\ufe0f)|(?:\\ud83c[\\udc04\\udd70\\udd71\\udd7e\\udd7f\\ude02\\ude1a\\ude2f\\ude37\\udf21\\udf24-\\udf2c\\udf36\\udf7d\\udf96\\udf97\\udf99-\\udf9b\\udf9e\\udf9f\\udfcd\\udfce\\udfd4-\\udfdf\\udff3\\udff5\\udff7]|\\ud83d[\\udc3f\\udc41\\udcfd\\udd49\\udd4a\\udd6f\\udd70\\udd73\\udd76-\\udd79\\udd87\\udd8a-\\udd8d\\udda5\\udda8\\uddb1\\uddb2\\uddbc\\uddc2-\\uddc4\\uddd1-\\uddd3\\udddc-\\uddde\\udde1\\udde3\\udde8\\uddef\\uddf3\\uddfa\\udecb\\udecd-\\udecf\\udee0-\\udee5\\udee9\\udef0\\udef3]|[\\u203c\\u2049\\u2139\\u2194-\\u2199\\u21a9\\u21aa\\u231a\\u231b\\u2328\\u23cf\\u23ed-\\u23ef\\u23f1\\u23f2\\u23f8-\\u23fa\\u24c2\\u25aa\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u2600-\\u2604\\u260e\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262a\\u262e\\u262f\\u2638-\\u263a\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267b\\u267f\\u2692-\\u2697\\u2699\\u269b\\u269c\\u26a0\\u26a1\\u26a7\\u26aa\\u26ab\\u26b0\\u26b1\\u26bd\\u26be\\u26c4\\u26c5\\u26c8\\u26cf\\u26d1\\u26d3\\u26d4\\u26e9\\u26ea\\u26f0-\\u26f5\\u26f8\\u26fa\\u26fd\\u2702\\u2708\\u2709\\u270f\\u2712\\u2714\\u2716\\u271d\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u2764\\u27a1\\u2934\\u2935\\u2b05-\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u3030\\u303d\\u3297\\u3299])(?:\\ufe0f|(?!\\ufe0e))|(?:(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75\\udd90]|\\ud83e\\udef0|[\\u261d\\u26f7\\u26f9\\u270c\\u270d])(?:\\ufe0f|(?!\\ufe0e))|(?:\\ud83c\\udfc3|\\ud83d\\udeb6|\\ud83e\\uddce)(?:\\ud83c[\\udffb-\\udfff])?(?:\\u200d\\u27a1\\ufe0f)?|(?:\\ud83c[\\udf85\\udfc2\\udfc4\\udfc7\\udfca]|\\ud83d[\\udc42\\udc43\\udc46-\\udc50\\udc66-\\udc69\\udc6e\\udc70-\\udc78\\udc7c\\udc81-\\udc83\\udc85-\\udc87\\udcaa\\udd7a\\udd95\\udd96\\ude45-\\ude47\\ude4b-\\ude4f\\udea3\\udeb4\\udeb5\\udec0\\udecc]|\\ud83e[\\udd0c\\udd0f\\udd18-\\udd1c\\udd1e\\udd1f\\udd26\\udd30-\\udd39\\udd3d\\udd3e\\udd77\\uddb5\\uddb6\\uddb8\\uddb9\\uddbb\\uddcd\\uddcf\\uddd1-\\udddd\\udec3-\\udec5\\udef1-\\udef8]|[\\u270a\\u270b]))(?:\\ud83c[\\udffb-\\udfff])?|(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f|\\ud83c\\udde6\\ud83c[\\udde8-\\uddec\\uddee\\uddf1\\uddf2\\uddf4\\uddf6-\\uddfa\\uddfc\\uddfd\\uddff]|\\ud83c\\udde7\\ud83c[\\udde6\\udde7\\udde9-\\uddef\\uddf1-\\uddf4\\uddf6-\\uddf9\\uddfb\\uddfc\\uddfe\\uddff]|\\ud83c\\udde8\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\uddee\\uddf0-\\uddf7\\uddfa-\\uddff]|\\ud83c\\udde9\\ud83c[\\uddea\\uddec\\uddef\\uddf0\\uddf2\\uddf4\\uddff]|\\ud83c\\uddea\\ud83c[\\udde6\\udde8\\uddea\\uddec\\udded\\uddf7-\\uddfa]|\\ud83c\\uddeb\\ud83c[\\uddee-\\uddf0\\uddf2\\uddf4\\uddf7]|\\ud83c\\uddec\\ud83c[\\udde6\\udde7\\udde9-\\uddee\\uddf1-\\uddf3\\uddf5-\\uddfa\\uddfc\\uddfe]|\\ud83c\\udded\\ud83c[\\uddf0\\uddf2\\uddf3\\uddf7\\uddf9\\uddfa]|\\ud83c\\uddee\\ud83c[\\udde8-\\uddea\\uddf1-\\uddf4\\uddf6-\\uddf9]|\\ud83c\\uddef\\ud83c[\\uddea\\uddf2\\uddf4\\uddf5]|\\ud83c\\uddf0\\ud83c[\\uddea\\uddec-\\uddee\\uddf2\\uddf3\\uddf5\\uddf7\\uddfc\\uddfe\\uddff]|\\ud83c\\uddf1\\ud83c[\\udde6-\\udde8\\uddee\\uddf0\\uddf7-\\uddfb\\uddfe]|\\ud83c\\uddf2\\ud83c[\\udde6\\udde8-\\udded\\uddf0-\\uddff]|\\ud83c\\uddf3\\ud83c[\\udde6\\udde8\\uddea-\\uddec\\uddee\\uddf1\\uddf4\\uddf5\\uddf7\\uddfa\\uddff]|\\ud83c\\uddf4\\ud83c\\uddf2|\\ud83c\\uddf5\\ud83c[\\udde6\\uddea-\\udded\\uddf0-\\uddf3\\uddf7-\\uddf9\\uddfc\\uddfe]|\\ud83c\\uddf6\\ud83c\\udde6|\\ud83c\\uddf7\\ud83c[\\uddea\\uddf4\\uddf8\\uddfa\\uddfc]|\\ud83c\\uddf8\\ud83c[\\udde6-\\uddea\\uddec-\\uddf4\\uddf7-\\uddf9\\uddfb\\uddfd-\\uddff]|\\ud83c\\uddf9\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\udded\\uddef-\\uddf4\\uddf7\\uddf9\\uddfb\\uddfc\\uddff]|\\ud83c\\uddfa\\ud83c[\\udde6\\uddec\\uddf2\\uddf3\\uddf8\\uddfe\\uddff]|\\ud83c\\uddfb\\ud83c[\\udde6\\udde8\\uddea\\uddec\\uddee\\uddf3\\uddfa]|\\ud83c\\uddfc\\ud83c[\\uddeb\\uddf8]|\\ud83c\\uddfd\\ud83c\\uddf0|\\ud83c\\uddfe\\ud83c[\\uddea\\uddf9]|\\ud83c\\uddff\\ud83c[\\udde6\\uddf2\\uddfc]|\\ud83c[\\udccf\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01\\ude32-\\ude36\\ude38-\\ude3a\\ude50\\ude51\\udf00-\\udf20\\udf2d-\\udf35\\udf37-\\udf7c\\udf7e-\\udf84\\udf86-\\udf93\\udfa0-\\udfc1\\udfc5\\udfc6\\udfc8\\udfc9\\udfcf-\\udfd3\\udfe0-\\udff0\\udff4\\udff8-\\udfff]|\\ud83d[\\udc00-\\udc3e\\udc40\\udc44\\udc45\\udc51-\\udc65\\udc6a\\udc6f\\udc79-\\udc7b\\udc7d-\\udc80\\udc84\\udc88-\\udc8e\\udc90\\udc92-\\udca9\\udcab-\\udcfc\\udcff-\\udd3d\\udd4b-\\udd4e\\udd50-\\udd67\\udda4\\uddfb-\\ude44\\ude48-\\ude4a\\ude80-\\udea2\\udea4-\\udeb3\\udeb7-\\udebf\\udec1-\\udec5\\uded0-\\uded2\\uded5-\\uded7\\udedc-\\udedf\\udeeb\\udeec\\udef4-\\udefc\\udfe0-\\udfeb\\udff0]|\\ud83e[\\udd0d\\udd0e\\udd10-\\udd17\\udd20-\\udd25\\udd27-\\udd2f\\udd3a\\udd3c\\udd3f-\\udd45\\udd47-\\udd76\\udd78-\\uddb4\\uddb7\\uddba\\uddbc-\\uddcc\\uddd0\\uddde-\\uddff\\ude70-\\ude7c\\ude80-\\ude89\\ude8f-\\udec2\\udec6\\udece-\\udedc\\udedf-\\udee9]|[\\u23e9-\\u23ec\\u23f0\\u23f3\\u267e\\u26ce\\u2705\\u2728\\u274c\\u274e\\u2753-\\u2755\\u2795-\\u2797\\u27b0\\u27bf\\ue50a])|\\ufe0f/g;\n\n/**\n * 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\n * @returns A clone of the Twemoji regex\n */\nexport function createTwemojiRegex(): RegExp {\n\treturn new RegExp(TwemojiRegex);\n}\n"]}