@@ -396,14 +396,20 @@ def to_dict(self) -> ButtonPayload:
396396 if self .emoji :
397397 base ['emoji' ] = self .emoji .to_dict ()
398398 return base
399-
399+
400400 @classmethod
401401 def from_dict (cls , data : ButtonPayload ) -> Button :
402402 emoji = data .pop ('emoji' , None )
403-
404403 if emoji and isinstance (emoji , dict ):
405404 emoji = PartialEmoji .from_dict (emoji )
406- return cls (emoji = emoji , ** data )
405+ return cls (
406+ emoji = emoji ,
407+ label = data .get ('label' ),
408+ custom_id = data .get ('custom_id' ),
409+ style = data ['style' ],
410+ url = data .get ('url' ),
411+ disabled = data .get ('disabled' , False )
412+ )
407413
408414
409415class SelectOption :
@@ -485,9 +491,9 @@ def from_dict(cls, data: SelectOptionPayload) -> SelectOption:
485491 return cls (
486492 label = data ['label' ],
487493 value = data ['value' ],
488- description = data .pop ('description' ),
494+ description = data .get ('description' ),
489495 emoji = emoji ,
490- default = data .pop ('default' , False )
496+ default = data .get ('default' , False )
491497 )
492498
493499
@@ -642,10 +648,10 @@ def to_dict(self) -> SelectMenuPayload:
642648 def from_dict (cls : Type [T ], data : SelectMenuPayload ) -> T :
643649 return cls (
644650 custom_id = data ['custom_id' ],
645- placeholder = data .pop ('placeholder' , None ),
646- min_values = data .pop ('min_values' , 1 ),
647- max_values = data .pop ('max_values' , 1 ),
648- disabled = data .pop ('disabled' , False )
651+ placeholder = data .get ('placeholder' ),
652+ min_values = data .get ('min_values' , 1 ),
653+ max_values = data .get ('max_values' , 1 ),
654+ disabled = data .get ('disabled' , False )
649655 )
650656
651657
@@ -809,11 +815,12 @@ def to_dict(self) -> Dict[str, Any]:
809815 @classmethod
810816 def from_dict (cls , data :SelectMenuPayload ) -> SelectMenu :
811817 return cls (
818+ custom_id = data ['custom_id' ],
812819 options = [SelectOption .from_dict (o ) for o in data .pop ('options' )],
813820 min_values = data .pop ('min_values' , 1 ),
814821 max_values = data .pop ('max_values' , 1 ),
815822 disabled = data .pop ('disabled' , False ),
816- ** data
823+ placeholder = data . get (' placeholder ),
817824 )
818825
819826
0 commit comments