@@ -368,7 +368,8 @@ class BaseSelectMenu(InteractiveComponent):
368368 min_values Optional[int]: The minimum number of items that must be chosen. (default 1, min 0, max 25)
369369 max_values Optional[int]: The maximum number of items that can be chosen. (default 1, max 25)
370370 disabled bool: Disable the select and make it not intractable, default false.
371- type Union[ComponentType, int]: The action role type number defined by discord. This cannot be modified.
371+ type Union[ComponentType, int]: The type of component, as defined by discord. This cannot be modified.
372+ required bool: Whether this select menu is required to be filled out or not in modals.
372373
373374 """
374375
@@ -380,12 +381,14 @@ def __init__(
380381 max_values : int = 1 ,
381382 custom_id : str | None = None ,
382383 disabled : bool = False ,
384+ required : bool = True ,
383385 ) -> None :
384386 self .custom_id : str = custom_id or str (uuid .uuid4 ())
385387 self .placeholder : str | None = placeholder
386388 self .min_values : int = min_values
387389 self .max_values : int = max_values
388390 self .disabled : bool = disabled
391+ self .required : bool = required
389392
390393 self .type : ComponentType = MISSING
391394
@@ -397,10 +400,11 @@ def from_dict(cls, data: discord_typings.SelectMenuComponentData) -> "BaseSelect
397400 max_values = data ["max_values" ],
398401 custom_id = data ["custom_id" ],
399402 disabled = data .get ("disabled" , False ),
403+ required = data .get ("required" , True ),
400404 )
401405
402406 def __repr__ (self ) -> str :
403- return f"<{ self .__class__ .__name__ } type={ self .type } custom_id={ self .custom_id } placeholder={ self .placeholder } min_values={ self .min_values } max_values={ self .max_values } disabled={ self .disabled } >"
407+ return f"<{ self .__class__ .__name__ } type={ self .type } custom_id={ self .custom_id } placeholder={ self .placeholder } min_values={ self .min_values } max_values={ self .max_values } disabled={ self .disabled } required= { self . required } >"
404408
405409 def to_dict (self ) -> discord_typings .SelectMenuComponentData :
406410 return {
@@ -410,6 +414,7 @@ def to_dict(self) -> discord_typings.SelectMenuComponentData:
410414 "min_values" : self .min_values ,
411415 "max_values" : self .max_values ,
412416 "disabled" : self .disabled ,
417+ "required" : self .required ,
413418 }
414419
415420
@@ -589,6 +594,7 @@ class StringSelectMenu(BaseSelectMenu):
589594 max_values Optional[int]: The maximum number of items that can be chosen. (default 1, max 25)
590595 disabled bool: Disable the select and make it not intractable, default false.
591596 type Union[ComponentType, int]: The type of component, as defined by discord. This cannot be modified.
597+ required bool: Whether this select menu is required to be filled out or not in modals.
592598
593599 """
594600
@@ -603,13 +609,15 @@ def __init__(
603609 max_values : int = 1 ,
604610 custom_id : str | None = None ,
605611 disabled : bool = False ,
612+ required : bool = True ,
606613 ) -> None :
607614 super ().__init__ (
608615 placeholder = placeholder ,
609616 min_values = min_values ,
610617 max_values = max_values ,
611618 custom_id = custom_id ,
612619 disabled = disabled ,
620+ required = required ,
613621 )
614622 if isinstance (options , (list , tuple )) and len (options ) == 1 and isinstance (options [0 ], (list , tuple )):
615623 # user passed in a list of options, expand it out
@@ -627,10 +635,11 @@ def from_dict(cls, data: discord_typings.SelectMenuComponentData) -> "StringSele
627635 max_values = data ["max_values" ],
628636 custom_id = data ["custom_id" ],
629637 disabled = data .get ("disabled" , False ),
638+ required = data .get ("required" , True ),
630639 )
631640
632641 def __repr__ (self ) -> str :
633- return f"<{ self .__class__ .__name__ } type={ self .type } custom_id={ self .custom_id } placeholder={ self .placeholder } min_values={ self .min_values } max_values={ self .max_values } disabled={ self .disabled } options={ self .options } >"
642+ return f"<{ self .__class__ .__name__ } type={ self .type } custom_id={ self .custom_id } placeholder={ self .placeholder } min_values={ self .min_values } max_values={ self .max_values } disabled={ self .disabled } required= { self . required } options={ self .options } >"
634643
635644 def to_dict (self ) -> discord_typings .SelectMenuComponentData :
636645 return {
@@ -651,6 +660,7 @@ class UserSelectMenu(DefaultableSelectMenu):
651660 default_values list[BaseUser, Member, SelectDefaultValues]: A list of default values to pre-select in the select.
652661 disabled bool: Disable the select and make it not intractable, default false.
653662 type Union[ComponentType, int]: The type of component, as defined by discord. This cannot be modified.
663+ required bool: Whether this select menu is required to be filled out or not in modals.
654664
655665 """
656666
@@ -672,13 +682,15 @@ def __init__(
672682 | None
673683 ) = None ,
674684 disabled : bool = False ,
685+ required : bool = True ,
675686 ) -> None :
676687 super ().__init__ (
677688 placeholder = placeholder ,
678689 min_values = min_values ,
679690 max_values = max_values ,
680691 custom_id = custom_id ,
681692 disabled = disabled ,
693+ required = required ,
682694 defaults = default_values ,
683695 )
684696
@@ -697,6 +709,7 @@ class RoleSelectMenu(DefaultableSelectMenu):
697709 default_values list[Role, SelectDefaultValues]: A list of default values to pre-select in the select.
698710 disabled bool: Disable the select and make it not intractable, default false.
699711 type Union[ComponentType, int]: The type of component, as defined by discord. This cannot be modified.
712+ required bool: Whether this select menu is required to be filled out or not in modals.
700713
701714 """
702715
@@ -708,6 +721,7 @@ def __init__(
708721 max_values : int = 1 ,
709722 custom_id : str | None = None ,
710723 disabled : bool = False ,
724+ required : bool = True ,
711725 default_values : (
712726 list [
713727 Union [
@@ -724,6 +738,7 @@ def __init__(
724738 max_values = max_values ,
725739 custom_id = custom_id ,
726740 disabled = disabled ,
741+ required = required ,
727742 defaults = default_values ,
728743 )
729744
@@ -742,6 +757,7 @@ class MentionableSelectMenu(DefaultableSelectMenu):
742757 default_values list[BaseUser, Role, BaseChannel, Member, SelectDefaultValues]: A list of default values to pre-select in the select.
743758 disabled bool: Disable the select and make it not intractable, default false.
744759 type Union[ComponentType, int]: The type of component, as defined by discord. This cannot be modified.
760+ required bool: Whether this select menu is required to be filled out or not in modals.
745761
746762 """
747763
@@ -753,6 +769,7 @@ def __init__(
753769 max_values : int = 1 ,
754770 custom_id : str | None = None ,
755771 disabled : bool = False ,
772+ required : bool = True ,
756773 default_values : (
757774 list [
758775 Union [
@@ -772,6 +789,7 @@ def __init__(
772789 max_values = max_values ,
773790 custom_id = custom_id ,
774791 disabled = disabled ,
792+ required = required ,
775793 defaults = default_values ,
776794 )
777795
@@ -790,6 +808,7 @@ class ChannelSelectMenu(DefaultableSelectMenu):
790808 default_values list[BaseChannel, SelectDefaultValues]: A list of default values to pre-select in the select.
791809 disabled bool: Disable the select and make it not intractable, default false.
792810 type Union[ComponentType, int]: The type of component, as defined by discord. This cannot be modified.
811+ required bool: Whether this select menu is required to be filled out or not in modals.
793812
794813 """
795814
@@ -802,6 +821,7 @@ def __init__(
802821 max_values : int = 1 ,
803822 custom_id : str | None = None ,
804823 disabled : bool = False ,
824+ required : bool = True ,
805825 default_values : (
806826 list [
807827 Union [
@@ -818,6 +838,7 @@ def __init__(
818838 max_values = max_values ,
819839 custom_id = custom_id ,
820840 disabled = disabled ,
841+ required = required ,
821842 defaults = default_values ,
822843 )
823844
@@ -834,11 +855,12 @@ def from_dict(cls, data: discord_typings.SelectMenuComponentData) -> "ChannelSel
834855 max_values = data ["max_values" ],
835856 custom_id = data ["custom_id" ],
836857 disabled = data .get ("disabled" , False ),
858+ required = data .get ("required" , True ),
837859 channel_types = data .get ("channel_types" , []),
838860 )
839861
840862 def __repr__ (self ) -> str :
841- return f"<{ self .__class__ .__name__ } type={ self .type } custom_id={ self .custom_id } placeholder={ self .placeholder } min_values={ self .min_values } max_values={ self .max_values } disabled={ self .disabled } channel_types={ self .channel_types } >"
863+ return f"<{ self .__class__ .__name__ } type={ self .type } custom_id={ self .custom_id } placeholder={ self .placeholder } min_values={ self .min_values } max_values={ self .max_values } disabled={ self .disabled } required= { self . required } channel_types={ self .channel_types } >"
842864
843865 def to_dict (self ) -> discord_typings .SelectMenuComponentData :
844866 return {
0 commit comments