types(ActionRow): allow components to be passed to constructors (#7531)

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
This commit is contained in:
Rodry
2022-03-06 15:27:44 +00:00
committed by GitHub
parent 851f380eb1
commit e71c76c7f7
2 changed files with 12 additions and 5 deletions

View File

@@ -1,11 +1,14 @@
'use strict';
const { ActionRow: BuildersActionRow } = require('@discordjs/builders');
const { ActionRow: BuildersActionRow, Component } = require('@discordjs/builders');
const Transformers = require('../util/Transformers');
class ActionRow extends BuildersActionRow {
constructor(data) {
super(Transformers.toSnakeCase(data));
constructor({ components, ...data } = {}) {
super({
components: components?.map(c => (c instanceof Component ? c : Transformers.toSnakeCase(c))),
...Transformers.toSnakeCase(data),
});
}
}

View File

@@ -209,10 +209,14 @@ export interface BaseComponentData {
}
export type MessageActionRowComponentData = ButtonComponentData | SelectMenuComponentData;
export type ModalActionRowComponentData = TextInputComponentData;
export interface ActionRowData<T extends MessageActionRowComponentData | ModalActionRowComponentData>
extends BaseComponentData {
export type ActionRowComponentData = MessageActionRowComponentData | ModalActionRowComponentData;
export type ActionRowComponent = MessageActionRowComponent | ModalActionRowComponent;
export interface ActionRowData<T extends ActionRowComponent | ActionRowComponentData> extends BaseComponentData {
components: T[];
}