diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 93291ead9..1eae27ba0 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -204,7 +204,11 @@ export interface ActionRowData extends BaseComponentData { } export class ActionRow extends BuilderActionRow { - constructor(data?: ActionRowData | APIActionRowComponent); + constructor( + data?: + | ActionRowData + | (Omit, 'type'> & { type?: ComponentType.ActionRow }), + ); } export class ActivityFlagsBitField extends BitField { @@ -473,11 +477,13 @@ export class ButtonInteraction extends Mes } export class ButtonComponent extends BuilderButtonComponent { - public constructor(data?: ButtonComponentData | APIButtonComponent); + public constructor(data?: ButtonComponentData | (Omit & { type?: ComponentType.Button })); } export class SelectMenuComponent extends BuilderSelectMenuComponent { - public constructor(data?: SelectMenuComponentData | APISelectMenuComponent); + public constructor( + data?: SelectMenuComponentData | (Omit & { type?: ComponentType.SelectMenu }), + ); } export interface EmbedData { @@ -4619,7 +4625,7 @@ export interface MessageReference { export type MessageResolvable = Message | Snowflake; export interface SelectMenuComponentData extends BaseComponentData { - customId?: string; + customId: string; disabled?: boolean; maxValues?: number; minValues?: number; diff --git a/packages/discord.js/typings/index.test-d.ts b/packages/discord.js/typings/index.test-d.ts index f83b1206f..cdd52597b 100644 --- a/packages/discord.js/typings/index.test-d.ts +++ b/packages/discord.js/typings/index.test-d.ts @@ -103,6 +103,7 @@ import { ShardEvents, Status, CategoryChannelChildManager, + ActionRowData, } from '.'; import { expectAssignable, expectDeprecated, expectNotAssignable, expectNotType, expectType } from 'tsd'; import { Embed } from '@discordjs/builders'; @@ -1309,6 +1310,23 @@ new ActionRow({ components: [selectMenu.toJSON(), button.toJSON()], }); +new SelectMenuComponent({ + customId: 'foo', +}); + +new ButtonComponent({ + style: ButtonStyle.Danger, +}); + +expectNotAssignable({ + type: ComponentType.ActionRow, + components: [ + { + type: ComponentType.Button, + }, + ], +}); + declare const chatInputInteraction: ChatInputCommandInteraction; expectType(chatInputInteraction.options.getAttachment('attachment', true));