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

View File

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