Skip to content

Commit 8f823dc

Browse files
committed
fix: interaction data JSON reflects proper enum values.
1 parent b5d33c8 commit 8f823dc

File tree

4 files changed

+30
-27
lines changed

4 files changed

+30
-27
lines changed

interactions/api/models/message.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -552,27 +552,37 @@ def __init__(self, **kwargs):
552552
else datetime.utcnow()
553553
)
554554
self.footer = (
555-
EmbedFooter(**self.footer) if isinstance(self._json.get("footer"), dict) else None
555+
EmbedFooter(**self.footer)
556+
if isinstance(self._json.get("footer"), dict)
557+
else self._json.get("footer")
556558
)
557559
self.image = (
558-
EmbedImageStruct(**self.image) if isinstance(self._json.get("image"), dict) else None
560+
EmbedImageStruct(**self.image)
561+
if isinstance(self._json.get("image"), dict)
562+
else self._json.get("image")
559563
)
560564
self.thumbnail = (
561565
EmbedImageStruct(**self.thumbnail)
562566
if isinstance(self._json.get("thumbnail"), dict)
563-
else None
567+
else self._json.get("thumbnail")
564568
)
565569
self.video = (
566-
EmbedImageStruct(**self.video) if isinstance(self._json.get("video"), dict) else None
570+
EmbedImageStruct(**self.video)
571+
if isinstance(self._json.get("video"), dict)
572+
else self._json.get("video")
567573
)
568574
self.provider = (
569-
EmbedProvider(**self.provider) if isinstance(self._json.get("provider"), dict) else None
575+
EmbedProvider(**self.provider)
576+
if isinstance(self._json.get("provider"), dict)
577+
else self._json.get("provider")
570578
)
571579
self.author = (
572-
EmbedAuthor(**self.author) if isinstance(self._json.get("author"), dict) else None
580+
EmbedAuthor(**self.author)
581+
if isinstance(self._json.get("author"), dict)
582+
else self._json.get("author")
573583
)
574584
self.fields = (
575585
[EmbedField(**field) for field in self.fields]
576586
if isinstance(self._json.get("fields"), dict)
577-
else None
587+
else self._json.get("fields")
578588
)

interactions/context.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ class CommandContext(Context):
8787
"client",
8888
"id",
8989
"application_id",
90-
"custom_id",
9190
"callback",
9291
"type",
9392
"data",
@@ -135,7 +134,6 @@ async def defer(self, ephemeral: Optional[bool] = False) -> None:
135134
"""
136135
self.deferred = True
137136
_ephemeral: int = (1 << 6) if ephemeral else 0
138-
# ephemeral doesn't change callback typings. just data json
139137
if self.type == InteractionType.MESSAGE_COMPONENT:
140138
self.callback = InteractionCallbackType.DEFERRED_UPDATE_MESSAGE
141139
elif self.type == InteractionType.APPLICATION_COMMAND:
@@ -482,7 +480,6 @@ class ComponentContext(CommandContext):
482480
"client",
483481
"id",
484482
"application_id",
485-
"custom_id",
486483
"callback",
487484
"type",
488485
"data",
@@ -493,12 +490,10 @@ class ComponentContext(CommandContext):
493490
"channel_id",
494491
"responded",
495492
"deferred",
496-
"custom_id",
497493
)
498494

499495
def __init__(self, **kwargs) -> None:
500496
super().__init__(**kwargs)
501-
self.type = InteractionType(self.type)
502497
self.responded = False # remind components that it was not responded to.
503498
self.deferred = False # remind components they not have been deferred
504499

interactions/context.pyi

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ from .api.models.member import Member
77
from .api.models.message import Embed, Message, MessageInteraction, MessageReference
88
from .api.models.misc import DictSerializerMixin, Snowflake
99
from .api.models.user import User
10-
from .enums import InteractionCallbackType, InteractionType
10+
from .enums import ComponentType, InteractionCallbackType, InteractionType
1111
from .models.command import Choice
1212
from .models.component import ActionRow, Button, Component, Modal, SelectMenu
1313
from .models.misc import InteractionData
@@ -25,7 +25,6 @@ class Context(DictSerializerMixin):
2525
class CommandContext(Context):
2626
id: Snowflake
2727
application_id: Snowflake
28-
custom_id: str
2928
type: InteractionType
3029
callback: Optional[InteractionCallbackType]
3130
data: InteractionData
@@ -42,30 +41,29 @@ class CommandContext(Context):
4241
self,
4342
content: Optional[str] = None,
4443
*,
45-
tts: Optional[bool] = None,
44+
tts: Optional[bool] = False,
4645
# attachments: Optional[List[Any]] = None, # TODO: post-v4: Replace with own file type.
4746
embeds: Optional[Union[Embed, List[Embed]]] = None,
4847
allowed_mentions: Optional[MessageInteraction] = None,
4948
components: Optional[Union[Component, List[Component]]] = None,
50-
type: Optional[Union[int, InteractionCallbackType]] = None,
51-
ephemeral: Optional[bool] = None,
49+
ephemeral: Optional[bool] = False,
5250
) -> Message: ...
5351
async def edit(
5452
self,
5553
content: Optional[str] = None,
5654
*,
57-
tts: Optional[bool] = None,
58-
# file: Optional[FileIO] = None,
55+
tts: Optional[bool] = False,
56+
# attachments: Optional[List[Any]] = None, # TODO: post-v4: Replace with own file type.
5957
embeds: Optional[Union[Embed, List[Embed]]] = None,
6058
allowed_mentions: Optional[MessageInteraction] = None,
61-
message_reference: Optional[MessageReference] = None,
62-
components: Optional[Union[ActionRow, Button, SelectMenu]] = None,
59+
components: Optional[Union[Component, List[Component]]] = None,
6360
) -> Message: ...
6461
async def delete(self) -> None: ...
6562
async def popup(self, modal: Modal): ...
6663
async def populate(self, choices: Union[Choice, List[Choice]]) -> List[Choice]: ...
6764

6865
class ComponentContext(CommandContext):
69-
type: InteractionType
7066
def __init__(self, **kwargs) -> None: ...
71-
def defer(self, ephemeral: Optional[bool] = False, edit_origin: Optional[bool] = False) -> None: ...
67+
def defer(
68+
self, ephemeral: Optional[bool] = False, edit_origin: Optional[bool] = False
69+
) -> None: ...

interactions/models/misc.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,13 @@ def __init__(self, **kwargs):
109109
self.options = (
110110
[Option(**option) for option in self.options] if self._json.get("options") else None
111111
)
112-
self.component_type = (
113-
ComponentType(self.component_type) if self._json.get("component_type") else None
114-
)
115112
self.values = (
116113
[SelectOption(**value) for value in self.values] if self._json.get("values") else None
117114
)
118-
self._json.update({"component_type": self.component_type.value, "type": self.type.value})
115+
if self._json.get("component_type"):
116+
self.component_type = ComponentType(self.component_type)
117+
self._json.update({"component_type": self.component_type.value})
118+
self._json.update({"type": self.type.value})
119119

120120

121121
class Interaction(DictSerializerMixin):

0 commit comments

Comments
 (0)