fix: add static method from in builders (#7990)

This commit is contained in:
Parbez
2022-06-05 22:03:19 +05:30
committed by GitHub
parent 5987dbe5cf
commit ad36c0be77
3 changed files with 29 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const { ActionRowBuilder: BuildersActionRow, ComponentBuilder } = require('@discordjs/builders'); const { ActionRowBuilder: BuildersActionRow, ComponentBuilder, isJSONEncodable } = require('@discordjs/builders');
const Components = require('../util/Components'); const Components = require('../util/Components');
const Transformers = require('../util/Transformers'); const Transformers = require('../util/Transformers');
@@ -15,6 +15,19 @@ class ActionRowBuilder extends BuildersActionRow {
components: components?.map(c => (c instanceof ComponentBuilder ? c : Components.createComponentBuilder(c))), components: components?.map(c => (c instanceof ComponentBuilder ? c : Components.createComponentBuilder(c))),
}); });
} }
/**
* Creates a new action row builder from JSON data
* @param {JSONEncodable<APIActionRowComponent<APIActionRowComponentTypes>>
* |APIActionRowComponent<APIActionRowComponentTypes>} other The other data
* @returns {ActionRowBuilder}
*/
static from(other) {
if (isJSONEncodable(other)) {
return new this(other.toJSON());
}
return new this(other);
}
} }
module.exports = ActionRowBuilder; module.exports = ActionRowBuilder;

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const { SelectMenuOptionBuilder: BuildersSelectMenuOption } = require('@discordjs/builders'); const { SelectMenuOptionBuilder: BuildersSelectMenuOption, isJSONEncodable } = require('@discordjs/builders');
const Transformers = require('../util/Transformers'); const Transformers = require('../util/Transformers');
const Util = require('../util/Util'); const Util = require('../util/Util');
@@ -28,6 +28,18 @@ class SelectMenuOptionBuilder extends BuildersSelectMenuOption {
} }
return super.setEmoji(emoji); return super.setEmoji(emoji);
} }
/**
* Creates a new select menu option builder from JSON data
* @param {JSONEncodable<APISelectMenuOption>|APISelectMenuOption} other The other data
* @returns {SelectMenuOptionBuilder}
*/
static from(other) {
if (isJSONEncodable(other)) {
return new this(other.toJSON());
}
return new this(other);
}
} }
module.exports = SelectMenuOptionBuilder; module.exports = SelectMenuOptionBuilder;

View File

@@ -610,7 +610,8 @@ export class SelectMenuBuilder extends BuilderSelectMenuComponent {
export class SelectMenuOptionBuilder extends BuildersSelectMenuOption { export class SelectMenuOptionBuilder extends BuildersSelectMenuOption {
public constructor(data?: SelectMenuComponentOptionData | APISelectMenuOption); public constructor(data?: SelectMenuComponentOptionData | APISelectMenuOption);
public setEmoji(emoji: ComponentEmojiResolvable): this; public override setEmoji(emoji: ComponentEmojiResolvable): this;
public static from(other: JSONEncodable<APISelectMenuOption> | APISelectMenuOption): SelectMenuOptionBuilder;
} }
export class ModalBuilder extends BuildersModal { export class ModalBuilder extends BuildersModal {