types: reverse interface inheritance to omit Omit (#10923)

This commit is contained in:
Qjuh
2025-07-04 17:24:01 +02:00
committed by GitHub
parent e6d59eaf9a
commit 42fbca83c8
2 changed files with 178 additions and 135 deletions

View File

@@ -564,9 +564,7 @@ export abstract class CommandInteraction<Cached extends CacheType = CacheType> e
| ModalComponentData, | ModalComponentData,
options?: ShowModalOptions, options?: ShowModalOptions,
): Promise<InteractionCallbackResponse<BooleanCache<Cached>> | undefined>; ): Promise<InteractionCallbackResponse<BooleanCache<Cached>> | undefined>;
public awaitModalSubmit( public awaitModalSubmit(options: AwaitModalSubmitOptions): Promise<ModalSubmitInteraction<Cached>>;
options: AwaitModalSubmitOptions<ModalSubmitInteraction>,
): Promise<ModalSubmitInteraction<Cached>>;
private transformOption( private transformOption(
option: APIApplicationCommandOption, option: APIApplicationCommandOption,
resolved: Extract<APIApplicationCommandInteractionData, { resolved: any }>['resolved'], resolved: Extract<APIApplicationCommandInteractionData, { resolved: any }>['resolved'],
@@ -603,7 +601,14 @@ export class BaseGuildEmoji extends Emoji {
public requiresColons: boolean | null; public requiresColons: boolean | null;
} }
export interface BaseGuildTextChannel extends TextBasedChannelFields<true> {} export interface BaseGuildTextChannel
extends TextBasedChannelFields<true>,
PinnableChannelFields,
WebhookChannelFields,
BulkDeleteMethod,
SetRateLimitPerUserMethod,
MessageChannelFields,
SendMethod<true> {}
export class BaseGuildTextChannel extends GuildChannel { export class BaseGuildTextChannel extends GuildChannel {
protected constructor(guild: Guild, data?: RawGuildChannelData, client?: Client<true>, immediatePatch?: boolean); protected constructor(guild: Guild, data?: RawGuildChannelData, client?: Client<true>, immediatePatch?: boolean);
public defaultAutoArchiveDuration?: ThreadAutoArchiveDuration; public defaultAutoArchiveDuration?: ThreadAutoArchiveDuration;
@@ -623,7 +628,13 @@ export class BaseGuildTextChannel extends GuildChannel {
public setType(type: ChannelType.GuildAnnouncement, reason?: string): Promise<AnnouncementChannel>; public setType(type: ChannelType.GuildAnnouncement, reason?: string): Promise<AnnouncementChannel>;
} }
export interface BaseGuildVoiceChannel extends Omit<TextBasedChannelFields<true>, 'lastPinAt' | 'lastPinTimestamp'> {} export interface BaseGuildVoiceChannel
extends TextBasedChannelFields<true>,
WebhookChannelFields,
BulkDeleteMethod,
SetRateLimitPerUserMethod,
MessageChannelFields,
SendMethod<true> {}
export class BaseGuildVoiceChannel extends GuildChannel { export class BaseGuildVoiceChannel extends GuildChannel {
public constructor(guild: Guild, data?: RawGuildChannelData); public constructor(guild: Guild, data?: RawGuildChannelData);
public bitrate: number; public bitrate: number;
@@ -774,12 +785,20 @@ export interface IconData {
proxyIconURL?: string; proxyIconURL?: string;
} }
export interface EmbedAuthorData extends Omit<APIEmbedAuthor, 'icon_url' | 'proxy_icon_url'>, IconData {} export interface EmbedAuthorData extends IconData {
name: string;
url?: string;
}
export interface EmbedFooterData extends Omit<APIEmbedFooter, 'icon_url' | 'proxy_icon_url'>, IconData {} export interface EmbedFooterData extends IconData {
text: string;
}
export interface EmbedAssetData extends Omit<APIEmbedImage, 'proxy_url'> { export interface EmbedAssetData {
height?: number;
proxyURL?: string; proxyURL?: string;
url: string;
width?: number;
} }
export class Embed { export class Embed {
@@ -897,7 +916,7 @@ export class Client<Ready extends boolean = boolean> extends BaseClient<ClientEv
public channels: ChannelManager; public channels: ChannelManager;
public guilds: GuildManager; public guilds: GuildManager;
public lastPingTimestamps: ReadonlyCollection<number, number>; public lastPingTimestamps: ReadonlyCollection<number, number>;
public options: Omit<ClientOptions, 'intents'> & { intents: IntentsBitField }; public options: ClientOptions & { intents: IntentsBitField };
public get ping(): number | null; public get ping(): number | null;
public get readyAt(): If<Ready, Date>; public get readyAt(): If<Ready, Date>;
public readyTimestamp: If<Ready, number>; public readyTimestamp: If<Ready, number>;
@@ -1245,10 +1264,10 @@ export class PrimaryEntryPointCommandInteraction<
} }
export interface DMChannel export interface DMChannel
extends Omit< extends TextBasedChannelFields<false, true>,
TextBasedChannelFields<false, true>, PinnableChannelFields,
'bulkDelete' | 'createWebhook' | 'fetchWebhooks' | 'setNSFW' | 'setRateLimitPerUser' MessageChannelFields,
> {} SendMethod<false> {}
export class DMChannel extends BaseChannel { export class DMChannel extends BaseChannel {
private constructor(client: Client<true>, data?: RawDMChannelData); private constructor(client: Client<true>, data?: RawDMChannelData);
public flags: Readonly<ChannelFlagsBitField>; public flags: Readonly<ChannelFlagsBitField>;
@@ -1592,7 +1611,7 @@ export class GuildMemberFlagsBitField extends BitField<GuildMemberFlagsString> {
public static resolve(bit?: BitFieldResolvable<GuildMemberFlagsString, GuildMemberFlags>): number; public static resolve(bit?: BitFieldResolvable<GuildMemberFlagsString, GuildMemberFlags>): number;
} }
export interface GuildMember extends PartialTextBasedChannelFields<false> {} export interface GuildMember extends SendMethod<false> {}
export class GuildMember extends Base { export class GuildMember extends Base {
private constructor(client: Client<true>, data: unknown, guild: Guild); private constructor(client: Client<true>, data: unknown, guild: Guild);
private readonly _roles: Snowflake[]; private readonly _roles: Snowflake[];
@@ -2095,10 +2114,7 @@ export interface MessageChannelCollectorOptionsParams<
export interface AwaitMessageCollectorOptionsParams< export interface AwaitMessageCollectorOptionsParams<
ComponentType extends MessageComponentType, ComponentType extends MessageComponentType,
Cached extends boolean = boolean, Cached extends boolean = boolean,
> extends Pick< > extends AwaitMessageComponentOptions<MappedInteractionTypes<Cached>[ComponentType]> {
InteractionCollectorOptions<MappedInteractionTypes<Cached>[ComponentType]>,
keyof AwaitMessageComponentOptions<any>
> {
componentType?: ComponentType; componentType?: ComponentType;
} }
@@ -2347,9 +2363,7 @@ export class MessageComponentInteraction<Cached extends CacheType = CacheType> e
| ModalComponentData, | ModalComponentData,
options?: ShowModalOptions, options?: ShowModalOptions,
): Promise<InteractionCallbackResponse<BooleanCache<Cached>> | undefined>; ): Promise<InteractionCallbackResponse<BooleanCache<Cached>> | undefined>;
public awaitModalSubmit( public awaitModalSubmit(options: AwaitModalSubmitOptions): Promise<ModalSubmitInteraction<Cached>>;
options: AwaitModalSubmitOptions<ModalSubmitInteraction>,
): Promise<ModalSubmitInteraction<Cached>>;
} }
export class MessageContextMenuCommandInteraction< export class MessageContextMenuCommandInteraction<
@@ -2601,19 +2615,7 @@ export class OAuth2Guild extends BaseGuild {
public permissions: Readonly<PermissionsBitField>; public permissions: Readonly<PermissionsBitField>;
} }
export interface PartialGroupDMChannel export interface PartialGroupDMChannel extends TextBasedChannelFields<false, false>, PinnableChannelFields {}
extends Omit<
TextBasedChannelFields<false, false>,
| 'awaitMessages'
| 'bulkDelete'
| 'createMessageCollector'
| 'createWebhook'
| 'fetchWebhooks'
| 'send'
| 'sendTyping'
| 'setNSFW'
| 'setRateLimitPerUser'
> {}
export class PartialGroupDMChannel extends BaseChannel { export class PartialGroupDMChannel extends BaseChannel {
private constructor(client: Client<true>, data: RawPartialGroupDMChannelData); private constructor(client: Client<true>, data: RawPartialGroupDMChannelData);
public type: ChannelType.GroupDM; public type: ChannelType.GroupDM;
@@ -2648,20 +2650,7 @@ export interface DefaultReactionEmoji {
name: string | null; name: string | null;
} }
export interface ThreadOnlyChannel export interface ThreadOnlyChannel extends WebhookChannelFields, SetRateLimitPerUserMethod {}
extends Omit<
TextBasedChannelFields,
| 'awaitMessageComponent'
| 'awaitMessages'
| 'bulkDelete'
| 'createMessageCollector'
| 'createMessageComponentCollector'
| 'lastMessage'
| 'lastPinAt'
| 'messages'
| 'send'
| 'sendTyping'
> {}
export abstract class ThreadOnlyChannel extends GuildChannel { export abstract class ThreadOnlyChannel extends GuildChannel {
public type: ChannelType.GuildForum | ChannelType.GuildMedia; public type: ChannelType.GuildForum | ChannelType.GuildMedia;
public threads: GuildForumThreadManager; public threads: GuildForumThreadManager;
@@ -3392,7 +3381,12 @@ export interface PrivateThreadChannel extends ThreadChannel<false> {
} }
export interface ThreadChannel<ThreadOnly extends boolean = boolean> export interface ThreadChannel<ThreadOnly extends boolean = boolean>
extends Omit<TextBasedChannelFields<true>, 'createWebhook' | 'fetchWebhooks' | 'setNSFW'> {} extends TextBasedChannelFields<true>,
PinnableChannelFields,
BulkDeleteMethod,
SetRateLimitPerUserMethod,
MessageChannelFields,
SendMethod<true> {}
export class ThreadChannel<ThreadOnly extends boolean = boolean> extends BaseChannel { export class ThreadChannel<ThreadOnly extends boolean = boolean> extends BaseChannel {
private constructor(guild: Guild, data?: RawThreadChannelData, client?: Client<true>); private constructor(guild: Guild, data?: RawThreadChannelData, client?: Client<true>);
public archived: boolean | null; public archived: boolean | null;
@@ -3513,7 +3507,7 @@ export class UnfurledMediaItem {
public get url(): string; public get url(): string;
} }
export interface User extends PartialTextBasedChannelFields<false> {} export interface User extends SendMethod<false> {}
export class User extends Base { export class User extends Base {
protected constructor(client: Client<true>, data: unknown); protected constructor(client: Client<true>, data: unknown);
private _equals(user: APIUser): boolean; private _equals(user: APIUser): boolean;
@@ -4036,7 +4030,7 @@ export class ApplicationCommandManager<
guildId: Snowflake, guildId: Snowflake,
): Promise<ApplicationCommand>; ): Promise<ApplicationCommand>;
public fetch( public fetch(
options: Snowflake | (Omit<FetchApplicationCommandOptions, 'guildId'> & { id: Snowflake }), options: Snowflake | (FetchGuildApplicationCommandFetchOptions & { id: Snowflake }),
): Promise<ApplicationCommandScope>; ): Promise<ApplicationCommandScope>;
public fetch( public fetch(
options: FetchApplicationCommandOptions & { guildId: Snowflake; id: Snowflake }, options: FetchApplicationCommandOptions & { guildId: Snowflake; id: Snowflake },
@@ -4199,7 +4193,11 @@ export class SubscriptionManager extends CachedManager<Snowflake, Subscription,
public fetch(options: FetchSubscriptionsOptions): Promise<Collection<Snowflake, Subscription>>; public fetch(options: FetchSubscriptionsOptions): Promise<Collection<Snowflake, Subscription>>;
} }
export interface FetchGuildApplicationCommandFetchOptions extends Omit<FetchApplicationCommandOptions, 'guildId'> {} export interface FetchGuildApplicationCommandFetchOptions extends BaseFetchOptions {
id?: Snowflake;
locale?: Locale;
withLocalizations?: boolean;
}
export class GuildApplicationCommandManager extends ApplicationCommandManager<ApplicationCommand, {}, Guild> { export class GuildApplicationCommandManager extends ApplicationCommandManager<ApplicationCommand, {}, Guild> {
private constructor(guild: Guild, iterable?: Iterable<APIApplicationCommand>); private constructor(guild: Guild, iterable?: Iterable<APIApplicationCommand>);
@@ -4416,7 +4414,9 @@ export interface FetchGuildSoundboardSoundOptions extends BaseFetchOptions {
soundboardSound: SoundboardSoundResolvable; soundboardSound: SoundboardSoundResolvable;
} }
export interface FetchGuildSoundboardSoundsOptions extends Pick<BaseFetchOptions, 'cache'> {} export interface FetchGuildSoundboardSoundsOptions {
cache?: boolean;
}
export class GuildSoundboardSoundManager extends CachedManager<Snowflake, SoundboardSound, SoundboardSoundResolvable> { export class GuildSoundboardSoundManager extends CachedManager<Snowflake, SoundboardSound, SoundboardSoundResolvable> {
private constructor(guild: Guild, iterable?: Iterable<APISoundboardSound>); private constructor(guild: Guild, iterable?: Iterable<APISoundboardSound>);
@@ -4658,34 +4658,48 @@ export class VoiceStateManager extends CachedManager<Snowflake, VoiceState, type
export type Constructable<Entity> = abstract new (...args: any[]) => Entity; export type Constructable<Entity> = abstract new (...args: any[]) => Entity;
export interface PartialTextBasedChannelFields<InGuild extends boolean = boolean> { export interface SendMethod<InGuild extends boolean = boolean> {
send(options: MessageCreateOptions | MessagePayload | string): Promise<Message<InGuild>>; send(options: MessageCreateOptions | MessagePayload | string): Promise<Message<InGuild>>;
} }
export interface TextBasedChannelFields<InGuild extends boolean = boolean, InDM extends boolean = boolean> export interface PinnableChannelFields {
extends PartialTextBasedChannelFields<InGuild> { get lastPinAt(): Date | null;
awaitMessageComponent<ComponentType extends MessageComponentType>( lastPinTimestamp: number | null;
options?: AwaitMessageCollectorOptionsParams<ComponentType, true>, }
): Promise<MappedInteractionTypes[ComponentType]>;
awaitMessages(options?: AwaitMessagesOptions): Promise<Collection<Snowflake, Message>>; export interface BulkDeleteMethod {
bulkDelete( bulkDelete(
messages: Collection<Snowflake, Message> | number | readonly MessageResolvable[], messages: Collection<Snowflake, Message> | number | readonly MessageResolvable[],
filterOld?: boolean, filterOld?: boolean,
): Promise<Snowflake[]>; ): Promise<Snowflake[]>;
}
export interface SetRateLimitPerUserMethod {
setRateLimitPerUser(rateLimitPerUser: number, reason?: string): Promise<this>;
}
export interface WebhookChannelFields {
createWebhook(options: ChannelWebhookCreateOptions): Promise<Webhook<WebhookType.Incoming>>;
fetchWebhooks(): Promise<Collection<Snowflake, Webhook<WebhookType.ChannelFollower | WebhookType.Incoming>>>;
setNSFW(nsfw?: boolean, reason?: string): Promise<this>;
}
export interface MessageChannelFields {
awaitMessages(options?: AwaitMessagesOptions): Promise<Collection<Snowflake, Message>>;
createMessageCollector(options?: MessageCollectorOptions): MessageCollector; createMessageCollector(options?: MessageCollectorOptions): MessageCollector;
sendTyping(): Promise<void>;
}
export interface TextBasedChannelFields<InGuild extends boolean = boolean, InDM extends boolean = boolean> {
awaitMessageComponent<ComponentType extends MessageComponentType>(
options?: AwaitMessageCollectorOptionsParams<ComponentType, true>,
): Promise<MappedInteractionTypes[ComponentType]>;
createMessageComponentCollector<ComponentType extends MessageComponentType>( createMessageComponentCollector<ComponentType extends MessageComponentType>(
options?: MessageChannelCollectorOptionsParams<ComponentType, true>, options?: MessageChannelCollectorOptionsParams<ComponentType, true>,
): InteractionCollector<MappedInteractionTypes[ComponentType]>; ): InteractionCollector<MappedInteractionTypes[ComponentType]>;
createWebhook(options: ChannelWebhookCreateOptions): Promise<Webhook<WebhookType.Incoming>>;
fetchWebhooks(): Promise<Collection<Snowflake, Webhook<WebhookType.ChannelFollower | WebhookType.Incoming>>>;
get lastMessage(): Message | null; get lastMessage(): Message | null;
lastMessageId: Snowflake | null; lastMessageId: Snowflake | null;
get lastPinAt(): Date | null;
lastPinTimestamp: number | null;
messages: If<InGuild, GuildMessageManager, If<InDM, DMMessageManager, PartialGroupDMMessageManager>>; messages: If<InGuild, GuildMessageManager, If<InDM, DMMessageManager, PartialGroupDMMessageManager>>;
sendTyping(): Promise<void>;
setNSFW(nsfw?: boolean, reason?: string): Promise<this>;
setRateLimitPerUser(rateLimitPerUser: number, reason?: string): Promise<this>;
} }
export interface PartialWebhookFields { export interface PartialWebhookFields {
@@ -4714,16 +4728,17 @@ export interface WebhookFields extends PartialWebhookFields {
// #region Typedefs // #region Typedefs
export interface ActivitiesOptions extends Omit<ActivityOptions, 'shardId'> {} export interface ActivitiesOptions {
export interface ActivityOptions {
name: string; name: string;
shardId?: number | readonly number[];
state?: string; state?: string;
type?: ActivityType; type?: ActivityType;
url?: string; url?: string;
} }
export interface ActivityOptions extends ActivitiesOptions {
shardId?: number | readonly number[];
}
export interface AddGuildMemberOptions { export interface AddGuildMemberOptions {
accessToken: string; accessToken: string;
deaf?: boolean; deaf?: boolean;
@@ -4785,12 +4800,13 @@ export type CommandOptionNonChoiceResolvableType = Exclude<
CommandOptionChannelResolvableType | CommandOptionChoiceResolvableType | CommandOptionSubOptionResolvableType CommandOptionChannelResolvableType | CommandOptionChoiceResolvableType | CommandOptionSubOptionResolvableType
>; >;
export interface BaseApplicationCommandOptionsData { export interface CommonBaseApplicationCommandOptionsData {
autocomplete?: never;
description: string; description: string;
descriptionLocalizations?: LocalizationMap; descriptionLocalizations?: LocalizationMap;
name: string; name: string;
nameLocalizations?: LocalizationMap; nameLocalizations?: LocalizationMap;
}
export interface BaseApplicationCommandOptionsData extends CommonBaseApplicationCommandOptionsData {
required?: boolean; required?: boolean;
} }
@@ -4861,24 +4877,21 @@ export interface ApplicationCommandAttachmentOption extends BaseApplicationComma
type: ApplicationCommandOptionType.Attachment; type: ApplicationCommandOptionType.Attachment;
} }
export interface ApplicationCommandAutocompleteNumericOption export interface ApplicationCommandAutocompleteNumericOption extends BaseApplicationCommandOptionsData {
extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
autocomplete: true; autocomplete: true;
maxValue?: number; maxValue?: number;
minValue?: number; minValue?: number;
type: CommandOptionNumericResolvableType; type: CommandOptionNumericResolvableType;
} }
export interface ApplicationCommandAutocompleteStringOption export interface ApplicationCommandAutocompleteStringOption extends BaseApplicationCommandOptionsData {
extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
autocomplete: true; autocomplete: true;
maxLength?: number; maxLength?: number;
minLength?: number; minLength?: number;
type: ApplicationCommandOptionType.String; type: ApplicationCommandOptionType.String;
} }
export interface ApplicationCommandAutocompleteNumericOptionData export interface ApplicationCommandAutocompleteNumericOptionData extends BaseApplicationCommandOptionsData {
extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
autocomplete: true; autocomplete: true;
maxValue?: number; maxValue?: number;
max_value?: number; max_value?: number;
@@ -4887,8 +4900,7 @@ export interface ApplicationCommandAutocompleteNumericOptionData
type: CommandOptionNumericResolvableType; type: CommandOptionNumericResolvableType;
} }
export interface ApplicationCommandAutocompleteStringOptionData export interface ApplicationCommandAutocompleteStringOptionData extends BaseApplicationCommandOptionsData {
extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
autocomplete: true; autocomplete: true;
maxLength?: number; maxLength?: number;
max_length?: number; max_length?: number;
@@ -4898,14 +4910,14 @@ export interface ApplicationCommandAutocompleteStringOptionData
} }
export interface ApplicationCommandChoicesData<Type extends number | string = number | string> export interface ApplicationCommandChoicesData<Type extends number | string = number | string>
extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> { extends BaseApplicationCommandOptionsData {
autocomplete?: false; autocomplete?: false;
choices?: readonly ApplicationCommandOptionChoiceData<Type>[]; choices?: readonly ApplicationCommandOptionChoiceData<Type>[];
type: CommandOptionChoiceResolvableType; type: CommandOptionChoiceResolvableType;
} }
export interface ApplicationCommandChoicesOption<Type extends number | string = number | string> export interface ApplicationCommandChoicesOption<Type extends number | string = number | string>
extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> { extends BaseApplicationCommandOptionsData {
autocomplete?: false; autocomplete?: false;
choices?: readonly ApplicationCommandOptionChoiceData<Type>[]; choices?: readonly ApplicationCommandOptionChoiceData<Type>[];
type: CommandOptionChoiceResolvableType; type: CommandOptionChoiceResolvableType;
@@ -4947,17 +4959,17 @@ export interface ApplicationCommandBooleanOption extends BaseApplicationCommandO
type: ApplicationCommandOptionType.Boolean; type: ApplicationCommandOptionType.Boolean;
} }
export interface ApplicationCommandSubGroupData extends Omit<BaseApplicationCommandOptionsData, 'required'> { export interface ApplicationCommandSubGroupData extends CommonBaseApplicationCommandOptionsData {
options: readonly ApplicationCommandSubCommandData[]; options: readonly ApplicationCommandSubCommandData[];
type: ApplicationCommandOptionType.SubcommandGroup; type: ApplicationCommandOptionType.SubcommandGroup;
} }
export interface ApplicationCommandSubGroup extends Omit<BaseApplicationCommandOptionsData, 'required'> { export interface ApplicationCommandSubGroup extends CommonBaseApplicationCommandOptionsData {
options?: readonly ApplicationCommandSubCommand[]; options?: readonly ApplicationCommandSubCommand[];
type: ApplicationCommandOptionType.SubcommandGroup; type: ApplicationCommandOptionType.SubcommandGroup;
} }
export interface ApplicationCommandSubCommandData extends Omit<BaseApplicationCommandOptionsData, 'required'> { export interface ApplicationCommandSubCommandData extends CommonBaseApplicationCommandOptionsData {
options?: readonly Exclude< options?: readonly Exclude<
ApplicationCommandOptionData, ApplicationCommandOptionData,
ApplicationCommandSubCommandData | ApplicationCommandSubGroupData ApplicationCommandSubCommandData | ApplicationCommandSubGroupData
@@ -4965,7 +4977,7 @@ export interface ApplicationCommandSubCommandData extends Omit<BaseApplicationCo
type: ApplicationCommandOptionType.Subcommand; type: ApplicationCommandOptionType.Subcommand;
} }
export interface ApplicationCommandSubCommand extends Omit<BaseApplicationCommandOptionsData, 'required'> { export interface ApplicationCommandSubCommand extends CommonBaseApplicationCommandOptionsData {
options?: readonly Exclude<ApplicationCommandOption, ApplicationCommandSubCommand | ApplicationCommandSubGroup>[]; options?: readonly Exclude<ApplicationCommandOption, ApplicationCommandSubCommand | ApplicationCommandSubGroup>[];
type: ApplicationCommandOptionType.Subcommand; type: ApplicationCommandOptionType.Subcommand;
} }
@@ -5068,7 +5080,12 @@ export interface AutoModerationAction {
type: AutoModerationActionType; type: AutoModerationActionType;
} }
export interface AutoModerationActionMetadata { export interface BaseAutoModerationActionMetadata {
customMessage?: string | null;
durationSeconds?: number | null;
}
export interface AutoModerationActionMetadata extends BaseAutoModerationActionMetadata {
channelId: Snowflake | null; channelId: Snowflake | null;
customMessage: string | null; customMessage: string | null;
durationSeconds: number | null; durationSeconds: number | null;
@@ -5084,13 +5101,12 @@ export interface AutoModerationTriggerMetadata {
} }
export interface AwaitMessageComponentOptions<Interaction extends CollectedMessageInteraction> export interface AwaitMessageComponentOptions<Interaction extends CollectedMessageInteraction>
extends Omit<MessageComponentCollectorOptions<Interaction>, 'max' | 'maxComponents' | 'maxUsers'> {} extends CollectorOptions<[Interaction, Collection<Snowflake, Interaction>]> {
componentType?: ComponentType;
}
export interface ModalSubmitInteractionCollectorOptions<Interaction extends ModalSubmitInteraction> export interface AwaitModalSubmitOptions
extends Omit<InteractionCollectorOptions<Interaction>, 'channel' | 'guild' | 'interactionType' | 'message'> {} extends CollectorOptions<[ModalSubmitInteraction, Collection<Snowflake, ModalSubmitInteraction>]> {
export interface AwaitModalSubmitOptions<Interaction extends ModalSubmitInteraction>
extends Omit<ModalSubmitInteractionCollectorOptions<Interaction>, 'max' | 'maxComponents' | 'maxUsers'> {
time: number; time: number;
} }
@@ -5380,8 +5396,7 @@ export interface ClientFetchInviteOptions {
guildScheduledEventId?: Snowflake; guildScheduledEventId?: Snowflake;
} }
export interface ClientOptions { export interface ClientOptions extends WebhookClientOptions {
allowedMentions?: MessageMentionOptions;
closeTimeout?: number; closeTimeout?: number;
enforceNonce?: boolean; enforceNonce?: boolean;
failIfNotExists?: boolean; failIfNotExists?: boolean;
@@ -5390,7 +5405,6 @@ export interface ClientOptions {
makeCache?: CacheFactory; makeCache?: CacheFactory;
partials?: readonly Partials[]; partials?: readonly Partials[];
presence?: PresenceData; presence?: PresenceData;
rest?: Partial<RESTOptions>;
sweepers?: SweeperOptions; sweepers?: SweeperOptions;
waitGuildTimeout?: number; waitGuildTimeout?: number;
ws?: Partial<WebSocketManagerOptions>; ws?: Partial<WebSocketManagerOptions>;
@@ -5455,8 +5469,9 @@ export interface CommandInteractionResolvedData<Cached extends CacheType = Cache
users?: ReadonlyCollection<Snowflake, User>; users?: ReadonlyCollection<Snowflake, User>;
} }
export interface AutocompleteFocusedOption extends Pick<CommandInteractionOption, 'name'> { export interface AutocompleteFocusedOption {
focused: true; focused: true;
name: string;
type: type:
| ApplicationCommandOptionType.Integer | ApplicationCommandOptionType.Integer
| ApplicationCommandOptionType.Number | ApplicationCommandOptionType.Number
@@ -5652,11 +5667,8 @@ export type EmojiIdentifierResolvable =
export type EmojiResolvable = ApplicationEmoji | GuildEmoji | ReactionEmoji | Snowflake; export type EmojiResolvable = ApplicationEmoji | GuildEmoji | ReactionEmoji | Snowflake;
export interface FetchApplicationCommandOptions extends BaseFetchOptions { export interface FetchApplicationCommandOptions extends FetchGuildApplicationCommandFetchOptions {
guildId?: Snowflake; guildId?: Snowflake;
id?: Snowflake;
locale?: Locale;
withLocalizations?: boolean;
} }
export interface FetchArchivedThreadOptions { export interface FetchArchivedThreadOptions {
@@ -5955,28 +5967,32 @@ export type GuildBanResolvable = GuildBan | UserResolvable;
export type GuildChannelResolvable = GuildBasedChannel | Snowflake; export type GuildChannelResolvable = GuildBasedChannel | Snowflake;
export interface AutoModerationRuleCreateOptions { export interface AutoModerationRuleCreateOptions extends AutoModerationRuleEditOptions {
actions: readonly AutoModerationActionOptions[]; actions: readonly AutoModerationActionOptions[];
enabled?: boolean;
eventType: AutoModerationRuleEventType; eventType: AutoModerationRuleEventType;
exemptChannels?: ReadonlyCollection<Snowflake, GuildBasedChannel> | readonly GuildChannelResolvable[];
exemptRoles?: ReadonlyCollection<Snowflake, Role> | readonly RoleResolvable[];
name: string; name: string;
reason?: string;
triggerMetadata?: AutoModerationTriggerMetadataOptions;
triggerType: AutoModerationRuleTriggerType; triggerType: AutoModerationRuleTriggerType;
} }
export interface AutoModerationRuleEditOptions extends Partial<Omit<AutoModerationRuleCreateOptions, 'triggerType'>> {} export interface AutoModerationRuleEditOptions {
actions?: readonly AutoModerationActionOptions[];
enabled?: boolean;
eventType?: AutoModerationRuleEventType;
exemptChannels?: ReadonlyCollection<Snowflake, GuildBasedChannel> | readonly GuildChannelResolvable[];
exemptRoles?: ReadonlyCollection<Snowflake, Role> | readonly RoleResolvable[];
name?: string;
reason?: string;
triggerMetadata?: AutoModerationTriggerMetadataOptions;
}
export interface AutoModerationTriggerMetadataOptions extends Partial<AutoModerationTriggerMetadata> {} export interface AutoModerationTriggerMetadataOptions extends AutoModerationTriggerMetadata {}
export interface AutoModerationActionOptions { export interface AutoModerationActionOptions {
metadata?: AutoModerationActionMetadataOptions; metadata?: AutoModerationActionMetadataOptions;
type: AutoModerationActionType; type: AutoModerationActionType;
} }
export interface AutoModerationActionMetadataOptions extends Partial<Omit<AutoModerationActionMetadata, 'channelId'>> { export interface AutoModerationActionMetadataOptions extends BaseAutoModerationActionMetadata {
channel?: GuildTextChannelResolvable | ThreadChannel; channel?: GuildTextChannelResolvable | ThreadChannel;
} }
@@ -6317,7 +6333,7 @@ export interface InteractionDeferUpdateOptions {
withResponse?: boolean; withResponse?: boolean;
} }
export interface InteractionReplyOptions extends BaseMessageOptionsWithPoll { export interface InteractionReplyOptions extends BaseMessageOptions, MessageOptionsPoll {
flags?: flags?:
| BitFieldResolvable< | BitFieldResolvable<
Extract<MessageFlagsString, 'Ephemeral' | 'IsComponentsV2' | 'SuppressEmbeds' | 'SuppressNotifications'>, Extract<MessageFlagsString, 'Ephemeral' | 'IsComponentsV2' | 'SuppressEmbeds' | 'SuppressNotifications'>,
@@ -6416,10 +6432,18 @@ export type CollectedMessageInteraction<Cached extends CacheType = CacheType> =
>; >;
export interface MessageComponentCollectorOptions<Interaction extends CollectedMessageInteraction> export interface MessageComponentCollectorOptions<Interaction extends CollectedMessageInteraction>
extends Omit<InteractionCollectorOptions<Interaction>, 'channel' | 'guild' | 'interactionType' | 'message'> {} extends AwaitMessageComponentOptions<Interaction> {
max?: number;
maxComponents?: number;
maxUsers?: number;
}
export interface MessageChannelComponentCollectorOptions<Interaction extends CollectedMessageInteraction> export interface MessageChannelComponentCollectorOptions<
extends Omit<InteractionCollectorOptions<Interaction>, 'channel' | 'guild' | 'interactionType'> {} Interaction extends CollectedMessageInteraction,
Cached extends CacheType = CacheType,
> extends MessageComponentCollectorOptions<Interaction> {
message?: CacheTypeReducer<Cached, Message, APIMessage>;
}
export interface MessageInteractionMetadata { export interface MessageInteractionMetadata {
authorizingIntegrationOwners: APIAuthorizingIntegrationOwnersMap; authorizingIntegrationOwners: APIAuthorizingIntegrationOwnersMap;
@@ -6488,30 +6512,45 @@ export interface BaseMessageOptions {
)[]; )[];
} }
export interface BaseMessageOptionsWithPoll extends BaseMessageOptions { export interface MessageOptionsPoll {
poll?: JSONEncodable<RESTAPIPoll> | PollData; poll?: JSONEncodable<RESTAPIPoll> | PollData;
} }
export interface BaseMessageCreateOptions extends BaseMessageOptionsWithPoll { export interface MessageOptionsFlags {
enforceNonce?: boolean;
flags?: flags?:
| BitFieldResolvable< | BitFieldResolvable<
Extract<MessageFlagsString, 'IsComponentsV2' | 'SuppressEmbeds' | 'SuppressNotifications'>, Extract<MessageFlagsString, 'IsComponentsV2' | 'SuppressEmbeds' | 'SuppressNotifications'>,
MessageFlags.IsComponentsV2 | MessageFlags.SuppressEmbeds | MessageFlags.SuppressNotifications MessageFlags.IsComponentsV2 | MessageFlags.SuppressEmbeds | MessageFlags.SuppressNotifications
> >
| undefined; | undefined;
nonce?: number | string; }
stickers?: readonly StickerResolvable[];
export interface MessageOptionsTTS {
tts?: boolean; tts?: boolean;
} }
export interface MessageOptionsStickers {
stickers?: readonly StickerResolvable[];
}
export interface BaseMessageCreateOptions
extends BaseMessageOptions,
MessageOptionsPoll,
MessageOptionsFlags,
MessageOptionsTTS,
MessageOptionsStickers {
enforceNonce?: boolean;
nonce?: number | string;
}
export interface MessageCreateOptions extends BaseMessageCreateOptions { export interface MessageCreateOptions extends BaseMessageCreateOptions {
messageReference?: MessageReferenceOptions; messageReference?: MessageReferenceOptions;
} }
export interface GuildForumThreadMessageCreateOptions export interface GuildForumThreadMessageCreateOptions
extends BaseMessageOptions, extends BaseMessageOptions,
Pick<BaseMessageCreateOptions, 'flags' | 'stickers'> {} MessageOptionsFlags,
MessageOptionsStickers {}
export interface MessageEditAttachmentData { export interface MessageEditAttachmentData {
id: Snowflake; id: Snowflake;
@@ -7031,7 +7070,10 @@ export interface WebhookClientDataURL {
url: string; url: string;
} }
export interface WebhookClientOptions extends Pick<ClientOptions, 'allowedMentions' | 'rest'> {} export interface WebhookClientOptions {
allowedMentions?: MessageMentionOptions;
rest?: Partial<RESTOptions>;
}
export interface WebhookDeleteOptions { export interface WebhookDeleteOptions {
reason?: string; reason?: string;
@@ -7050,9 +7092,7 @@ export interface WebhookMessageEditOptions extends MessageEditOptions {
withComponents?: boolean; withComponents?: boolean;
} }
export interface InteractionEditReplyOptions export interface InteractionEditReplyOptions extends WebhookMessageEditOptions, MessageOptionsPoll {
extends WebhookMessageEditOptions,
Pick<BaseMessageOptionsWithPoll, 'poll'> {
message?: MessageResolvable | '@original'; message?: MessageResolvable | '@original';
} }
@@ -7060,7 +7100,11 @@ export interface WebhookFetchMessageOptions {
threadId?: Snowflake; threadId?: Snowflake;
} }
export interface WebhookMessageCreateOptions extends Omit<BaseMessageCreateOptions, 'nonce' | 'stickers'> { export interface WebhookMessageCreateOptions
extends BaseMessageOptions,
MessageOptionsPoll,
MessageOptionsFlags,
MessageOptionsTTS {
appliedTags?: readonly Snowflake[]; appliedTags?: readonly Snowflake[];
avatarURL?: string; avatarURL?: string;
threadId?: Snowflake; threadId?: Snowflake;

View File

@@ -152,7 +152,6 @@ import type {
PartialMessageReaction, PartialMessageReaction,
PartialPoll, PartialPoll,
PartialPollAnswer, PartialPollAnswer,
PartialTextBasedChannelFields,
PartialThreadMember, PartialThreadMember,
PartialUser, PartialUser,
Poll, Poll,
@@ -171,6 +170,7 @@ import type {
SectionComponentData, SectionComponentData,
SelectMenuInteraction, SelectMenuInteraction,
SendableChannels, SendableChannels,
SendMethod,
SeparatorComponentData, SeparatorComponentData,
Serialized, Serialized,
Shard, Shard,
@@ -184,7 +184,6 @@ import type {
StringSelectMenuComponent, StringSelectMenuComponent,
StringSelectMenuComponentData, StringSelectMenuComponentData,
StringSelectMenuInteraction, StringSelectMenuInteraction,
TextBasedChannelFields,
TextBasedChannel, TextBasedChannel,
TextBasedChannelTypes, TextBasedChannelTypes,
ThreadManager, ThreadManager,
@@ -1519,13 +1518,13 @@ expectType<ForumChannel | MediaChannel | null>(threadChannelFromForum.parent);
expectType<AnnouncementChannel | TextChannel | null>(threadChannelNotFromForum.parent); expectType<AnnouncementChannel | TextChannel | null>(threadChannelNotFromForum.parent);
// Test whether the structures implement send // Test whether the structures implement send
expectType<TextBasedChannelFields<false>['send']>(dmChannel.send); expectType<SendMethod<false>['send']>(dmChannel.send);
expectType<TextBasedChannelFields<true>['send']>(threadChannel.send); expectType<SendMethod<true>['send']>(threadChannel.send);
expectType<TextBasedChannelFields<true>['send']>(announcementChannel.send); expectType<SendMethod<true>['send']>(announcementChannel.send);
expectType<TextBasedChannelFields<true>['send']>(textChannel.send); expectType<SendMethod<true>['send']>(textChannel.send);
expectType<TextBasedChannelFields<true>['send']>(voiceChannel.send); expectType<SendMethod<true>['send']>(voiceChannel.send);
expectAssignable<PartialTextBasedChannelFields>(user); expectAssignable<SendMethod>(user);
expectAssignable<PartialTextBasedChannelFields>(guildMember); expectAssignable<SendMethod>(guildMember);
expectType<Promise<AnnouncementChannel>>(textChannel.setType(ChannelType.GuildAnnouncement)); expectType<Promise<AnnouncementChannel>>(textChannel.setType(ChannelType.GuildAnnouncement));
expectType<Promise<TextChannel>>(announcementChannel.setType(ChannelType.GuildText)); expectType<Promise<TextChannel>>(announcementChannel.setType(ChannelType.GuildText));