mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
58 lines
1.4 KiB
TypeScript
58 lines
1.4 KiB
TypeScript
import type {
|
|
ButtonStyle,
|
|
APIMessageComponentEmoji,
|
|
APIButtonComponent,
|
|
APIButtonComponentWithCustomId,
|
|
APIButtonComponentWithURL,
|
|
} from 'discord-api-types/v10';
|
|
import { UnsafeButtonBuilder } from './UnsafeButton';
|
|
import {
|
|
buttonLabelValidator,
|
|
buttonStyleValidator,
|
|
customIdValidator,
|
|
disabledValidator,
|
|
emojiValidator,
|
|
urlValidator,
|
|
validateRequiredButtonParameters,
|
|
} from '../Assertions';
|
|
|
|
/**
|
|
* Represents a validated button component
|
|
*/
|
|
export class ButtonBuilder extends UnsafeButtonBuilder {
|
|
public override setStyle(style: ButtonStyle) {
|
|
return super.setStyle(buttonStyleValidator.parse(style));
|
|
}
|
|
|
|
public override setURL(url: string) {
|
|
return super.setURL(urlValidator.parse(url));
|
|
}
|
|
|
|
public override setCustomId(customId: string) {
|
|
return super.setCustomId(customIdValidator.parse(customId));
|
|
}
|
|
|
|
public override setEmoji(emoji: APIMessageComponentEmoji) {
|
|
return super.setEmoji(emojiValidator.parse(emoji));
|
|
}
|
|
|
|
public override setDisabled(disabled = true) {
|
|
return super.setDisabled(disabledValidator.parse(disabled));
|
|
}
|
|
|
|
public override setLabel(label: string) {
|
|
return super.setLabel(buttonLabelValidator.parse(label));
|
|
}
|
|
|
|
public override toJSON(): APIButtonComponent {
|
|
validateRequiredButtonParameters(
|
|
this.data.style,
|
|
this.data.label,
|
|
this.data.emoji,
|
|
(this.data as APIButtonComponentWithCustomId).custom_id,
|
|
(this.data as APIButtonComponentWithURL).url,
|
|
);
|
|
return super.toJSON();
|
|
}
|
|
}
|