@discordjs/builders 1.13.1 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -49,27 +49,33 @@ __export(index_exports, {
49
49
  BaseSelectMenuBuilder: () => BaseSelectMenuBuilder,
50
50
  ButtonBuilder: () => ButtonBuilder,
51
51
  ChannelSelectMenuBuilder: () => ChannelSelectMenuBuilder,
52
+ CheckboxAssertions: () => Assertions_exports3,
53
+ CheckboxBuilder: () => CheckboxBuilder,
54
+ CheckboxGroupBuilder: () => CheckboxGroupBuilder,
55
+ CheckboxGroupOptionBuilder: () => CheckboxGroupOptionBuilder,
52
56
  ComponentAssertions: () => Assertions_exports2,
53
57
  ComponentBuilder: () => ComponentBuilder,
54
- ComponentsV2Assertions: () => Assertions_exports7,
58
+ ComponentsV2Assertions: () => Assertions_exports8,
55
59
  ContainerBuilder: () => ContainerBuilder,
56
- ContextMenuCommandAssertions: () => Assertions_exports10,
60
+ ContextMenuCommandAssertions: () => Assertions_exports11,
57
61
  ContextMenuCommandBuilder: () => ContextMenuCommandBuilder,
58
62
  EmbedAssertions: () => Assertions_exports,
59
63
  EmbedBuilder: () => EmbedBuilder,
60
64
  FileBuilder: () => FileBuilder,
61
- FileUploadAssertions: () => Assertions_exports3,
65
+ FileUploadAssertions: () => Assertions_exports4,
62
66
  FileUploadBuilder: () => FileUploadBuilder,
63
- LabelAssertions: () => Assertions_exports6,
67
+ LabelAssertions: () => Assertions_exports7,
64
68
  LabelBuilder: () => LabelBuilder,
65
69
  MediaGalleryBuilder: () => MediaGalleryBuilder,
66
70
  MediaGalleryItemBuilder: () => MediaGalleryItemBuilder,
67
71
  MentionableSelectMenuBuilder: () => MentionableSelectMenuBuilder,
68
- ModalAssertions: () => Assertions_exports8,
72
+ ModalAssertions: () => Assertions_exports9,
69
73
  ModalBuilder: () => ModalBuilder,
74
+ RadioGroupBuilder: () => RadioGroupBuilder,
75
+ RadioGroupOptionBuilder: () => RadioGroupOptionBuilder,
70
76
  RoleSelectMenuBuilder: () => RoleSelectMenuBuilder,
71
77
  SectionBuilder: () => SectionBuilder,
72
- SelectMenuAssertions: () => Assertions_exports5,
78
+ SelectMenuAssertions: () => Assertions_exports6,
73
79
  SelectMenuBuilder: () => StringSelectMenuBuilder,
74
80
  SelectMenuOptionBuilder: () => StringSelectMenuOptionBuilder,
75
81
  SeparatorBuilder: () => SeparatorBuilder,
@@ -77,7 +83,7 @@ __export(index_exports, {
77
83
  SharedSlashCommand: () => SharedSlashCommand,
78
84
  SharedSlashCommandOptions: () => SharedSlashCommandOptions,
79
85
  SharedSlashCommandSubcommands: () => SharedSlashCommandSubcommands,
80
- SlashCommandAssertions: () => Assertions_exports9,
86
+ SlashCommandAssertions: () => Assertions_exports10,
81
87
  SlashCommandAttachmentOption: () => SlashCommandAttachmentOption,
82
88
  SlashCommandBooleanOption: () => SlashCommandBooleanOption,
83
89
  SlashCommandBuilder: () => SlashCommandBuilder,
@@ -93,7 +99,7 @@ __export(index_exports, {
93
99
  StringSelectMenuBuilder: () => StringSelectMenuBuilder,
94
100
  StringSelectMenuOptionBuilder: () => StringSelectMenuOptionBuilder,
95
101
  TextDisplayBuilder: () => TextDisplayBuilder,
96
- TextInputAssertions: () => Assertions_exports4,
102
+ TextInputAssertions: () => Assertions_exports5,
97
103
  TextInputBuilder: () => TextInputBuilder,
98
104
  ThumbnailBuilder: () => ThumbnailBuilder,
99
105
  UserSelectMenuBuilder: () => UserSelectMenuBuilder,
@@ -591,7 +597,7 @@ function validateRequiredButtonParameters(style, label, emoji, customId, skuId,
591
597
  __name(validateRequiredButtonParameters, "validateRequiredButtonParameters");
592
598
 
593
599
  // src/components/ActionRow.ts
594
- var import_v1024 = require("discord-api-types/v10");
600
+ var import_v1028 = require("discord-api-types/v10");
595
601
 
596
602
  // src/components/Component.ts
597
603
  var ComponentBuilder = class {
@@ -629,7 +635,7 @@ var ComponentBuilder = class {
629
635
  };
630
636
 
631
637
  // src/components/Components.ts
632
- var import_v1023 = require("discord-api-types/v10");
638
+ var import_v1027 = require("discord-api-types/v10");
633
639
 
634
640
  // src/components/button/Button.ts
635
641
  var import_v102 = require("discord-api-types/v10");
@@ -638,140 +644,697 @@ var ButtonBuilder = class extends ComponentBuilder {
638
644
  __name(this, "ButtonBuilder");
639
645
  }
640
646
  /**
641
- * Creates a new button from API data.
647
+ * Creates a new button from API data.
648
+ *
649
+ * @param data - The API data to create this button with
650
+ * @example
651
+ * Creating a button from an API data object:
652
+ * ```ts
653
+ * const button = new ButtonBuilder({
654
+ * custom_id: 'a cool button',
655
+ * style: ButtonStyle.Primary,
656
+ * label: 'Click Me',
657
+ * emoji: {
658
+ * name: 'smile',
659
+ * id: '123456789012345678',
660
+ * },
661
+ * });
662
+ * ```
663
+ * @example
664
+ * Creating a button using setters and API data:
665
+ * ```ts
666
+ * const button = new ButtonBuilder({
667
+ * style: ButtonStyle.Secondary,
668
+ * label: 'Click Me',
669
+ * })
670
+ * .setEmoji({ name: '🙂' })
671
+ * .setCustomId('another cool button');
672
+ * ```
673
+ */
674
+ constructor(data) {
675
+ super({ type: import_v102.ComponentType.Button, ...data });
676
+ }
677
+ /**
678
+ * Sets the style of this button.
679
+ *
680
+ * @param style - The style to use
681
+ */
682
+ setStyle(style) {
683
+ this.data.style = buttonStyleValidator.parse(style);
684
+ return this;
685
+ }
686
+ /**
687
+ * Sets the URL for this button.
688
+ *
689
+ * @remarks
690
+ * This method is only available to buttons using the `Link` button style.
691
+ * Only three types of URL schemes are currently supported: `https://`, `http://`, and `discord://`.
692
+ * @param url - The URL to use
693
+ */
694
+ setURL(url) {
695
+ this.data.url = urlValidator.parse(url);
696
+ return this;
697
+ }
698
+ /**
699
+ * Sets the custom id for this button.
700
+ *
701
+ * @remarks
702
+ * This method is only applicable to buttons that are not using the `Link` button style.
703
+ * @param customId - The custom id to use
704
+ */
705
+ setCustomId(customId) {
706
+ this.data.custom_id = customIdValidator.parse(customId);
707
+ return this;
708
+ }
709
+ /**
710
+ * Sets the SKU id that represents a purchasable SKU for this button.
711
+ *
712
+ * @remarks Only available when using premium-style buttons.
713
+ * @param skuId - The SKU id to use
714
+ */
715
+ setSKUId(skuId) {
716
+ this.data.sku_id = skuId;
717
+ return this;
718
+ }
719
+ /**
720
+ * Sets the emoji to display on this button.
721
+ *
722
+ * @param emoji - The emoji to use
723
+ */
724
+ setEmoji(emoji) {
725
+ this.data.emoji = emojiValidator.parse(emoji);
726
+ return this;
727
+ }
728
+ /**
729
+ * Sets whether this button is disabled.
730
+ *
731
+ * @param disabled - Whether to disable this button
732
+ */
733
+ setDisabled(disabled = true) {
734
+ this.data.disabled = disabledValidator.parse(disabled);
735
+ return this;
736
+ }
737
+ /**
738
+ * Sets the label for this button.
739
+ *
740
+ * @param label - The label to use
741
+ */
742
+ setLabel(label) {
743
+ this.data.label = buttonLabelValidator.parse(label);
744
+ return this;
745
+ }
746
+ /**
747
+ * {@inheritDoc ComponentBuilder.toJSON}
748
+ */
749
+ toJSON() {
750
+ validateRequiredButtonParameters(
751
+ this.data.style,
752
+ this.data.label,
753
+ this.data.emoji,
754
+ this.data.custom_id,
755
+ this.data.sku_id,
756
+ this.data.url
757
+ );
758
+ return {
759
+ ...this.data
760
+ };
761
+ }
762
+ };
763
+
764
+ // src/components/checkbox/Checkbox.ts
765
+ var import_v104 = require("discord-api-types/v10");
766
+
767
+ // src/components/checkbox/Assertions.ts
768
+ var Assertions_exports3 = {};
769
+ __export(Assertions_exports3, {
770
+ checkboxGroupOptionPredicate: () => checkboxGroupOptionPredicate,
771
+ checkboxGroupPredicate: () => checkboxGroupPredicate,
772
+ checkboxPredicate: () => checkboxPredicate,
773
+ radioGroupOptionPredicate: () => radioGroupOptionPredicate,
774
+ radioGroupPredicate: () => radioGroupPredicate
775
+ });
776
+ var import_shapeshift3 = require("@sapphire/shapeshift");
777
+ var import_v103 = require("discord-api-types/v10");
778
+ var checkboxPredicate = import_shapeshift3.s.object({
779
+ type: import_shapeshift3.s.literal(import_v103.ComponentType.Checkbox),
780
+ custom_id: customIdValidator,
781
+ id: idValidator.optional(),
782
+ default: import_shapeshift3.s.boolean().optional()
783
+ }).setValidationEnabled(isValidationEnabled);
784
+ var checkboxGroupOptionPredicate = import_shapeshift3.s.object({
785
+ label: import_shapeshift3.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100),
786
+ value: import_shapeshift3.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100),
787
+ description: import_shapeshift3.s.string().lengthLessThanOrEqual(100).optional(),
788
+ default: import_shapeshift3.s.boolean().optional()
789
+ }).setValidationEnabled(isValidationEnabled);
790
+ var checkboxGroupPredicate = import_shapeshift3.s.object({
791
+ type: import_shapeshift3.s.literal(import_v103.ComponentType.CheckboxGroup),
792
+ custom_id: customIdValidator,
793
+ id: idValidator.optional(),
794
+ options: import_shapeshift3.s.array(checkboxGroupOptionPredicate).lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(10),
795
+ min_values: import_shapeshift3.s.number().int().greaterThanOrEqual(0).lessThanOrEqual(10).optional(),
796
+ max_values: import_shapeshift3.s.number().int().greaterThanOrEqual(1).lessThanOrEqual(10).optional(),
797
+ required: import_shapeshift3.s.boolean().optional()
798
+ }).reshape((data) => {
799
+ if (data.min_values !== void 0 && data.max_values !== void 0 && data.min_values > data.max_values) {
800
+ return import_shapeshift3.Result.err(new RangeError("min_values cannot be greater than max_values"));
801
+ }
802
+ if (data.max_values !== void 0 && data.max_values > data.options.length) {
803
+ return import_shapeshift3.Result.err(new RangeError("max_values cannot be greater than the number of options"));
804
+ }
805
+ if (data.min_values !== void 0 && data.min_values > data.options.length) {
806
+ return import_shapeshift3.Result.err(new RangeError("min_values cannot be greater than the number of options"));
807
+ }
808
+ if (data.required === true && data.min_values === 0) {
809
+ return import_shapeshift3.Result.err(new RangeError("If required is true, min_values must be at least 1"));
810
+ }
811
+ const defaultCount = data.options.filter((option) => option.default === true).length;
812
+ if (data.max_values !== void 0 && defaultCount > data.max_values) {
813
+ return import_shapeshift3.Result.err(new RangeError("The number of default options cannot be greater than max_values"));
814
+ }
815
+ const values = data.options.map((option) => option.value);
816
+ const uniqueValues = new Set(values);
817
+ if (uniqueValues.size !== values.length) {
818
+ return import_shapeshift3.Result.err(new RangeError("Each option in a checkbox group must have a unique value"));
819
+ }
820
+ return import_shapeshift3.Result.ok(data);
821
+ }).setValidationEnabled(isValidationEnabled);
822
+ var radioGroupOptionPredicate = checkboxGroupOptionPredicate;
823
+ var radioGroupPredicate = import_shapeshift3.s.object({
824
+ type: import_shapeshift3.s.literal(import_v103.ComponentType.RadioGroup),
825
+ custom_id: customIdValidator,
826
+ id: idValidator.optional(),
827
+ options: import_shapeshift3.s.array(radioGroupOptionPredicate).lengthGreaterThanOrEqual(2).lengthLessThanOrEqual(10),
828
+ required: import_shapeshift3.s.boolean().optional()
829
+ }).reshape((data) => {
830
+ const defaultCount = data.options.filter((option) => option.default === true).length;
831
+ if (defaultCount > 1) {
832
+ return import_shapeshift3.Result.err(new RangeError("There can be at most one default option in a radio group"));
833
+ }
834
+ const values = data.options.map((option) => option.value);
835
+ const uniqueValues = new Set(values);
836
+ if (uniqueValues.size !== values.length) {
837
+ return import_shapeshift3.Result.err(new RangeError("Each option in a radio group must have a unique value"));
838
+ }
839
+ return import_shapeshift3.Result.ok(data);
840
+ }).setValidationEnabled(isValidationEnabled);
841
+
842
+ // src/components/checkbox/Checkbox.ts
843
+ var CheckboxBuilder = class extends ComponentBuilder {
844
+ static {
845
+ __name(this, "CheckboxBuilder");
846
+ }
847
+ /**
848
+ * Creates a new checkbox from API data.
849
+ *
850
+ * @param data - The API data to create this checkbox with
851
+ * @example
852
+ * Creating a checkbox from an API data object:
853
+ * ```ts
854
+ * const checkbox = new CheckboxBuilder({
855
+ * custom_id: 'accept_terms',
856
+ * default: false,
857
+ * });
858
+ * ```
859
+ * @example
860
+ * Creating a checkbox using setters and API data:
861
+ * ```ts
862
+ * const checkbox = new CheckboxBuilder()
863
+ * .setCustomId('subscribe_newsletter')
864
+ * .setDefault(true);
865
+ * ```
866
+ */
867
+ constructor(data) {
868
+ super({ type: import_v104.ComponentType.Checkbox, ...data });
869
+ }
870
+ /**
871
+ * Sets the custom id of this checkbox.
872
+ *
873
+ * @param customId - The custom id to use
874
+ */
875
+ setCustomId(customId) {
876
+ this.data.custom_id = customId;
877
+ return this;
878
+ }
879
+ /**
880
+ * Sets whether this checkbox is checked by default.
881
+ *
882
+ * @param isDefault - Whether the checkbox should be checked by default
883
+ */
884
+ setDefault(isDefault) {
885
+ this.data.default = isDefault;
886
+ return this;
887
+ }
888
+ /**
889
+ * {@inheritDoc ComponentBuilder.toJSON}
890
+ */
891
+ toJSON() {
892
+ checkboxPredicate.parse(this.data);
893
+ return {
894
+ ...this.data
895
+ };
896
+ }
897
+ };
898
+
899
+ // src/components/checkbox/CheckboxGroup.ts
900
+ var import_v105 = require("discord-api-types/v10");
901
+
902
+ // src/components/checkbox/CheckboxGroupOption.ts
903
+ var CheckboxGroupOptionBuilder = class {
904
+ /**
905
+ * Creates a new checkbox group option from API data.
906
+ *
907
+ * @param data - The API data to create this checkbox group option with
908
+ * @example
909
+ * Creating a checkbox group option from an API data object:
910
+ * ```ts
911
+ * const option = new CheckboxGroupOptionBuilder({
912
+ * label: 'Option 1',
913
+ * value: 'option_1',
914
+ * });
915
+ * ```
916
+ * @example
917
+ * Creating a checkbox group option using setters and API data:
918
+ * ```ts
919
+ * const option = new CheckboxGroupOptionBuilder()
920
+ * .setLabel('Option 2')
921
+ * .setValue('option_2');
922
+ * ```
923
+ */
924
+ constructor(data = {}) {
925
+ this.data = data;
926
+ }
927
+ static {
928
+ __name(this, "CheckboxGroupOptionBuilder");
929
+ }
930
+ /**
931
+ * Sets the label for this option.
932
+ *
933
+ * @param label - The label to use
934
+ */
935
+ setLabel(label) {
936
+ this.data.label = label;
937
+ return this;
938
+ }
939
+ /**
940
+ * Sets the value for this option.
941
+ *
942
+ * @param value - The value to use
943
+ */
944
+ setValue(value) {
945
+ this.data.value = value;
946
+ return this;
947
+ }
948
+ /**
949
+ * Sets the description for this option.
950
+ *
951
+ * @param description - The description to use
952
+ */
953
+ setDescription(description) {
954
+ this.data.description = description;
955
+ return this;
956
+ }
957
+ /**
958
+ * Sets whether this option is selected by default.
959
+ *
960
+ * @param isDefault - Whether the option should be selected by default
961
+ */
962
+ setDefault(isDefault) {
963
+ this.data.default = isDefault;
964
+ return this;
965
+ }
966
+ /**
967
+ * {@inheritDoc ComponentBuilder.toJSON}
968
+ */
969
+ toJSON() {
970
+ checkboxGroupOptionPredicate.parse(this.data);
971
+ return {
972
+ ...this.data
973
+ };
974
+ }
975
+ };
976
+
977
+ // src/components/checkbox/CheckboxGroup.ts
978
+ var CheckboxGroupBuilder = class extends ComponentBuilder {
979
+ static {
980
+ __name(this, "CheckboxGroupBuilder");
981
+ }
982
+ /**
983
+ * The options within this checkbox group.
984
+ */
985
+ options;
986
+ /**
987
+ * Creates a new checkbox group from API data.
988
+ *
989
+ * @param data - The API data to create this checkbox group with
990
+ * @example
991
+ * Creating a checkbox group from an API data object:
992
+ * ```ts
993
+ * const checkboxGroup = new CheckboxGroupBuilder({
994
+ * custom_id: 'select_options',
995
+ * options: [
996
+ * { label: 'Option 1', value: 'option_1' },
997
+ * { label: 'Option 2', value: 'option_2' },
998
+ * ],
999
+ * });
1000
+ * ```
1001
+ * @example
1002
+ * Creating a checkbox group using setters and API data:
1003
+ * ```ts
1004
+ * const checkboxGroup = new CheckboxGroupBuilder()
1005
+ * .setCustomId('choose_items')
1006
+ * .setOptions([
1007
+ * { label: 'Item A', value: 'item_a' },
1008
+ * { label: 'Item B', value: 'item_b' },
1009
+ * ])
1010
+ * .setMinValues(1)
1011
+ * .setMaxValues(2);
1012
+ * ```
1013
+ */
1014
+ constructor(data) {
1015
+ const { options, ...initData } = data ?? {};
1016
+ super({ ...initData, type: import_v105.ComponentType.CheckboxGroup });
1017
+ this.options = options?.map((option) => new CheckboxGroupOptionBuilder(option)) ?? [];
1018
+ }
1019
+ /**
1020
+ * Sets the custom id of this checkbox group.
1021
+ *
1022
+ * @param customId - The custom id to use
1023
+ */
1024
+ setCustomId(customId) {
1025
+ this.data.custom_id = customId;
1026
+ return this;
1027
+ }
1028
+ /**
1029
+ * Adds options to this checkbox group.
1030
+ *
1031
+ * @param options - The options to add
1032
+ */
1033
+ addOptions(...options) {
1034
+ const normalizedOptions = normalizeArray(options);
1035
+ this.options.push(
1036
+ ...normalizedOptions.map((normalizedOption) => {
1037
+ const json = "toJSON" in normalizedOption ? normalizedOption.toJSON() : normalizedOption;
1038
+ const option = new CheckboxGroupOptionBuilder(json);
1039
+ checkboxGroupOptionPredicate.parse(option.toJSON());
1040
+ return option;
1041
+ })
1042
+ );
1043
+ return this;
1044
+ }
1045
+ /**
1046
+ * Sets the options for this checkbox group.
1047
+ *
1048
+ * @param options - The options to use
1049
+ */
1050
+ setOptions(options) {
1051
+ return this.spliceOptions(0, this.options.length, ...options);
1052
+ }
1053
+ /**
1054
+ * Removes, replaces, or inserts options for this checkbox group.
1055
+ *
1056
+ * @remarks
1057
+ * This method behaves similarly
1058
+ * to {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice()}.
1059
+ * It's useful for modifying and adjusting the order of existing options.
1060
+ * @param index - The index to start at
1061
+ * @param deleteCount - The number of options to remove
1062
+ * @param options - The replacing option objects or builders
1063
+ */
1064
+ spliceOptions(index, deleteCount, ...options) {
1065
+ const normalizedOptions = normalizeArray(options);
1066
+ const clone = [...this.options];
1067
+ clone.splice(
1068
+ index,
1069
+ deleteCount,
1070
+ ...normalizedOptions.map((normalizedOption) => {
1071
+ const json = "toJSON" in normalizedOption ? normalizedOption.toJSON() : normalizedOption;
1072
+ const option = new CheckboxGroupOptionBuilder(json);
1073
+ checkboxGroupOptionPredicate.parse(option.toJSON());
1074
+ return option;
1075
+ })
1076
+ );
1077
+ this.options.splice(0, this.options.length, ...clone);
1078
+ return this;
1079
+ }
1080
+ /**
1081
+ * Sets the minimum number of options that must be selected.
1082
+ *
1083
+ * @param minValues - The minimum number of options that must be selected
1084
+ */
1085
+ setMinValues(minValues) {
1086
+ this.data.min_values = minValues;
1087
+ return this;
1088
+ }
1089
+ /**
1090
+ * Sets the maximum number of options that can be selected.
1091
+ *
1092
+ * @param maxValues - The maximum number of options that can be selected
1093
+ */
1094
+ setMaxValues(maxValues) {
1095
+ this.data.max_values = maxValues;
1096
+ return this;
1097
+ }
1098
+ /**
1099
+ * Sets whether selecting options is required.
1100
+ *
1101
+ * @param required - Whether selecting options is required
1102
+ */
1103
+ setRequired(required) {
1104
+ this.data.required = required;
1105
+ return this;
1106
+ }
1107
+ /**
1108
+ * {@inheritDoc ComponentBuilder.toJSON}
1109
+ */
1110
+ toJSON() {
1111
+ const data = {
1112
+ ...this.data,
1113
+ options: this.options.map((option) => option.toJSON())
1114
+ };
1115
+ checkboxGroupPredicate.parse(data);
1116
+ return data;
1117
+ }
1118
+ };
1119
+
1120
+ // src/components/checkbox/RadioGroup.ts
1121
+ var import_v106 = require("discord-api-types/v10");
1122
+
1123
+ // src/components/checkbox/RadioGroupOption.ts
1124
+ var RadioGroupOptionBuilder = class {
1125
+ /**
1126
+ * Creates a new radio group option from API data.
1127
+ *
1128
+ * @param data - The API data to create this radio group option with
1129
+ * @example
1130
+ * Creating a radio group option from an API data object:
1131
+ * ```ts
1132
+ * const option = new RadioGroupOptionBuilder({
1133
+ * label: 'Option 1',
1134
+ * value: 'option_1',
1135
+ * });
1136
+ * ```
1137
+ * @example
1138
+ * Creating a radio group option using setters and API data:
1139
+ * ```ts
1140
+ * const option = new RadioGroupOptionBuilder()
1141
+ * .setLabel('Option 2')
1142
+ * .setValue('option_2');
1143
+ * ```
1144
+ */
1145
+ constructor(data = {}) {
1146
+ this.data = data;
1147
+ }
1148
+ static {
1149
+ __name(this, "RadioGroupOptionBuilder");
1150
+ }
1151
+ /**
1152
+ * Sets the label for this option.
1153
+ *
1154
+ * @param label - The label to use
1155
+ */
1156
+ setLabel(label) {
1157
+ this.data.label = label;
1158
+ return this;
1159
+ }
1160
+ /**
1161
+ * Sets the value for this option.
1162
+ *
1163
+ * @param value - The value to use
1164
+ */
1165
+ setValue(value) {
1166
+ this.data.value = value;
1167
+ return this;
1168
+ }
1169
+ /**
1170
+ * Sets the description for this option.
1171
+ *
1172
+ * @param description - The description to use
1173
+ */
1174
+ setDescription(description) {
1175
+ this.data.description = description;
1176
+ return this;
1177
+ }
1178
+ /**
1179
+ * Sets whether this option is selected by default.
1180
+ *
1181
+ * @param isDefault - Whether the option should be selected by default
1182
+ */
1183
+ setDefault(isDefault) {
1184
+ this.data.default = isDefault;
1185
+ return this;
1186
+ }
1187
+ /**
1188
+ * {@inheritDoc ComponentBuilder.toJSON}
1189
+ */
1190
+ toJSON() {
1191
+ radioGroupOptionPredicate.parse(this.data);
1192
+ return {
1193
+ ...this.data
1194
+ };
1195
+ }
1196
+ };
1197
+
1198
+ // src/components/checkbox/RadioGroup.ts
1199
+ var RadioGroupBuilder = class extends ComponentBuilder {
1200
+ static {
1201
+ __name(this, "RadioGroupBuilder");
1202
+ }
1203
+ /**
1204
+ * The options within this radio group.
1205
+ */
1206
+ options;
1207
+ /**
1208
+ * Creates a new radio group from API data.
642
1209
  *
643
- * @param data - The API data to create this button with
1210
+ * @param data - The API data to create this radio group with
644
1211
  * @example
645
- * Creating a button from an API data object:
1212
+ * Creating a radio group from an API data object:
646
1213
  * ```ts
647
- * const button = new ButtonBuilder({
648
- * custom_id: 'a cool button',
649
- * style: ButtonStyle.Primary,
650
- * label: 'Click Me',
651
- * emoji: {
652
- * name: 'smile',
653
- * id: '123456789012345678',
654
- * },
1214
+ * const radioGroup = new RadioGroupBuilder({
1215
+ * custom_id: 'select_options',
1216
+ * options: [
1217
+ * { label: 'Option 1', value: 'option_1' },
1218
+ * { label: 'Option 2', value: 'option_2' },
1219
+ * ],
655
1220
  * });
656
1221
  * ```
657
1222
  * @example
658
- * Creating a button using setters and API data:
1223
+ * Creating a radio group using setters and API data:
659
1224
  * ```ts
660
- * const button = new ButtonBuilder({
661
- * style: ButtonStyle.Secondary,
662
- * label: 'Click Me',
663
- * })
664
- * .setEmoji({ name: '🙂' })
665
- * .setCustomId('another cool button');
1225
+ * const radioGroup = new RadioGroupBuilder()
1226
+ * .setCustomId('choose_items')
1227
+ * .setOptions([
1228
+ * { label: 'Item A', value: 'item_a' },
1229
+ * { label: 'Item B', value: 'item_b' },
1230
+ * ])
666
1231
  * ```
667
1232
  */
668
1233
  constructor(data) {
669
- super({ type: import_v102.ComponentType.Button, ...data });
670
- }
671
- /**
672
- * Sets the style of this button.
673
- *
674
- * @param style - The style to use
675
- */
676
- setStyle(style) {
677
- this.data.style = buttonStyleValidator.parse(style);
678
- return this;
679
- }
680
- /**
681
- * Sets the URL for this button.
682
- *
683
- * @remarks
684
- * This method is only available to buttons using the `Link` button style.
685
- * Only three types of URL schemes are currently supported: `https://`, `http://`, and `discord://`.
686
- * @param url - The URL to use
687
- */
688
- setURL(url) {
689
- this.data.url = urlValidator.parse(url);
690
- return this;
1234
+ const { options, ...initData } = data ?? {};
1235
+ super({ ...initData, type: import_v106.ComponentType.RadioGroup });
1236
+ this.options = options?.map((option) => new RadioGroupOptionBuilder(option)) ?? [];
691
1237
  }
692
1238
  /**
693
- * Sets the custom id for this button.
1239
+ * Sets the custom id of this radio group.
694
1240
  *
695
- * @remarks
696
- * This method is only applicable to buttons that are not using the `Link` button style.
697
1241
  * @param customId - The custom id to use
698
1242
  */
699
1243
  setCustomId(customId) {
700
- this.data.custom_id = customIdValidator.parse(customId);
1244
+ this.data.custom_id = customId;
701
1245
  return this;
702
1246
  }
703
1247
  /**
704
- * Sets the SKU id that represents a purchasable SKU for this button.
1248
+ * Adds options to this radio group.
705
1249
  *
706
- * @remarks Only available when using premium-style buttons.
707
- * @param skuId - The SKU id to use
1250
+ * @param options - The options to add
708
1251
  */
709
- setSKUId(skuId) {
710
- this.data.sku_id = skuId;
1252
+ addOptions(...options) {
1253
+ const normalizedOptions = normalizeArray(options);
1254
+ this.options.push(
1255
+ ...normalizedOptions.map((normalizedOption) => {
1256
+ const json = "toJSON" in normalizedOption ? normalizedOption.toJSON() : normalizedOption;
1257
+ const option = new RadioGroupOptionBuilder(json);
1258
+ radioGroupOptionPredicate.parse(option.toJSON());
1259
+ return option;
1260
+ })
1261
+ );
711
1262
  return this;
712
1263
  }
713
1264
  /**
714
- * Sets the emoji to display on this button.
1265
+ * Sets the options for this radio group.
715
1266
  *
716
- * @param emoji - The emoji to use
1267
+ * @param options - The options to use
717
1268
  */
718
- setEmoji(emoji) {
719
- this.data.emoji = emojiValidator.parse(emoji);
720
- return this;
1269
+ setOptions(options) {
1270
+ return this.spliceOptions(0, this.options.length, ...options);
721
1271
  }
722
1272
  /**
723
- * Sets whether this button is disabled.
1273
+ * Removes, replaces, or inserts options for this radio group.
724
1274
  *
725
- * @param disabled - Whether to disable this button
1275
+ * @remarks
1276
+ * This method behaves similarly
1277
+ * to {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice()}.
1278
+ * It's useful for modifying and adjusting the order of existing options.
1279
+ * @param index - The index to start at
1280
+ * @param deleteCount - The number of options to remove
1281
+ * @param options - The replacing option objects or builders
726
1282
  */
727
- setDisabled(disabled = true) {
728
- this.data.disabled = disabledValidator.parse(disabled);
1283
+ spliceOptions(index, deleteCount, ...options) {
1284
+ const normalizedOptions = normalizeArray(options);
1285
+ const clone = [...this.options];
1286
+ clone.splice(
1287
+ index,
1288
+ deleteCount,
1289
+ ...normalizedOptions.map((normalizedOption) => {
1290
+ const json = "toJSON" in normalizedOption ? normalizedOption.toJSON() : normalizedOption;
1291
+ const option = new RadioGroupOptionBuilder(json);
1292
+ radioGroupOptionPredicate.parse(option.toJSON());
1293
+ return option;
1294
+ })
1295
+ );
1296
+ this.options.splice(0, this.options.length, ...clone);
729
1297
  return this;
730
1298
  }
731
1299
  /**
732
- * Sets the label for this button.
1300
+ * Sets whether selecting options is required.
733
1301
  *
734
- * @param label - The label to use
1302
+ * @param required - Whether selecting options is required
735
1303
  */
736
- setLabel(label) {
737
- this.data.label = buttonLabelValidator.parse(label);
1304
+ setRequired(required) {
1305
+ this.data.required = required;
738
1306
  return this;
739
1307
  }
740
1308
  /**
741
1309
  * {@inheritDoc ComponentBuilder.toJSON}
742
1310
  */
743
1311
  toJSON() {
744
- validateRequiredButtonParameters(
745
- this.data.style,
746
- this.data.label,
747
- this.data.emoji,
748
- this.data.custom_id,
749
- this.data.sku_id,
750
- this.data.url
751
- );
752
- return {
753
- ...this.data
1312
+ const data = {
1313
+ ...this.data,
1314
+ options: this.options.map((option) => option.toJSON())
754
1315
  };
1316
+ radioGroupPredicate.parse(data);
1317
+ return data;
755
1318
  }
756
1319
  };
757
1320
 
758
1321
  // src/components/fileUpload/FileUpload.ts
759
- var import_v104 = require("discord-api-types/v10");
1322
+ var import_v108 = require("discord-api-types/v10");
760
1323
 
761
1324
  // src/components/fileUpload/Assertions.ts
762
- var Assertions_exports3 = {};
763
- __export(Assertions_exports3, {
1325
+ var Assertions_exports4 = {};
1326
+ __export(Assertions_exports4, {
764
1327
  fileUploadPredicate: () => fileUploadPredicate
765
1328
  });
766
- var import_shapeshift3 = require("@sapphire/shapeshift");
767
- var import_v103 = require("discord-api-types/v10");
768
- var fileUploadPredicate = import_shapeshift3.s.object({
769
- type: import_shapeshift3.s.literal(import_v103.ComponentType.FileUpload),
1329
+ var import_shapeshift4 = require("@sapphire/shapeshift");
1330
+ var import_v107 = require("discord-api-types/v10");
1331
+ var fileUploadPredicate = import_shapeshift4.s.object({
1332
+ type: import_shapeshift4.s.literal(import_v107.ComponentType.FileUpload),
770
1333
  id: idValidator.optional(),
771
1334
  custom_id: customIdValidator,
772
- min_values: import_shapeshift3.s.number().greaterThanOrEqual(0).lessThanOrEqual(10).optional(),
773
- max_values: import_shapeshift3.s.number().greaterThanOrEqual(1).lessThanOrEqual(10).optional(),
774
- required: import_shapeshift3.s.boolean().optional()
1335
+ min_values: import_shapeshift4.s.number().greaterThanOrEqual(0).lessThanOrEqual(10).optional(),
1336
+ max_values: import_shapeshift4.s.number().greaterThanOrEqual(1).lessThanOrEqual(10).optional(),
1337
+ required: import_shapeshift4.s.boolean().optional()
775
1338
  });
776
1339
 
777
1340
  // src/components/fileUpload/FileUpload.ts
@@ -803,7 +1366,7 @@ var FileUploadBuilder = class extends ComponentBuilder {
803
1366
  * ```
804
1367
  */
805
1368
  constructor(data = {}) {
806
- super({ type: import_v104.ComponentType.FileUpload, ...data });
1369
+ super({ type: import_v108.ComponentType.FileUpload, ...data });
807
1370
  }
808
1371
  /**
809
1372
  * Sets the custom id for this file upload.
@@ -865,14 +1428,14 @@ var FileUploadBuilder = class extends ComponentBuilder {
865
1428
  };
866
1429
 
867
1430
  // src/components/label/Label.ts
868
- var import_v1014 = require("discord-api-types/v10");
1431
+ var import_v1018 = require("discord-api-types/v10");
869
1432
 
870
1433
  // src/components/selectMenu/ChannelSelectMenu.ts
871
- var import_v106 = require("discord-api-types/v10");
1434
+ var import_v1010 = require("discord-api-types/v10");
872
1435
 
873
1436
  // src/components/textInput/Assertions.ts
874
- var Assertions_exports4 = {};
875
- __export(Assertions_exports4, {
1437
+ var Assertions_exports5 = {};
1438
+ __export(Assertions_exports5, {
876
1439
  labelValidator: () => labelValidator,
877
1440
  maxLengthValidator: () => maxLengthValidator,
878
1441
  minLengthValidator: () => minLengthValidator,
@@ -883,17 +1446,17 @@ __export(Assertions_exports4, {
883
1446
  validateRequiredParameters: () => validateRequiredParameters,
884
1447
  valueValidator: () => valueValidator
885
1448
  });
886
- var import_shapeshift4 = require("@sapphire/shapeshift");
887
- var import_v105 = require("discord-api-types/v10");
888
- var textInputStyleValidator = import_shapeshift4.s.nativeEnum(import_v105.TextInputStyle).setValidationEnabled(isValidationEnabled);
889
- var minLengthValidator = import_shapeshift4.s.number().int().greaterThanOrEqual(0).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
890
- var maxLengthValidator = import_shapeshift4.s.number().int().greaterThanOrEqual(1).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
891
- var requiredValidator = import_shapeshift4.s.boolean().setValidationEnabled(isValidationEnabled);
892
- var valueValidator = import_shapeshift4.s.string().lengthLessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
893
- var placeholderValidator2 = import_shapeshift4.s.string().lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
894
- var labelValidator = import_shapeshift4.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled);
895
- var textInputPredicate = import_shapeshift4.s.object({
896
- type: import_shapeshift4.s.literal(import_v105.ComponentType.TextInput),
1449
+ var import_shapeshift5 = require("@sapphire/shapeshift");
1450
+ var import_v109 = require("discord-api-types/v10");
1451
+ var textInputStyleValidator = import_shapeshift5.s.nativeEnum(import_v109.TextInputStyle).setValidationEnabled(isValidationEnabled);
1452
+ var minLengthValidator = import_shapeshift5.s.number().int().greaterThanOrEqual(0).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
1453
+ var maxLengthValidator = import_shapeshift5.s.number().int().greaterThanOrEqual(1).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
1454
+ var requiredValidator = import_shapeshift5.s.boolean().setValidationEnabled(isValidationEnabled);
1455
+ var valueValidator = import_shapeshift5.s.string().lengthLessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
1456
+ var placeholderValidator2 = import_shapeshift5.s.string().lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
1457
+ var labelValidator = import_shapeshift5.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled);
1458
+ var textInputPredicate = import_shapeshift5.s.object({
1459
+ type: import_shapeshift5.s.literal(import_v109.ComponentType.TextInput),
897
1460
  custom_id: customIdValidator,
898
1461
  style: textInputStyleValidator,
899
1462
  id: idValidator.optional(),
@@ -1009,7 +1572,7 @@ var ChannelSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1009
1572
  * ```
1010
1573
  */
1011
1574
  constructor(data) {
1012
- super({ ...data, type: import_v106.ComponentType.ChannelSelect });
1575
+ super({ ...data, type: import_v1010.ComponentType.ChannelSelect });
1013
1576
  }
1014
1577
  /**
1015
1578
  * Adds channel types to this select menu.
@@ -1045,7 +1608,7 @@ var ChannelSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1045
1608
  this.data.default_values.push(
1046
1609
  ...normalizedValues.map((id) => ({
1047
1610
  id,
1048
- type: import_v106.SelectMenuDefaultValueType.Channel
1611
+ type: import_v1010.SelectMenuDefaultValueType.Channel
1049
1612
  }))
1050
1613
  );
1051
1614
  return this;
@@ -1060,7 +1623,7 @@ var ChannelSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1060
1623
  optionsLengthValidator.parse(normalizedValues.length);
1061
1624
  this.data.default_values = normalizedValues.map((id) => ({
1062
1625
  id,
1063
- type: import_v106.SelectMenuDefaultValueType.Channel
1626
+ type: import_v1010.SelectMenuDefaultValueType.Channel
1064
1627
  }));
1065
1628
  return this;
1066
1629
  }
@@ -1076,7 +1639,7 @@ var ChannelSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1076
1639
  };
1077
1640
 
1078
1641
  // src/components/selectMenu/MentionableSelectMenu.ts
1079
- var import_v107 = require("discord-api-types/v10");
1642
+ var import_v1011 = require("discord-api-types/v10");
1080
1643
  var MentionableSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1081
1644
  static {
1082
1645
  __name(this, "MentionableSelectMenuBuilder");
@@ -1104,7 +1667,7 @@ var MentionableSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1104
1667
  * ```
1105
1668
  */
1106
1669
  constructor(data) {
1107
- super({ ...data, type: import_v107.ComponentType.MentionableSelect });
1670
+ super({ ...data, type: import_v1011.ComponentType.MentionableSelect });
1108
1671
  }
1109
1672
  /**
1110
1673
  * Adds default roles to this auto populated select menu.
@@ -1118,7 +1681,7 @@ var MentionableSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1118
1681
  this.data.default_values.push(
1119
1682
  ...normalizedValues.map((id) => ({
1120
1683
  id,
1121
- type: import_v107.SelectMenuDefaultValueType.Role
1684
+ type: import_v1011.SelectMenuDefaultValueType.Role
1122
1685
  }))
1123
1686
  );
1124
1687
  return this;
@@ -1135,7 +1698,7 @@ var MentionableSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1135
1698
  this.data.default_values.push(
1136
1699
  ...normalizedValues.map((id) => ({
1137
1700
  id,
1138
- type: import_v107.SelectMenuDefaultValueType.User
1701
+ type: import_v1011.SelectMenuDefaultValueType.User
1139
1702
  }))
1140
1703
  );
1141
1704
  return this;
@@ -1166,7 +1729,7 @@ var MentionableSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1166
1729
  };
1167
1730
 
1168
1731
  // src/components/selectMenu/RoleSelectMenu.ts
1169
- var import_v108 = require("discord-api-types/v10");
1732
+ var import_v1012 = require("discord-api-types/v10");
1170
1733
  var RoleSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1171
1734
  static {
1172
1735
  __name(this, "RoleSelectMenuBuilder");
@@ -1194,7 +1757,7 @@ var RoleSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1194
1757
  * ```
1195
1758
  */
1196
1759
  constructor(data) {
1197
- super({ ...data, type: import_v108.ComponentType.RoleSelect });
1760
+ super({ ...data, type: import_v1012.ComponentType.RoleSelect });
1198
1761
  }
1199
1762
  /**
1200
1763
  * Adds default roles to this auto populated select menu.
@@ -1208,7 +1771,7 @@ var RoleSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1208
1771
  this.data.default_values.push(
1209
1772
  ...normalizedValues.map((id) => ({
1210
1773
  id,
1211
- type: import_v108.SelectMenuDefaultValueType.Role
1774
+ type: import_v1012.SelectMenuDefaultValueType.Role
1212
1775
  }))
1213
1776
  );
1214
1777
  return this;
@@ -1223,18 +1786,18 @@ var RoleSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1223
1786
  optionsLengthValidator.parse(normalizedValues.length);
1224
1787
  this.data.default_values = normalizedValues.map((id) => ({
1225
1788
  id,
1226
- type: import_v108.SelectMenuDefaultValueType.Role
1789
+ type: import_v1012.SelectMenuDefaultValueType.Role
1227
1790
  }));
1228
1791
  return this;
1229
1792
  }
1230
1793
  };
1231
1794
 
1232
1795
  // src/components/selectMenu/StringSelectMenu.ts
1233
- var import_v1010 = require("discord-api-types/v10");
1796
+ var import_v1014 = require("discord-api-types/v10");
1234
1797
 
1235
1798
  // src/components/selectMenu/Assertions.ts
1236
- var Assertions_exports5 = {};
1237
- __export(Assertions_exports5, {
1799
+ var Assertions_exports6 = {};
1800
+ __export(Assertions_exports6, {
1238
1801
  selectMenuChannelPredicate: () => selectMenuChannelPredicate,
1239
1802
  selectMenuMentionablePredicate: () => selectMenuMentionablePredicate,
1240
1803
  selectMenuRolePredicate: () => selectMenuRolePredicate,
@@ -1242,56 +1805,56 @@ __export(Assertions_exports5, {
1242
1805
  selectMenuStringPredicate: () => selectMenuStringPredicate,
1243
1806
  selectMenuUserPredicate: () => selectMenuUserPredicate
1244
1807
  });
1245
- var import_shapeshift5 = require("@sapphire/shapeshift");
1246
- var import_v109 = require("discord-api-types/v10");
1247
- var selectMenuBasePredicate = import_shapeshift5.s.object({
1808
+ var import_shapeshift6 = require("@sapphire/shapeshift");
1809
+ var import_v1013 = require("discord-api-types/v10");
1810
+ var selectMenuBasePredicate = import_shapeshift6.s.object({
1248
1811
  id: idValidator.optional(),
1249
- placeholder: import_shapeshift5.s.string().lengthLessThanOrEqual(150).optional(),
1250
- min_values: import_shapeshift5.s.number().greaterThanOrEqual(0).lessThanOrEqual(25).optional(),
1251
- max_values: import_shapeshift5.s.number().greaterThanOrEqual(0).lessThanOrEqual(25).optional(),
1812
+ placeholder: import_shapeshift6.s.string().lengthLessThanOrEqual(150).optional(),
1813
+ min_values: import_shapeshift6.s.number().greaterThanOrEqual(0).lessThanOrEqual(25).optional(),
1814
+ max_values: import_shapeshift6.s.number().greaterThanOrEqual(0).lessThanOrEqual(25).optional(),
1252
1815
  custom_id: customIdValidator,
1253
- disabled: import_shapeshift5.s.boolean().optional()
1816
+ disabled: import_shapeshift6.s.boolean().optional()
1254
1817
  });
1255
1818
  var selectMenuChannelPredicate = selectMenuBasePredicate.extend({
1256
- type: import_shapeshift5.s.literal(import_v109.ComponentType.ChannelSelect),
1257
- channel_types: import_shapeshift5.s.nativeEnum(import_v109.ChannelType).array().optional(),
1258
- default_values: import_shapeshift5.s.object({ id: import_shapeshift5.s.string(), type: import_shapeshift5.s.literal(import_v109.SelectMenuDefaultValueType.Channel) }).array().lengthLessThanOrEqual(25).optional()
1819
+ type: import_shapeshift6.s.literal(import_v1013.ComponentType.ChannelSelect),
1820
+ channel_types: import_shapeshift6.s.nativeEnum(import_v1013.ChannelType).array().optional(),
1821
+ default_values: import_shapeshift6.s.object({ id: import_shapeshift6.s.string(), type: import_shapeshift6.s.literal(import_v1013.SelectMenuDefaultValueType.Channel) }).array().lengthLessThanOrEqual(25).optional()
1259
1822
  }).setValidationEnabled(isValidationEnabled);
1260
1823
  var selectMenuMentionablePredicate = selectMenuBasePredicate.extend({
1261
- type: import_shapeshift5.s.literal(import_v109.ComponentType.MentionableSelect),
1262
- default_values: import_shapeshift5.s.object({
1263
- id: import_shapeshift5.s.string(),
1264
- type: import_shapeshift5.s.union([import_shapeshift5.s.literal(import_v109.SelectMenuDefaultValueType.Role), import_shapeshift5.s.literal(import_v109.SelectMenuDefaultValueType.User)])
1824
+ type: import_shapeshift6.s.literal(import_v1013.ComponentType.MentionableSelect),
1825
+ default_values: import_shapeshift6.s.object({
1826
+ id: import_shapeshift6.s.string(),
1827
+ type: import_shapeshift6.s.union([import_shapeshift6.s.literal(import_v1013.SelectMenuDefaultValueType.Role), import_shapeshift6.s.literal(import_v1013.SelectMenuDefaultValueType.User)])
1265
1828
  }).array().lengthLessThanOrEqual(25).optional()
1266
1829
  }).setValidationEnabled(isValidationEnabled);
1267
1830
  var selectMenuRolePredicate = selectMenuBasePredicate.extend({
1268
- type: import_shapeshift5.s.literal(import_v109.ComponentType.RoleSelect),
1269
- default_values: import_shapeshift5.s.object({ id: import_shapeshift5.s.string(), type: import_shapeshift5.s.literal(import_v109.SelectMenuDefaultValueType.Role) }).array().lengthLessThanOrEqual(25).optional()
1831
+ type: import_shapeshift6.s.literal(import_v1013.ComponentType.RoleSelect),
1832
+ default_values: import_shapeshift6.s.object({ id: import_shapeshift6.s.string(), type: import_shapeshift6.s.literal(import_v1013.SelectMenuDefaultValueType.Role) }).array().lengthLessThanOrEqual(25).optional()
1270
1833
  }).setValidationEnabled(isValidationEnabled);
1271
1834
  var selectMenuUserPredicate = selectMenuBasePredicate.extend({
1272
- type: import_shapeshift5.s.literal(import_v109.ComponentType.UserSelect),
1273
- default_values: import_shapeshift5.s.object({ id: import_shapeshift5.s.string(), type: import_shapeshift5.s.literal(import_v109.SelectMenuDefaultValueType.User) }).array().lengthLessThanOrEqual(25).optional()
1835
+ type: import_shapeshift6.s.literal(import_v1013.ComponentType.UserSelect),
1836
+ default_values: import_shapeshift6.s.object({ id: import_shapeshift6.s.string(), type: import_shapeshift6.s.literal(import_v1013.SelectMenuDefaultValueType.User) }).array().lengthLessThanOrEqual(25).optional()
1274
1837
  }).setValidationEnabled(isValidationEnabled);
1275
- var selectMenuStringOptionPredicate = import_shapeshift5.s.object({
1276
- label: import_shapeshift5.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100),
1277
- value: import_shapeshift5.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100),
1278
- description: import_shapeshift5.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).optional(),
1838
+ var selectMenuStringOptionPredicate = import_shapeshift6.s.object({
1839
+ label: import_shapeshift6.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100),
1840
+ value: import_shapeshift6.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100),
1841
+ description: import_shapeshift6.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).optional(),
1279
1842
  emoji: emojiValidator.optional(),
1280
- default: import_shapeshift5.s.boolean().optional()
1843
+ default: import_shapeshift6.s.boolean().optional()
1281
1844
  }).setValidationEnabled(isValidationEnabled);
1282
1845
  var selectMenuStringPredicate = selectMenuBasePredicate.extend({
1283
- type: import_shapeshift5.s.literal(import_v109.ComponentType.StringSelect),
1846
+ type: import_shapeshift6.s.literal(import_v1013.ComponentType.StringSelect),
1284
1847
  options: selectMenuStringOptionPredicate.array().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(25)
1285
1848
  }).reshape((value) => {
1286
1849
  if (value.min_values !== void 0 && value.options.length < value.min_values) {
1287
- return import_shapeshift5.Result.err(new RangeError(`The number of options must be greater than or equal to min_values`));
1850
+ return import_shapeshift6.Result.err(new RangeError(`The number of options must be greater than or equal to min_values`));
1288
1851
  }
1289
1852
  if (value.min_values !== void 0 && value.max_values !== void 0 && value.min_values > value.max_values) {
1290
- return import_shapeshift5.Result.err(
1853
+ return import_shapeshift6.Result.err(
1291
1854
  new RangeError(`The maximum amount of options must be greater than or equal to the minimum amount of options`)
1292
1855
  );
1293
1856
  }
1294
- return import_shapeshift5.Result.ok(value);
1857
+ return import_shapeshift6.Result.ok(value);
1295
1858
  }).setValidationEnabled(isValidationEnabled);
1296
1859
 
1297
1860
  // src/components/selectMenu/StringSelectMenu.ts
@@ -1336,7 +1899,7 @@ var StringSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1336
1899
  */
1337
1900
  constructor(data) {
1338
1901
  const { options, ...initData } = data ?? {};
1339
- super({ ...initData, type: import_v1010.ComponentType.StringSelect });
1902
+ super({ ...initData, type: import_v1014.ComponentType.StringSelect });
1340
1903
  this.options = options?.map((option) => new StringSelectMenuOptionBuilder(option)) ?? [];
1341
1904
  }
1342
1905
  /**
@@ -1367,7 +1930,7 @@ var StringSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1367
1930
  *
1368
1931
  * @remarks
1369
1932
  * This method behaves similarly
1370
- * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice | Array.prototype.splice()}.
1933
+ * to {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice()}.
1371
1934
  * It's useful for modifying and adjusting the order of existing options.
1372
1935
  * @example
1373
1936
  * Remove the first option:
@@ -1416,7 +1979,7 @@ var StringSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1416
1979
  };
1417
1980
 
1418
1981
  // src/components/selectMenu/UserSelectMenu.ts
1419
- var import_v1011 = require("discord-api-types/v10");
1982
+ var import_v1015 = require("discord-api-types/v10");
1420
1983
  var UserSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1421
1984
  static {
1422
1985
  __name(this, "UserSelectMenuBuilder");
@@ -1444,7 +2007,7 @@ var UserSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1444
2007
  * ```
1445
2008
  */
1446
2009
  constructor(data) {
1447
- super({ ...data, type: import_v1011.ComponentType.UserSelect });
2010
+ super({ ...data, type: import_v1015.ComponentType.UserSelect });
1448
2011
  }
1449
2012
  /**
1450
2013
  * Adds default users to this auto populated select menu.
@@ -1458,7 +2021,7 @@ var UserSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1458
2021
  this.data.default_values.push(
1459
2022
  ...normalizedValues.map((id) => ({
1460
2023
  id,
1461
- type: import_v1011.SelectMenuDefaultValueType.User
2024
+ type: import_v1015.SelectMenuDefaultValueType.User
1462
2025
  }))
1463
2026
  );
1464
2027
  return this;
@@ -1473,7 +2036,7 @@ var UserSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1473
2036
  optionsLengthValidator.parse(normalizedValues.length);
1474
2037
  this.data.default_values = normalizedValues.map((id) => ({
1475
2038
  id,
1476
- type: import_v1011.SelectMenuDefaultValueType.User
2039
+ type: import_v1015.SelectMenuDefaultValueType.User
1477
2040
  }));
1478
2041
  return this;
1479
2042
  }
@@ -1481,7 +2044,7 @@ var UserSelectMenuBuilder = class extends BaseSelectMenuBuilder {
1481
2044
 
1482
2045
  // src/components/textInput/TextInput.ts
1483
2046
  var import_util = require("@discordjs/util");
1484
- var import_v1012 = require("discord-api-types/v10");
2047
+ var import_v1016 = require("discord-api-types/v10");
1485
2048
  var import_fast_deep_equal = __toESM(require("fast-deep-equal"));
1486
2049
  var TextInputBuilder = class extends ComponentBuilder {
1487
2050
  static {
@@ -1511,7 +2074,7 @@ var TextInputBuilder = class extends ComponentBuilder {
1511
2074
  * ```
1512
2075
  */
1513
2076
  constructor(data) {
1514
- super({ type: import_v1012.ComponentType.TextInput, ...data });
2077
+ super({ type: import_v1016.ComponentType.TextInput, ...data });
1515
2078
  }
1516
2079
  /**
1517
2080
  * Sets the custom id for this text input.
@@ -1607,25 +2170,28 @@ var TextInputBuilder = class extends ComponentBuilder {
1607
2170
  };
1608
2171
 
1609
2172
  // src/components/label/Assertions.ts
1610
- var Assertions_exports6 = {};
1611
- __export(Assertions_exports6, {
2173
+ var Assertions_exports7 = {};
2174
+ __export(Assertions_exports7, {
1612
2175
  labelPredicate: () => labelPredicate
1613
2176
  });
1614
- var import_shapeshift6 = require("@sapphire/shapeshift");
1615
- var import_v1013 = require("discord-api-types/v10");
1616
- var labelPredicate = import_shapeshift6.s.object({
2177
+ var import_shapeshift7 = require("@sapphire/shapeshift");
2178
+ var import_v1017 = require("discord-api-types/v10");
2179
+ var labelPredicate = import_shapeshift7.s.object({
1617
2180
  id: idValidator.optional(),
1618
- type: import_shapeshift6.s.literal(import_v1013.ComponentType.Label),
1619
- label: import_shapeshift6.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45),
1620
- description: import_shapeshift6.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).optional(),
1621
- component: import_shapeshift6.s.union([
2181
+ type: import_shapeshift7.s.literal(import_v1017.ComponentType.Label),
2182
+ label: import_shapeshift7.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45),
2183
+ description: import_shapeshift7.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).optional(),
2184
+ component: import_shapeshift7.s.union([
1622
2185
  textInputPredicate,
1623
2186
  selectMenuUserPredicate,
1624
2187
  selectMenuRolePredicate,
1625
2188
  selectMenuMentionablePredicate,
1626
2189
  selectMenuChannelPredicate,
1627
2190
  selectMenuStringPredicate,
1628
- fileUploadPredicate
2191
+ fileUploadPredicate,
2192
+ checkboxPredicate,
2193
+ checkboxGroupPredicate,
2194
+ radioGroupPredicate
1629
2195
  ])
1630
2196
  }).setValidationEnabled(isValidationEnabled);
1631
2197
 
@@ -1660,12 +2226,12 @@ var LabelBuilder = class extends ComponentBuilder {
1660
2226
  * ```
1661
2227
  */
1662
2228
  constructor(data = {}) {
1663
- super({ type: import_v1014.ComponentType.Label });
2229
+ super({ type: import_v1018.ComponentType.Label });
1664
2230
  const { component, ...rest } = data;
1665
2231
  this.data = {
1666
2232
  ...rest,
1667
2233
  component: component ? createComponentBuilder(component) : void 0,
1668
- type: import_v1014.ComponentType.Label
2234
+ type: import_v1018.ComponentType.Label
1669
2235
  };
1670
2236
  }
1671
2237
  /**
@@ -1756,6 +2322,33 @@ var LabelBuilder = class extends ComponentBuilder {
1756
2322
  this.data.component = resolveBuilder(input, FileUploadBuilder);
1757
2323
  return this;
1758
2324
  }
2325
+ /**
2326
+ * Sets a checkbox component to this label.
2327
+ *
2328
+ * @param input - A function that returns a component builder or an already built builder
2329
+ */
2330
+ setCheckboxComponent(input) {
2331
+ this.data.component = resolveBuilder(input, CheckboxBuilder);
2332
+ return this;
2333
+ }
2334
+ /**
2335
+ * Sets a checkbox group component to this label.
2336
+ *
2337
+ * @param input - A function that returns a component builder or an already built builder
2338
+ */
2339
+ setCheckboxGroupComponent(input) {
2340
+ this.data.component = resolveBuilder(input, CheckboxGroupBuilder);
2341
+ return this;
2342
+ }
2343
+ /**
2344
+ * Sets a radio group component to this label.
2345
+ *
2346
+ * @param input - A function that returns a component builder or an already built builder
2347
+ */
2348
+ setRadioGroupComponent(input) {
2349
+ this.data.component = resolveBuilder(input, RadioGroupBuilder);
2350
+ return this;
2351
+ }
1759
2352
  /**
1760
2353
  * {@inheritDoc ComponentBuilder.toJSON}
1761
2354
  */
@@ -1772,11 +2365,11 @@ var LabelBuilder = class extends ComponentBuilder {
1772
2365
  };
1773
2366
 
1774
2367
  // src/components/v2/Container.ts
1775
- var import_v1020 = require("discord-api-types/v10");
2368
+ var import_v1024 = require("discord-api-types/v10");
1776
2369
 
1777
2370
  // src/components/v2/Assertions.ts
1778
- var Assertions_exports7 = {};
1779
- __export(Assertions_exports7, {
2371
+ var Assertions_exports8 = {};
2372
+ __export(Assertions_exports8, {
1780
2373
  accessoryPredicate: () => accessoryPredicate,
1781
2374
  assertReturnOfBuilder: () => assertReturnOfBuilder,
1782
2375
  containerColorPredicate: () => containerColorPredicate,
@@ -1789,11 +2382,11 @@ __export(Assertions_exports7, {
1789
2382
  unfurledMediaItemPredicate: () => unfurledMediaItemPredicate,
1790
2383
  validateComponentArray: () => validateComponentArray
1791
2384
  });
1792
- var import_shapeshift7 = require("@sapphire/shapeshift");
1793
- var import_v1016 = require("discord-api-types/v10");
2385
+ var import_shapeshift8 = require("@sapphire/shapeshift");
2386
+ var import_v1020 = require("discord-api-types/v10");
1794
2387
 
1795
2388
  // src/components/v2/Thumbnail.ts
1796
- var import_v1015 = require("discord-api-types/v10");
2389
+ var import_v1019 = require("discord-api-types/v10");
1797
2390
  var ThumbnailBuilder = class extends ComponentBuilder {
1798
2391
  static {
1799
2392
  __name(this, "ThumbnailBuilder");
@@ -1825,7 +2418,7 @@ var ThumbnailBuilder = class extends ComponentBuilder {
1825
2418
  */
1826
2419
  constructor(data = {}) {
1827
2420
  super({
1828
- type: import_v1015.ComponentType.Thumbnail,
2421
+ type: import_v1019.ComponentType.Thumbnail,
1829
2422
  ...data,
1830
2423
  media: data.media ? { url: data.media.url } : void 0
1831
2424
  });
@@ -1874,33 +2467,33 @@ var ThumbnailBuilder = class extends ComponentBuilder {
1874
2467
  };
1875
2468
 
1876
2469
  // src/components/v2/Assertions.ts
1877
- var unfurledMediaItemPredicate = import_shapeshift7.s.object({
1878
- url: import_shapeshift7.s.string().url(
2470
+ var unfurledMediaItemPredicate = import_shapeshift8.s.object({
2471
+ url: import_shapeshift8.s.string().url(
1879
2472
  { allowedProtocols: ["http:", "https:", "attachment:"] },
1880
2473
  { message: "Invalid protocol for media URL. Must be http:, https:, or attachment:" }
1881
2474
  )
1882
2475
  }).setValidationEnabled(isValidationEnabled);
1883
- var descriptionPredicate2 = import_shapeshift7.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(1024).setValidationEnabled(isValidationEnabled);
1884
- var filePredicate = import_shapeshift7.s.object({
1885
- url: import_shapeshift7.s.string().url({ allowedProtocols: ["attachment:"] }, { message: "Invalid protocol for file URL. Must be attachment:" })
2476
+ var descriptionPredicate2 = import_shapeshift8.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(1024).setValidationEnabled(isValidationEnabled);
2477
+ var filePredicate = import_shapeshift8.s.object({
2478
+ url: import_shapeshift8.s.string().url({ allowedProtocols: ["attachment:"] }, { message: "Invalid protocol for file URL. Must be attachment:" })
1886
2479
  }).setValidationEnabled(isValidationEnabled);
1887
- var spoilerPredicate = import_shapeshift7.s.boolean();
1888
- var dividerPredicate = import_shapeshift7.s.boolean();
1889
- var spacingPredicate = import_shapeshift7.s.nativeEnum(import_v1016.SeparatorSpacingSize);
1890
- var textDisplayContentPredicate = import_shapeshift7.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
1891
- var accessoryPredicate = import_shapeshift7.s.instance(ButtonBuilder).or(import_shapeshift7.s.instance(ThumbnailBuilder)).setValidationEnabled(isValidationEnabled);
2480
+ var spoilerPredicate = import_shapeshift8.s.boolean();
2481
+ var dividerPredicate = import_shapeshift8.s.boolean();
2482
+ var spacingPredicate = import_shapeshift8.s.nativeEnum(import_v1020.SeparatorSpacingSize);
2483
+ var textDisplayContentPredicate = import_shapeshift8.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
2484
+ var accessoryPredicate = import_shapeshift8.s.instance(ButtonBuilder).or(import_shapeshift8.s.instance(ThumbnailBuilder)).setValidationEnabled(isValidationEnabled);
1892
2485
  var containerColorPredicate = colorPredicate.nullish();
1893
2486
  function assertReturnOfBuilder(input, ExpectedInstanceOf) {
1894
- import_shapeshift7.s.instance(ExpectedInstanceOf).setValidationEnabled(isValidationEnabled).parse(input);
2487
+ import_shapeshift8.s.instance(ExpectedInstanceOf).setValidationEnabled(isValidationEnabled).parse(input);
1895
2488
  }
1896
2489
  __name(assertReturnOfBuilder, "assertReturnOfBuilder");
1897
2490
  function validateComponentArray(input, min, max, ExpectedInstanceOf) {
1898
- (ExpectedInstanceOf ? import_shapeshift7.s.instance(ExpectedInstanceOf) : import_shapeshift7.s.instance(ComponentBuilder)).array().lengthGreaterThanOrEqual(min).lengthLessThanOrEqual(max).setValidationEnabled(isValidationEnabled).parse(input);
2491
+ (ExpectedInstanceOf ? import_shapeshift8.s.instance(ExpectedInstanceOf) : import_shapeshift8.s.instance(ComponentBuilder)).array().lengthGreaterThanOrEqual(min).lengthLessThanOrEqual(max).setValidationEnabled(isValidationEnabled).parse(input);
1899
2492
  }
1900
2493
  __name(validateComponentArray, "validateComponentArray");
1901
2494
 
1902
2495
  // src/components/v2/File.ts
1903
- var import_v1017 = require("discord-api-types/v10");
2496
+ var import_v1021 = require("discord-api-types/v10");
1904
2497
  var FileBuilder = class extends ComponentBuilder {
1905
2498
  static {
1906
2499
  __name(this, "FileBuilder");
@@ -1931,7 +2524,7 @@ var FileBuilder = class extends ComponentBuilder {
1931
2524
  * ```
1932
2525
  */
1933
2526
  constructor(data = {}) {
1934
- super({ type: import_v1017.ComponentType.File, ...data, file: data.file ? { url: data.file.url } : void 0 });
2527
+ super({ type: import_v1021.ComponentType.File, ...data, file: data.file ? { url: data.file.url } : void 0 });
1935
2528
  }
1936
2529
  /**
1937
2530
  * Sets the spoiler status of this file.
@@ -1961,7 +2554,7 @@ var FileBuilder = class extends ComponentBuilder {
1961
2554
  };
1962
2555
 
1963
2556
  // src/components/v2/Separator.ts
1964
- var import_v1018 = require("discord-api-types/v10");
2557
+ var import_v1022 = require("discord-api-types/v10");
1965
2558
  var SeparatorBuilder = class extends ComponentBuilder {
1966
2559
  static {
1967
2560
  __name(this, "SeparatorBuilder");
@@ -1989,7 +2582,7 @@ var SeparatorBuilder = class extends ComponentBuilder {
1989
2582
  */
1990
2583
  constructor(data = {}) {
1991
2584
  super({
1992
- type: import_v1018.ComponentType.Separator,
2585
+ type: import_v1022.ComponentType.Separator,
1993
2586
  ...data
1994
2587
  });
1995
2588
  }
@@ -2027,7 +2620,7 @@ var SeparatorBuilder = class extends ComponentBuilder {
2027
2620
  };
2028
2621
 
2029
2622
  // src/components/v2/TextDisplay.ts
2030
- var import_v1019 = require("discord-api-types/v10");
2623
+ var import_v1023 = require("discord-api-types/v10");
2031
2624
  var TextDisplayBuilder = class extends ComponentBuilder {
2032
2625
  static {
2033
2626
  __name(this, "TextDisplayBuilder");
@@ -2054,7 +2647,7 @@ var TextDisplayBuilder = class extends ComponentBuilder {
2054
2647
  */
2055
2648
  constructor(data = {}) {
2056
2649
  super({
2057
- type: import_v1019.ComponentType.TextDisplay,
2650
+ type: import_v1023.ComponentType.TextDisplay,
2058
2651
  ...data
2059
2652
  });
2060
2653
  }
@@ -2117,7 +2710,7 @@ var ContainerBuilder = class extends ComponentBuilder {
2117
2710
  * ```
2118
2711
  */
2119
2712
  constructor({ components, ...data } = {}) {
2120
- super({ type: import_v1020.ComponentType.Container, ...data });
2713
+ super({ type: import_v1024.ComponentType.Container, ...data });
2121
2714
  this.components = components?.map((component) => createComponentBuilder(component)) ?? [];
2122
2715
  }
2123
2716
  /**
@@ -2240,7 +2833,7 @@ var ContainerBuilder = class extends ComponentBuilder {
2240
2833
  };
2241
2834
 
2242
2835
  // src/components/v2/MediaGallery.ts
2243
- var import_v1021 = require("discord-api-types/v10");
2836
+ var import_v1025 = require("discord-api-types/v10");
2244
2837
 
2245
2838
  // src/components/v2/MediaGalleryItem.ts
2246
2839
  var MediaGalleryItemBuilder = class {
@@ -2370,7 +2963,7 @@ var MediaGalleryBuilder = class extends ComponentBuilder {
2370
2963
  * ```
2371
2964
  */
2372
2965
  constructor({ items, ...data } = {}) {
2373
- super({ type: import_v1021.ComponentType.MediaGallery, ...data });
2966
+ super({ type: import_v1025.ComponentType.MediaGallery, ...data });
2374
2967
  this.items = items?.map((item) => new MediaGalleryItemBuilder(item)) ?? [];
2375
2968
  }
2376
2969
  /**
@@ -2420,7 +3013,7 @@ var MediaGalleryBuilder = class extends ComponentBuilder {
2420
3013
  };
2421
3014
 
2422
3015
  // src/components/v2/Section.ts
2423
- var import_v1022 = require("discord-api-types/v10");
3016
+ var import_v1026 = require("discord-api-types/v10");
2424
3017
  var SectionBuilder = class extends ComponentBuilder {
2425
3018
  static {
2426
3019
  __name(this, "SectionBuilder");
@@ -2469,7 +3062,7 @@ var SectionBuilder = class extends ComponentBuilder {
2469
3062
  * ```
2470
3063
  */
2471
3064
  constructor({ components, accessory, ...data } = {}) {
2472
- super({ type: import_v1022.ComponentType.Section, ...data });
3065
+ super({ type: import_v1026.ComponentType.Section, ...data });
2473
3066
  this.components = components?.map((component) => createComponentBuilder(component)) ?? [];
2474
3067
  this.accessory = accessory ? createComponentBuilder(accessory) : void 0;
2475
3068
  }
@@ -2544,40 +3137,46 @@ function createComponentBuilder(data) {
2544
3137
  return data;
2545
3138
  }
2546
3139
  switch (data.type) {
2547
- case import_v1023.ComponentType.ActionRow:
3140
+ case import_v1027.ComponentType.ActionRow:
2548
3141
  return new ActionRowBuilder(data);
2549
- case import_v1023.ComponentType.Button:
3142
+ case import_v1027.ComponentType.Button:
2550
3143
  return new ButtonBuilder(data);
2551
- case import_v1023.ComponentType.StringSelect:
3144
+ case import_v1027.ComponentType.StringSelect:
2552
3145
  return new StringSelectMenuBuilder(data);
2553
- case import_v1023.ComponentType.TextInput:
3146
+ case import_v1027.ComponentType.TextInput:
2554
3147
  return new TextInputBuilder(data);
2555
- case import_v1023.ComponentType.UserSelect:
3148
+ case import_v1027.ComponentType.UserSelect:
2556
3149
  return new UserSelectMenuBuilder(data);
2557
- case import_v1023.ComponentType.RoleSelect:
3150
+ case import_v1027.ComponentType.RoleSelect:
2558
3151
  return new RoleSelectMenuBuilder(data);
2559
- case import_v1023.ComponentType.MentionableSelect:
3152
+ case import_v1027.ComponentType.MentionableSelect:
2560
3153
  return new MentionableSelectMenuBuilder(data);
2561
- case import_v1023.ComponentType.ChannelSelect:
3154
+ case import_v1027.ComponentType.ChannelSelect:
2562
3155
  return new ChannelSelectMenuBuilder(data);
2563
- case import_v1023.ComponentType.File:
3156
+ case import_v1027.ComponentType.File:
2564
3157
  return new FileBuilder(data);
2565
- case import_v1023.ComponentType.Container:
3158
+ case import_v1027.ComponentType.Container:
2566
3159
  return new ContainerBuilder(data);
2567
- case import_v1023.ComponentType.Section:
3160
+ case import_v1027.ComponentType.Section:
2568
3161
  return new SectionBuilder(data);
2569
- case import_v1023.ComponentType.Separator:
3162
+ case import_v1027.ComponentType.Separator:
2570
3163
  return new SeparatorBuilder(data);
2571
- case import_v1023.ComponentType.TextDisplay:
3164
+ case import_v1027.ComponentType.TextDisplay:
2572
3165
  return new TextDisplayBuilder(data);
2573
- case import_v1023.ComponentType.Thumbnail:
3166
+ case import_v1027.ComponentType.Thumbnail:
2574
3167
  return new ThumbnailBuilder(data);
2575
- case import_v1023.ComponentType.MediaGallery:
3168
+ case import_v1027.ComponentType.MediaGallery:
2576
3169
  return new MediaGalleryBuilder(data);
2577
- case import_v1023.ComponentType.Label:
3170
+ case import_v1027.ComponentType.Label:
2578
3171
  return new LabelBuilder(data);
2579
- case import_v1023.ComponentType.FileUpload:
3172
+ case import_v1027.ComponentType.FileUpload:
2580
3173
  return new FileUploadBuilder(data);
3174
+ case import_v1027.ComponentType.Checkbox:
3175
+ return new CheckboxBuilder(data);
3176
+ case import_v1027.ComponentType.CheckboxGroup:
3177
+ return new CheckboxGroupBuilder(data);
3178
+ case import_v1027.ComponentType.RadioGroup:
3179
+ return new RadioGroupBuilder(data);
2581
3180
  default:
2582
3181
  throw new Error(`Cannot properly serialize component type: ${data.type}`);
2583
3182
  }
@@ -2642,7 +3241,7 @@ var ActionRowBuilder = class extends ComponentBuilder {
2642
3241
  * ```
2643
3242
  */
2644
3243
  constructor({ components, ...data } = {}) {
2645
- super({ type: import_v1024.ComponentType.ActionRow, ...data });
3244
+ super({ type: import_v1028.ComponentType.ActionRow, ...data });
2646
3245
  this.components = components?.map((component) => createComponentBuilder(component)) ?? [];
2647
3246
  }
2648
3247
  /**
@@ -2675,18 +3274,18 @@ var ActionRowBuilder = class extends ComponentBuilder {
2675
3274
  };
2676
3275
 
2677
3276
  // src/interactions/modals/Modal.ts
2678
- var import_v1025 = require("discord-api-types/v10");
3277
+ var import_v1029 = require("discord-api-types/v10");
2679
3278
 
2680
3279
  // src/interactions/modals/Assertions.ts
2681
- var Assertions_exports8 = {};
2682
- __export(Assertions_exports8, {
3280
+ var Assertions_exports9 = {};
3281
+ __export(Assertions_exports9, {
2683
3282
  componentsValidator: () => componentsValidator,
2684
3283
  titleValidator: () => titleValidator,
2685
3284
  validateRequiredParameters: () => validateRequiredParameters2
2686
3285
  });
2687
- var import_shapeshift8 = require("@sapphire/shapeshift");
2688
- var titleValidator = import_shapeshift8.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled);
2689
- var componentsValidator = import_shapeshift8.s.union([import_shapeshift8.s.instance(ActionRowBuilder), import_shapeshift8.s.instance(LabelBuilder), import_shapeshift8.s.instance(TextDisplayBuilder)]).array().lengthGreaterThanOrEqual(1).setValidationEnabled(isValidationEnabled);
3286
+ var import_shapeshift9 = require("@sapphire/shapeshift");
3287
+ var titleValidator = import_shapeshift9.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled);
3288
+ var componentsValidator = import_shapeshift9.s.union([import_shapeshift9.s.instance(ActionRowBuilder), import_shapeshift9.s.instance(LabelBuilder), import_shapeshift9.s.instance(TextDisplayBuilder)]).array().lengthGreaterThanOrEqual(1).setValidationEnabled(isValidationEnabled);
2690
3289
  function validateRequiredParameters2(customId, title, components) {
2691
3290
  customIdValidator.parse(customId);
2692
3291
  titleValidator.parse(title);
@@ -2750,16 +3349,16 @@ var ModalBuilder = class {
2750
3349
  return new ActionRowBuilder().addComponents(component);
2751
3350
  }
2752
3351
  if ("type" in component) {
2753
- if (component.type === import_v1025.ComponentType.ActionRow) {
3352
+ if (component.type === import_v1029.ComponentType.ActionRow) {
2754
3353
  return new ActionRowBuilder(component);
2755
3354
  }
2756
- if (component.type === import_v1025.ComponentType.Label) {
3355
+ if (component.type === import_v1029.ComponentType.Label) {
2757
3356
  return new LabelBuilder(component);
2758
3357
  }
2759
- if (component.type === import_v1025.ComponentType.TextDisplay) {
3358
+ if (component.type === import_v1029.ComponentType.TextDisplay) {
2760
3359
  return new TextDisplayBuilder(component);
2761
3360
  }
2762
- if (component.type === import_v1025.ComponentType.TextInput) {
3361
+ if (component.type === import_v1029.ComponentType.TextInput) {
2763
3362
  return new ActionRowBuilder().addComponents(
2764
3363
  new TextInputBuilder(component)
2765
3364
  );
@@ -2871,8 +3470,8 @@ var ModalBuilder = class {
2871
3470
  };
2872
3471
 
2873
3472
  // src/interactions/slashCommands/Assertions.ts
2874
- var Assertions_exports9 = {};
2875
- __export(Assertions_exports9, {
3473
+ var Assertions_exports10 = {};
3474
+ __export(Assertions_exports10, {
2876
3475
  assertReturnOfBuilder: () => assertReturnOfBuilder2,
2877
3476
  contextsPredicate: () => contextsPredicate,
2878
3477
  integrationTypesPredicate: () => integrationTypesPredicate,
@@ -2890,20 +3489,20 @@ __export(Assertions_exports9, {
2890
3489
  validateRequired: () => validateRequired,
2891
3490
  validateRequiredParameters: () => validateRequiredParameters3
2892
3491
  });
2893
- var import_shapeshift9 = require("@sapphire/shapeshift");
2894
- var import_v1026 = require("discord-api-types/v10");
2895
- var namePredicate = import_shapeshift9.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u).setValidationEnabled(isValidationEnabled);
3492
+ var import_shapeshift10 = require("@sapphire/shapeshift");
3493
+ var import_v1030 = require("discord-api-types/v10");
3494
+ var namePredicate = import_shapeshift10.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u).setValidationEnabled(isValidationEnabled);
2896
3495
  function validateName(name) {
2897
3496
  namePredicate.parse(name);
2898
3497
  }
2899
3498
  __name(validateName, "validateName");
2900
- var descriptionPredicate3 = import_shapeshift9.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
2901
- var localePredicate = import_shapeshift9.s.nativeEnum(import_v1026.Locale);
3499
+ var descriptionPredicate3 = import_shapeshift10.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
3500
+ var localePredicate = import_shapeshift10.s.nativeEnum(import_v1030.Locale);
2902
3501
  function validateDescription(description) {
2903
3502
  descriptionPredicate3.parse(description);
2904
3503
  }
2905
3504
  __name(validateDescription, "validateDescription");
2906
- var maxArrayLengthPredicate = import_shapeshift9.s.unknown().array().lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
3505
+ var maxArrayLengthPredicate = import_shapeshift10.s.unknown().array().lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
2907
3506
  function validateLocale(locale) {
2908
3507
  return localePredicate.parse(locale);
2909
3508
  }
@@ -2918,7 +3517,7 @@ function validateRequiredParameters3(name, description, options) {
2918
3517
  validateMaxOptionsLength(options);
2919
3518
  }
2920
3519
  __name(validateRequiredParameters3, "validateRequiredParameters");
2921
- var booleanPredicate = import_shapeshift9.s.boolean();
3520
+ var booleanPredicate = import_shapeshift10.s.boolean();
2922
3521
  function validateDefaultPermission(value) {
2923
3522
  booleanPredicate.parse(value);
2924
3523
  }
@@ -2927,29 +3526,29 @@ function validateRequired(required) {
2927
3526
  booleanPredicate.parse(required);
2928
3527
  }
2929
3528
  __name(validateRequired, "validateRequired");
2930
- var choicesLengthPredicate = import_shapeshift9.s.number().lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
3529
+ var choicesLengthPredicate = import_shapeshift10.s.number().lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
2931
3530
  function validateChoicesLength(amountAdding, choices) {
2932
3531
  choicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding);
2933
3532
  }
2934
3533
  __name(validateChoicesLength, "validateChoicesLength");
2935
3534
  function assertReturnOfBuilder2(input, ExpectedInstanceOf) {
2936
- import_shapeshift9.s.instance(ExpectedInstanceOf).parse(input);
3535
+ import_shapeshift10.s.instance(ExpectedInstanceOf).parse(input);
2937
3536
  }
2938
3537
  __name(assertReturnOfBuilder2, "assertReturnOfBuilder");
2939
- var localizationMapPredicate = import_shapeshift9.s.object(Object.fromEntries(Object.values(import_v1026.Locale).map((locale) => [locale, import_shapeshift9.s.string().nullish()]))).strict().nullish().setValidationEnabled(isValidationEnabled);
3538
+ var localizationMapPredicate = import_shapeshift10.s.object(Object.fromEntries(Object.values(import_v1030.Locale).map((locale) => [locale, import_shapeshift10.s.string().nullish()]))).strict().nullish().setValidationEnabled(isValidationEnabled);
2940
3539
  function validateLocalizationMap(value) {
2941
3540
  localizationMapPredicate.parse(value);
2942
3541
  }
2943
3542
  __name(validateLocalizationMap, "validateLocalizationMap");
2944
- var dmPermissionPredicate = import_shapeshift9.s.boolean().nullish();
3543
+ var dmPermissionPredicate = import_shapeshift10.s.boolean().nullish();
2945
3544
  function validateDMPermission(value) {
2946
3545
  dmPermissionPredicate.parse(value);
2947
3546
  }
2948
3547
  __name(validateDMPermission, "validateDMPermission");
2949
- var memberPermissionPredicate = import_shapeshift9.s.union([
2950
- import_shapeshift9.s.bigint().transform((value) => value.toString()),
2951
- import_shapeshift9.s.number().safeInt().transform((value) => value.toString()),
2952
- import_shapeshift9.s.string().regex(/^\d+$/)
3548
+ var memberPermissionPredicate = import_shapeshift10.s.union([
3549
+ import_shapeshift10.s.bigint().transform((value) => value.toString()),
3550
+ import_shapeshift10.s.number().safeInt().transform((value) => value.toString()),
3551
+ import_shapeshift10.s.string().regex(/^\d+$/)
2953
3552
  ]).nullish();
2954
3553
  function validateDefaultMemberPermissions(permissions) {
2955
3554
  return memberPermissionPredicate.parse(permissions);
@@ -2959,11 +3558,11 @@ function validateNSFW(value) {
2959
3558
  booleanPredicate.parse(value);
2960
3559
  }
2961
3560
  __name(validateNSFW, "validateNSFW");
2962
- var contextsPredicate = import_shapeshift9.s.array(
2963
- import_shapeshift9.s.nativeEnum(import_v1026.InteractionContextType).setValidationEnabled(isValidationEnabled)
3561
+ var contextsPredicate = import_shapeshift10.s.array(
3562
+ import_shapeshift10.s.nativeEnum(import_v1030.InteractionContextType).setValidationEnabled(isValidationEnabled)
2964
3563
  );
2965
- var integrationTypesPredicate = import_shapeshift9.s.array(
2966
- import_shapeshift9.s.nativeEnum(import_v1026.ApplicationIntegrationType).setValidationEnabled(isValidationEnabled)
3564
+ var integrationTypesPredicate = import_shapeshift10.s.array(
3565
+ import_shapeshift10.s.nativeEnum(import_v1030.ApplicationIntegrationType).setValidationEnabled(isValidationEnabled)
2967
3566
  );
2968
3567
 
2969
3568
  // src/interactions/slashCommands/SlashCommandBuilder.ts
@@ -3083,7 +3682,7 @@ var SharedNameAndDescription = class {
3083
3682
  };
3084
3683
 
3085
3684
  // src/interactions/slashCommands/mixins/SharedSlashCommand.ts
3086
- var import_v1027 = require("discord-api-types/v10");
3685
+ var import_v1031 = require("discord-api-types/v10");
3087
3686
  var SharedSlashCommand = class {
3088
3687
  static {
3089
3688
  __name(this, "SharedSlashCommand");
@@ -3188,14 +3787,14 @@ var SharedSlashCommand = class {
3188
3787
  validateLocalizationMap(this.description_localizations);
3189
3788
  return {
3190
3789
  ...this,
3191
- type: import_v1027.ApplicationCommandType.ChatInput,
3790
+ type: import_v1031.ApplicationCommandType.ChatInput,
3192
3791
  options: this.options.map((option) => option.toJSON())
3193
3792
  };
3194
3793
  }
3195
3794
  };
3196
3795
 
3197
3796
  // src/interactions/slashCommands/options/attachment.ts
3198
- var import_v1028 = require("discord-api-types/v10");
3797
+ var import_v1032 = require("discord-api-types/v10");
3199
3798
 
3200
3799
  // src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts
3201
3800
  var ApplicationCommandOptionBase = class extends SharedNameAndDescription {
@@ -3237,7 +3836,7 @@ var SlashCommandAttachmentOption = class extends ApplicationCommandOptionBase {
3237
3836
  /**
3238
3837
  * The type of this option.
3239
3838
  */
3240
- type = import_v1028.ApplicationCommandOptionType.Attachment;
3839
+ type = import_v1032.ApplicationCommandOptionType.Attachment;
3241
3840
  /**
3242
3841
  * {@inheritDoc ApplicationCommandOptionBase.toJSON}
3243
3842
  */
@@ -3248,7 +3847,7 @@ var SlashCommandAttachmentOption = class extends ApplicationCommandOptionBase {
3248
3847
  };
3249
3848
 
3250
3849
  // src/interactions/slashCommands/options/boolean.ts
3251
- var import_v1029 = require("discord-api-types/v10");
3850
+ var import_v1033 = require("discord-api-types/v10");
3252
3851
  var SlashCommandBooleanOption = class extends ApplicationCommandOptionBase {
3253
3852
  static {
3254
3853
  __name(this, "SlashCommandBooleanOption");
@@ -3256,7 +3855,7 @@ var SlashCommandBooleanOption = class extends ApplicationCommandOptionBase {
3256
3855
  /**
3257
3856
  * The type of this option.
3258
3857
  */
3259
- type = import_v1029.ApplicationCommandOptionType.Boolean;
3858
+ type = import_v1033.ApplicationCommandOptionType.Boolean;
3260
3859
  /**
3261
3860
  * {@inheritDoc ApplicationCommandOptionBase.toJSON}
3262
3861
  */
@@ -3267,25 +3866,25 @@ var SlashCommandBooleanOption = class extends ApplicationCommandOptionBase {
3267
3866
  };
3268
3867
 
3269
3868
  // src/interactions/slashCommands/options/channel.ts
3270
- var import_v1031 = require("discord-api-types/v10");
3869
+ var import_v1035 = require("discord-api-types/v10");
3271
3870
  var import_ts_mixer = require("ts-mixer");
3272
3871
 
3273
3872
  // src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts
3274
- var import_shapeshift10 = require("@sapphire/shapeshift");
3275
- var import_v1030 = require("discord-api-types/v10");
3873
+ var import_shapeshift11 = require("@sapphire/shapeshift");
3874
+ var import_v1034 = require("discord-api-types/v10");
3276
3875
  var allowedChannelTypes = [
3277
- import_v1030.ChannelType.GuildText,
3278
- import_v1030.ChannelType.GuildVoice,
3279
- import_v1030.ChannelType.GuildCategory,
3280
- import_v1030.ChannelType.GuildAnnouncement,
3281
- import_v1030.ChannelType.AnnouncementThread,
3282
- import_v1030.ChannelType.PublicThread,
3283
- import_v1030.ChannelType.PrivateThread,
3284
- import_v1030.ChannelType.GuildStageVoice,
3285
- import_v1030.ChannelType.GuildForum,
3286
- import_v1030.ChannelType.GuildMedia
3876
+ import_v1034.ChannelType.GuildText,
3877
+ import_v1034.ChannelType.GuildVoice,
3878
+ import_v1034.ChannelType.GuildCategory,
3879
+ import_v1034.ChannelType.GuildAnnouncement,
3880
+ import_v1034.ChannelType.AnnouncementThread,
3881
+ import_v1034.ChannelType.PublicThread,
3882
+ import_v1034.ChannelType.PrivateThread,
3883
+ import_v1034.ChannelType.GuildStageVoice,
3884
+ import_v1034.ChannelType.GuildForum,
3885
+ import_v1034.ChannelType.GuildMedia
3287
3886
  ];
3288
- var channelTypesPredicate = import_shapeshift10.s.array(import_shapeshift10.s.union(allowedChannelTypes.map((type) => import_shapeshift10.s.literal(type))));
3887
+ var channelTypesPredicate = import_shapeshift11.s.array(import_shapeshift11.s.union(allowedChannelTypes.map((type) => import_shapeshift11.s.literal(type))));
3289
3888
  var ApplicationCommandOptionChannelTypesMixin = class {
3290
3889
  static {
3291
3890
  __name(this, "ApplicationCommandOptionChannelTypesMixin");
@@ -3313,7 +3912,7 @@ var SlashCommandChannelOption = class extends ApplicationCommandOptionBase {
3313
3912
  /**
3314
3913
  * The type of this option.
3315
3914
  */
3316
- type = import_v1031.ApplicationCommandOptionType.Channel;
3915
+ type = import_v1035.ApplicationCommandOptionType.Channel;
3317
3916
  /**
3318
3917
  * {@inheritDoc ApplicationCommandOptionBase.toJSON}
3319
3918
  */
@@ -3328,8 +3927,8 @@ SlashCommandChannelOption = __decorateClass([
3328
3927
  ], SlashCommandChannelOption);
3329
3928
 
3330
3929
  // src/interactions/slashCommands/options/integer.ts
3331
- var import_shapeshift13 = require("@sapphire/shapeshift");
3332
- var import_v1033 = require("discord-api-types/v10");
3930
+ var import_shapeshift14 = require("@sapphire/shapeshift");
3931
+ var import_v1037 = require("discord-api-types/v10");
3333
3932
  var import_ts_mixer2 = require("ts-mixer");
3334
3933
 
3335
3934
  // src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts
@@ -3348,8 +3947,8 @@ var ApplicationCommandNumericOptionMinMaxValueMixin = class {
3348
3947
  };
3349
3948
 
3350
3949
  // src/interactions/slashCommands/mixins/ApplicationCommandOptionWithAutocompleteMixin.ts
3351
- var import_shapeshift11 = require("@sapphire/shapeshift");
3352
- var booleanPredicate2 = import_shapeshift11.s.boolean();
3950
+ var import_shapeshift12 = require("@sapphire/shapeshift");
3951
+ var booleanPredicate2 = import_shapeshift12.s.boolean();
3353
3952
  var ApplicationCommandOptionWithAutocompleteMixin = class {
3354
3953
  static {
3355
3954
  __name(this, "ApplicationCommandOptionWithAutocompleteMixin");
@@ -3380,14 +3979,14 @@ var ApplicationCommandOptionWithAutocompleteMixin = class {
3380
3979
  };
3381
3980
 
3382
3981
  // src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesMixin.ts
3383
- var import_shapeshift12 = require("@sapphire/shapeshift");
3384
- var import_v1032 = require("discord-api-types/v10");
3385
- var stringPredicate = import_shapeshift12.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100);
3386
- var numberPredicate = import_shapeshift12.s.number().greaterThan(Number.NEGATIVE_INFINITY).lessThan(Number.POSITIVE_INFINITY);
3387
- var choicesPredicate = import_shapeshift12.s.object({
3982
+ var import_shapeshift13 = require("@sapphire/shapeshift");
3983
+ var import_v1036 = require("discord-api-types/v10");
3984
+ var stringPredicate = import_shapeshift13.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100);
3985
+ var numberPredicate = import_shapeshift13.s.number().greaterThan(Number.NEGATIVE_INFINITY).lessThan(Number.POSITIVE_INFINITY);
3986
+ var choicesPredicate = import_shapeshift13.s.object({
3388
3987
  name: stringPredicate,
3389
3988
  name_localizations: localizationMapPredicate,
3390
- value: import_shapeshift12.s.union([stringPredicate, numberPredicate])
3989
+ value: import_shapeshift13.s.union([stringPredicate, numberPredicate])
3391
3990
  }).array();
3392
3991
  var ApplicationCommandOptionWithChoicesMixin = class {
3393
3992
  static {
@@ -3419,7 +4018,7 @@ var ApplicationCommandOptionWithChoicesMixin = class {
3419
4018
  }
3420
4019
  validateChoicesLength(normalizedChoices.length, this.choices);
3421
4020
  for (const { name, name_localizations, value } of normalizedChoices) {
3422
- if (this.type === import_v1032.ApplicationCommandOptionType.String) {
4021
+ if (this.type === import_v1036.ApplicationCommandOptionType.String) {
3423
4022
  stringPredicate.parse(value);
3424
4023
  } else {
3425
4024
  numberPredicate.parse(value);
@@ -3446,12 +4045,12 @@ var ApplicationCommandOptionWithChoicesMixin = class {
3446
4045
  };
3447
4046
 
3448
4047
  // src/interactions/slashCommands/options/integer.ts
3449
- var numberValidator = import_shapeshift13.s.number().int();
4048
+ var numberValidator = import_shapeshift14.s.number().int();
3450
4049
  var SlashCommandIntegerOption = class extends ApplicationCommandOptionBase {
3451
4050
  /**
3452
4051
  * The type of this option.
3453
4052
  */
3454
- type = import_v1033.ApplicationCommandOptionType.Integer;
4053
+ type = import_v1037.ApplicationCommandOptionType.Integer;
3455
4054
  /**
3456
4055
  * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}
3457
4056
  */
@@ -3489,7 +4088,7 @@ SlashCommandIntegerOption = __decorateClass([
3489
4088
  ], SlashCommandIntegerOption);
3490
4089
 
3491
4090
  // src/interactions/slashCommands/options/mentionable.ts
3492
- var import_v1034 = require("discord-api-types/v10");
4091
+ var import_v1038 = require("discord-api-types/v10");
3493
4092
  var SlashCommandMentionableOption = class extends ApplicationCommandOptionBase {
3494
4093
  static {
3495
4094
  __name(this, "SlashCommandMentionableOption");
@@ -3497,7 +4096,7 @@ var SlashCommandMentionableOption = class extends ApplicationCommandOptionBase {
3497
4096
  /**
3498
4097
  * The type of this option.
3499
4098
  */
3500
- type = import_v1034.ApplicationCommandOptionType.Mentionable;
4099
+ type = import_v1038.ApplicationCommandOptionType.Mentionable;
3501
4100
  /**
3502
4101
  * {@inheritDoc ApplicationCommandOptionBase.toJSON}
3503
4102
  */
@@ -3508,15 +4107,15 @@ var SlashCommandMentionableOption = class extends ApplicationCommandOptionBase {
3508
4107
  };
3509
4108
 
3510
4109
  // src/interactions/slashCommands/options/number.ts
3511
- var import_shapeshift14 = require("@sapphire/shapeshift");
3512
- var import_v1035 = require("discord-api-types/v10");
4110
+ var import_shapeshift15 = require("@sapphire/shapeshift");
4111
+ var import_v1039 = require("discord-api-types/v10");
3513
4112
  var import_ts_mixer3 = require("ts-mixer");
3514
- var numberValidator2 = import_shapeshift14.s.number();
4113
+ var numberValidator2 = import_shapeshift15.s.number();
3515
4114
  var SlashCommandNumberOption = class extends ApplicationCommandOptionBase {
3516
4115
  /**
3517
4116
  * The type of this option.
3518
4117
  */
3519
- type = import_v1035.ApplicationCommandOptionType.Number;
4118
+ type = import_v1039.ApplicationCommandOptionType.Number;
3520
4119
  /**
3521
4120
  * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}
3522
4121
  */
@@ -3554,7 +4153,7 @@ SlashCommandNumberOption = __decorateClass([
3554
4153
  ], SlashCommandNumberOption);
3555
4154
 
3556
4155
  // src/interactions/slashCommands/options/role.ts
3557
- var import_v1036 = require("discord-api-types/v10");
4156
+ var import_v1040 = require("discord-api-types/v10");
3558
4157
  var SlashCommandRoleOption = class extends ApplicationCommandOptionBase {
3559
4158
  static {
3560
4159
  __name(this, "SlashCommandRoleOption");
@@ -3562,7 +4161,7 @@ var SlashCommandRoleOption = class extends ApplicationCommandOptionBase {
3562
4161
  /**
3563
4162
  * The type of this option.
3564
4163
  */
3565
- type = import_v1036.ApplicationCommandOptionType.Role;
4164
+ type = import_v1040.ApplicationCommandOptionType.Role;
3566
4165
  /**
3567
4166
  * {@inheritDoc ApplicationCommandOptionBase.toJSON}
3568
4167
  */
@@ -3573,16 +4172,16 @@ var SlashCommandRoleOption = class extends ApplicationCommandOptionBase {
3573
4172
  };
3574
4173
 
3575
4174
  // src/interactions/slashCommands/options/string.ts
3576
- var import_shapeshift15 = require("@sapphire/shapeshift");
3577
- var import_v1037 = require("discord-api-types/v10");
4175
+ var import_shapeshift16 = require("@sapphire/shapeshift");
4176
+ var import_v1041 = require("discord-api-types/v10");
3578
4177
  var import_ts_mixer4 = require("ts-mixer");
3579
- var minLengthValidator2 = import_shapeshift15.s.number().greaterThanOrEqual(0).lessThanOrEqual(6e3);
3580
- var maxLengthValidator2 = import_shapeshift15.s.number().greaterThanOrEqual(1).lessThanOrEqual(6e3);
4178
+ var minLengthValidator2 = import_shapeshift16.s.number().greaterThanOrEqual(0).lessThanOrEqual(6e3);
4179
+ var maxLengthValidator2 = import_shapeshift16.s.number().greaterThanOrEqual(1).lessThanOrEqual(6e3);
3581
4180
  var SlashCommandStringOption = class extends ApplicationCommandOptionBase {
3582
4181
  /**
3583
4182
  * The type of this option.
3584
4183
  */
3585
- type = import_v1037.ApplicationCommandOptionType.String;
4184
+ type = import_v1041.ApplicationCommandOptionType.String;
3586
4185
  /**
3587
4186
  * The maximum length of this option.
3588
4187
  */
@@ -3628,7 +4227,7 @@ SlashCommandStringOption = __decorateClass([
3628
4227
  ], SlashCommandStringOption);
3629
4228
 
3630
4229
  // src/interactions/slashCommands/options/user.ts
3631
- var import_v1038 = require("discord-api-types/v10");
4230
+ var import_v1042 = require("discord-api-types/v10");
3632
4231
  var SlashCommandUserOption = class extends ApplicationCommandOptionBase {
3633
4232
  static {
3634
4233
  __name(this, "SlashCommandUserOption");
@@ -3636,7 +4235,7 @@ var SlashCommandUserOption = class extends ApplicationCommandOptionBase {
3636
4235
  /**
3637
4236
  * The type of this option.
3638
4237
  */
3639
- type = import_v1038.ApplicationCommandOptionType.User;
4238
+ type = import_v1042.ApplicationCommandOptionType.User;
3640
4239
  /**
3641
4240
  * {@inheritDoc ApplicationCommandOptionBase.toJSON}
3642
4241
  */
@@ -3742,7 +4341,7 @@ var SharedSlashCommandOptions = class {
3742
4341
  };
3743
4342
 
3744
4343
  // src/interactions/slashCommands/SlashCommandSubcommands.ts
3745
- var import_v1039 = require("discord-api-types/v10");
4344
+ var import_v1043 = require("discord-api-types/v10");
3746
4345
  var import_ts_mixer5 = require("ts-mixer");
3747
4346
  var SlashCommandSubcommandGroupBuilder = class {
3748
4347
  /**
@@ -3780,7 +4379,7 @@ var SlashCommandSubcommandGroupBuilder = class {
3780
4379
  toJSON() {
3781
4380
  validateRequiredParameters3(this.name, this.description, this.options);
3782
4381
  return {
3783
- type: import_v1039.ApplicationCommandOptionType.SubcommandGroup,
4382
+ type: import_v1043.ApplicationCommandOptionType.SubcommandGroup,
3784
4383
  name: this.name,
3785
4384
  name_localizations: this.name_localizations,
3786
4385
  description: this.description,
@@ -3816,7 +4415,7 @@ var SlashCommandSubcommandBuilder = class {
3816
4415
  toJSON() {
3817
4416
  validateRequiredParameters3(this.name, this.description, this.options);
3818
4417
  return {
3819
- type: import_v1039.ApplicationCommandOptionType.Subcommand,
4418
+ type: import_v1043.ApplicationCommandOptionType.Subcommand,
3820
4419
  name: this.name,
3821
4420
  name_localizations: this.name_localizations,
3822
4421
  description: this.description,
@@ -3924,8 +4523,8 @@ SlashCommandBuilder = __decorateClass([
3924
4523
  ], SlashCommandBuilder);
3925
4524
 
3926
4525
  // src/interactions/contextMenuCommands/Assertions.ts
3927
- var Assertions_exports10 = {};
3928
- __export(Assertions_exports10, {
4526
+ var Assertions_exports11 = {};
4527
+ __export(Assertions_exports11, {
3929
4528
  contextsPredicate: () => contextsPredicate2,
3930
4529
  integrationTypesPredicate: () => integrationTypesPredicate2,
3931
4530
  validateDMPermission: () => validateDMPermission2,
@@ -3935,11 +4534,11 @@ __export(Assertions_exports10, {
3935
4534
  validateRequiredParameters: () => validateRequiredParameters4,
3936
4535
  validateType: () => validateType
3937
4536
  });
3938
- var import_shapeshift16 = require("@sapphire/shapeshift");
3939
- var import_v1040 = require("discord-api-types/v10");
3940
- var namePredicate2 = import_shapeshift16.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/\S/).setValidationEnabled(isValidationEnabled);
3941
- var typePredicate = import_shapeshift16.s.union([import_shapeshift16.s.literal(import_v1040.ApplicationCommandType.User), import_shapeshift16.s.literal(import_v1040.ApplicationCommandType.Message)]).setValidationEnabled(isValidationEnabled);
3942
- var booleanPredicate3 = import_shapeshift16.s.boolean();
4537
+ var import_shapeshift17 = require("@sapphire/shapeshift");
4538
+ var import_v1044 = require("discord-api-types/v10");
4539
+ var namePredicate2 = import_shapeshift17.s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/\S/).setValidationEnabled(isValidationEnabled);
4540
+ var typePredicate = import_shapeshift17.s.union([import_shapeshift17.s.literal(import_v1044.ApplicationCommandType.User), import_shapeshift17.s.literal(import_v1044.ApplicationCommandType.Message)]).setValidationEnabled(isValidationEnabled);
4541
+ var booleanPredicate3 = import_shapeshift17.s.boolean();
3943
4542
  function validateDefaultPermission2(value) {
3944
4543
  booleanPredicate3.parse(value);
3945
4544
  }
@@ -3957,25 +4556,25 @@ function validateRequiredParameters4(name, type) {
3957
4556
  validateType(type);
3958
4557
  }
3959
4558
  __name(validateRequiredParameters4, "validateRequiredParameters");
3960
- var dmPermissionPredicate2 = import_shapeshift16.s.boolean().nullish();
4559
+ var dmPermissionPredicate2 = import_shapeshift17.s.boolean().nullish();
3961
4560
  function validateDMPermission2(value) {
3962
4561
  dmPermissionPredicate2.parse(value);
3963
4562
  }
3964
4563
  __name(validateDMPermission2, "validateDMPermission");
3965
- var memberPermissionPredicate2 = import_shapeshift16.s.union([
3966
- import_shapeshift16.s.bigint().transform((value) => value.toString()),
3967
- import_shapeshift16.s.number().safeInt().transform((value) => value.toString()),
3968
- import_shapeshift16.s.string().regex(/^\d+$/)
4564
+ var memberPermissionPredicate2 = import_shapeshift17.s.union([
4565
+ import_shapeshift17.s.bigint().transform((value) => value.toString()),
4566
+ import_shapeshift17.s.number().safeInt().transform((value) => value.toString()),
4567
+ import_shapeshift17.s.string().regex(/^\d+$/)
3969
4568
  ]).nullish();
3970
4569
  function validateDefaultMemberPermissions2(permissions) {
3971
4570
  return memberPermissionPredicate2.parse(permissions);
3972
4571
  }
3973
4572
  __name(validateDefaultMemberPermissions2, "validateDefaultMemberPermissions");
3974
- var contextsPredicate2 = import_shapeshift16.s.array(
3975
- import_shapeshift16.s.nativeEnum(import_v1040.InteractionContextType).setValidationEnabled(isValidationEnabled)
4573
+ var contextsPredicate2 = import_shapeshift17.s.array(
4574
+ import_shapeshift17.s.nativeEnum(import_v1044.InteractionContextType).setValidationEnabled(isValidationEnabled)
3976
4575
  );
3977
- var integrationTypesPredicate2 = import_shapeshift16.s.array(
3978
- import_shapeshift16.s.nativeEnum(import_v1040.ApplicationIntegrationType).setValidationEnabled(isValidationEnabled)
4576
+ var integrationTypesPredicate2 = import_shapeshift17.s.array(
4577
+ import_shapeshift17.s.nativeEnum(import_v1044.ApplicationIntegrationType).setValidationEnabled(isValidationEnabled)
3979
4578
  );
3980
4579
 
3981
4580
  // src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts
@@ -4156,7 +4755,7 @@ function embedLength(data) {
4156
4755
  __name(embedLength, "embedLength");
4157
4756
 
4158
4757
  // src/index.ts
4159
- var version = "1.13.1";
4758
+ var version = "1.14.0";
4160
4759
  // Annotate the CommonJS export names for ESM import in node:
4161
4760
  0 && (module.exports = {
4162
4761
  ActionRowBuilder,
@@ -4168,6 +4767,10 @@ var version = "1.13.1";
4168
4767
  BaseSelectMenuBuilder,
4169
4768
  ButtonBuilder,
4170
4769
  ChannelSelectMenuBuilder,
4770
+ CheckboxAssertions,
4771
+ CheckboxBuilder,
4772
+ CheckboxGroupBuilder,
4773
+ CheckboxGroupOptionBuilder,
4171
4774
  ComponentAssertions,
4172
4775
  ComponentBuilder,
4173
4776
  ComponentsV2Assertions,
@@ -4186,6 +4789,8 @@ var version = "1.13.1";
4186
4789
  MentionableSelectMenuBuilder,
4187
4790
  ModalAssertions,
4188
4791
  ModalBuilder,
4792
+ RadioGroupBuilder,
4793
+ RadioGroupOptionBuilder,
4189
4794
  RoleSelectMenuBuilder,
4190
4795
  SectionBuilder,
4191
4796
  SelectMenuAssertions,