mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-15 19:13:31 +01:00
refactor: builders (#10448)
BREAKING CHANGE: formatters export removed (prev. deprecated) BREAKING CHANGE: `SelectMenuBuilder` and `SelectMenuOptionBuilder` have been removed (prev. deprecated) BREAKING CHANGE: `EmbedBuilder` no longer takes camalCase options BREAKING CHANGE: `ActionRowBuilder` now has specialized `[add/set]X` methods as opposed to the current `[add/set]Components` BREAKING CHANGE: Removed `equals` methods BREAKING CHANGE: Sapphire -> zod for validation BREAKING CHANGE: Removed the ability to pass `null`/`undefined` to clear fields, use `clearX()` instead BREAKING CHANGE: Renamed all "slash command" symbols to instead use "chat input command" BREAKING CHANGE: Removed `ContextMenuCommandBuilder` in favor of `MessageCommandBuilder` and `UserCommandBuilder` BREAKING CHANGE: Removed support for passing the "string key"s of enums BREAKING CHANGE: Removed `Button` class in favor for specialized classes depending on the style BREAKING CHANGE: Removed nested `addX` styled-methods in favor of plural `addXs` Co-authored-by: Vlad Frangu <me@vladfrangu.dev> Co-authored-by: Almeida <github@almeidx.dev>
This commit is contained in:
64
packages/builders/src/interactions/commands/SharedName.ts
Normal file
64
packages/builders/src/interactions/commands/SharedName.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import type { LocaleString, RESTPostAPIApplicationCommandsJSONBody } from 'discord-api-types/v10';
|
||||
|
||||
export interface SharedNameData
|
||||
extends Partial<Pick<RESTPostAPIApplicationCommandsJSONBody, 'name_localizations' | 'name'>> {}
|
||||
|
||||
/**
|
||||
* This mixin holds name and description symbols for chat input commands.
|
||||
*/
|
||||
export class SharedName {
|
||||
protected readonly data: SharedNameData = {};
|
||||
|
||||
/**
|
||||
* Sets the name of this command.
|
||||
*
|
||||
* @param name - The name to use
|
||||
*/
|
||||
public setName(name: string): this {
|
||||
this.data.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a name localization for this command.
|
||||
*
|
||||
* @param locale - The locale to set
|
||||
* @param localizedName - The localized name for the given `locale`
|
||||
*/
|
||||
public setNameLocalization(locale: LocaleString, localizedName: string) {
|
||||
this.data.name_localizations ??= {};
|
||||
this.data.name_localizations[locale] = localizedName;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears a name localization for this command.
|
||||
*
|
||||
* @param locale - The locale to clear
|
||||
*/
|
||||
public clearNameLocalization(locale: LocaleString) {
|
||||
this.data.name_localizations ??= {};
|
||||
this.data.name_localizations[locale] = undefined;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the name localizations for this command.
|
||||
*
|
||||
* @param localizedNames - The object of localized names to set
|
||||
*/
|
||||
public setNameLocalizations(localizedNames: Partial<Record<LocaleString, string>>) {
|
||||
this.data.name_localizations = structuredClone(localizedNames);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all name localizations for this command.
|
||||
*/
|
||||
public clearNameLocalizations() {
|
||||
this.data.name_localizations = undefined;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user