From a30d46c5f5909eee86704bbb9e34fb7bb09b2c27 Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Fri, 11 Aug 2023 08:15:05 +0100 Subject: [PATCH] types(BaseButtonComponentData): Narrow component type (#9735) * types(BaseButtonComponentData): narrow `type` * test: fix suddenly broken tests --------- Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- packages/discord.js/typings/index.d.ts | 1 + packages/discord.js/typings/index.test-d.ts | 27 ++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 21acbb140..54c2aba3e 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 ddcdb1114..86b28249e 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));