diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 21acbb14000a..54c2aba3ee3b 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -5830,6 +5830,7 @@ export interface MessageActivity { } export interface BaseButtonComponentData extends BaseComponentData { + type: ComponentType.Button; style: ButtonStyle; disabled?: boolean; emoji?: ComponentEmojiResolvable; diff --git a/packages/discord.js/typings/index.test-d.ts b/packages/discord.js/typings/index.test-d.ts index ddcdb1114773..86b28249e6b0 100644 --- a/packages/discord.js/typings/index.test-d.ts +++ b/packages/discord.js/typings/index.test-d.ts @@ -174,6 +174,8 @@ import { ChatInputApplicationCommandData, ApplicationCommandPermissionsManager, GuildOnboarding, + StringSelectMenuComponentData, + ButtonComponentData, } from '.'; import { expectAssignable, expectNotAssignable, expectNotType, expectType } from 'tsd'; import type { ContextMenuCommandBuilder, SlashCommandBuilder } from '@discordjs/builders'; @@ -532,10 +534,10 @@ client.on('messageCreate', async message => { // Check that both builders and builder data can be sent in messages const row = new ActionRowBuilder(); - const buttonsRow: ActionRowData = { + + const rawButtonsRow: ActionRowData = { type: ComponentType.ActionRow, components: [ - new ButtonBuilder(), { type: ComponentType.Button, label: 'test', style: ButtonStyle.Primary, customId: 'test' }, { type: ComponentType.Button, @@ -545,21 +547,34 @@ client.on('messageCreate', async message => { }, ], }; - const selectsRow: ActionRowData = { + + const buttonsRow: ActionRowData = { + type: ComponentType.ActionRow, + components: [new ButtonBuilder()], + }; + + const rawStringSelectMenuRow: ActionRowData = { type: ComponentType.ActionRow, components: [ - new StringSelectMenuBuilder(), { type: ComponentType.StringSelect, - label: 'select menu', options: [{ label: 'test', value: 'test' }], customId: 'test', }, ], }; + const stringSelectRow: ActionRowData = { + type: ComponentType.ActionRow, + components: [new StringSelectMenuBuilder()], + }; + const embedData = { description: 'test', color: 0xff0000 }; - channel.send({ components: [row, buttonsRow, selectsRow], embeds: [embed, embedData] }); + + channel.send({ + components: [row, rawButtonsRow, buttonsRow, rawStringSelectMenuRow, stringSelectRow], + embeds: [embed, embedData], + }); }); client.on('messageDelete', ({ client }) => expectType>(client));