@@ -396,14 +396,20 @@ def to_dict(self) -> ButtonPayload:
396
396
if self .emoji :
397
397
base ['emoji' ] = self .emoji .to_dict ()
398
398
return base
399
-
399
+
400
400
@classmethod
401
401
def from_dict (cls , data : ButtonPayload ) -> Button :
402
402
emoji = data .pop ('emoji' , None )
403
-
404
403
if emoji and isinstance (emoji , dict ):
405
404
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
+ )
407
413
408
414
409
415
class SelectOption :
@@ -485,9 +491,9 @@ def from_dict(cls, data: SelectOptionPayload) -> SelectOption:
485
491
return cls (
486
492
label = data ['label' ],
487
493
value = data ['value' ],
488
- description = data .pop ('description' ),
494
+ description = data .get ('description' ),
489
495
emoji = emoji ,
490
- default = data .pop ('default' , False )
496
+ default = data .get ('default' , False )
491
497
)
492
498
493
499
@@ -642,10 +648,10 @@ def to_dict(self) -> SelectMenuPayload:
642
648
def from_dict (cls : Type [T ], data : SelectMenuPayload ) -> T :
643
649
return cls (
644
650
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 )
649
655
)
650
656
651
657
@@ -809,11 +815,12 @@ def to_dict(self) -> Dict[str, Any]:
809
815
@classmethod
810
816
def from_dict (cls , data :SelectMenuPayload ) -> SelectMenu :
811
817
return cls (
818
+ custom_id = data ['custom_id' ],
812
819
options = [SelectOption .from_dict (o ) for o in data .pop ('options' )],
813
820
min_values = data .pop ('min_values' , 1 ),
814
821
max_values = data .pop ('max_values' , 1 ),
815
822
disabled = data .pop ('disabled' , False ),
816
- ** data
823
+ placeholder = data . get (' placeholder ),
817
824
)
818
825
819
826
0 commit comments