Skip to content

Commit 96fb380

Browse files
committed
feat: ephemeral message to ComponentMessage
1 parent 073d5eb commit 96fb380

File tree

2 files changed

+24
-31
lines changed

2 files changed

+24
-31
lines changed

discord_components/dpy_overrides.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@
2020

2121

2222
class ComponentMessage(Message):
23-
__slots__ = tuple(list(Message.__slots__) + ["components"])
23+
__slots__ = tuple(list(Message.__slots__) + ["components", "ephemeral"])
2424

25-
def __init__(self, *, state, channel, data):
25+
def __init__(self, *, state, channel, data, ephemeral=False):
2626
super().__init__(state=state, channel=channel, data=data)
27+
self.ephemeral = ephemeral
2728

2829
components = []
2930
for i in data["components"]:
@@ -101,6 +102,9 @@ async def edit(
101102
components: List[Union[ActionRow, Component, List[Component]]] = None,
102103
**fields,
103104
):
105+
if self.ephemeral:
106+
return
107+
104108
if components is not None:
105109
await self._components_edit(
106110
content=content,
@@ -123,6 +127,12 @@ async def edit(
123127
**fields,
124128
)
125129

130+
async def delete(self, *args, **kwargs):
131+
if self.ephemeral:
132+
return
133+
134+
return await super().delete(*args, **kwargs)
135+
126136

127137
def new_override(cls, *args, **kwargs):
128138
if isinstance(cls, Message):

discord_components/interaction.py

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -56,27 +56,18 @@ def __init__(
5656
state=state, guild=self.guild, data=raw_data["member"]
5757
)
5858
elif self.raw_data.get("member"):
59-
self.user: Union[User, Member] = User(
60-
state=state, data=raw_data["member"]["user"]
61-
)
59+
self.user: Union[User, Member] = User(state=state, data=raw_data["member"]["user"])
6260
else:
6361
self.user: Union[User, Member] = User(state=state, data=raw_data["user"])
6462
self.author: Union[User, Member] = self.user
6563

66-
if raw_data["message"].get("components"):
67-
self.message: Union[ComponentMessage, dict] = ComponentMessage(
68-
state=state, channel=self.channel, data=raw_data["message"]
69-
)
70-
self.component: Component = self.message.get_component(
71-
custom_id=self.custom_id
72-
)
73-
else:
74-
self.message: Union[ComponentMessage, dict] = raw_data["message"]
75-
76-
if self.component_type == 2:
77-
self.component: Component = Button.from_json(raw_data["data"])
78-
elif self.component_type == 3:
79-
self.component: Component = Select.from_json(raw_data["data"])
64+
self.message: Union[ComponentMessage, dict] = ComponentMessage(
65+
state=state,
66+
channel=self.channel,
67+
data=raw_data["message"],
68+
ephemeral=raw_data["message"].get("flags") == 64,
69+
)
70+
self.component: Component = self.message.get_component(custom_id=self.custom_id)
8071

8172
self.raw_data: dict = raw_data
8273
self.responded: bool = False
@@ -135,9 +126,7 @@ async def respond(
135126

136127
if embeds is not None:
137128
if len(embeds) > 10:
138-
raise InvalidArgument(
139-
"embeds parameter must be a list of up to 10 elements"
140-
)
129+
raise InvalidArgument("embeds parameter must be a list of up to 10 elements")
141130
data["embeds"] = [embed.to_dict() for embed in embeds]
142131

143132
if suppress is not None:
@@ -149,15 +138,11 @@ async def respond(
149138

150139
if allowed_mentions is not None:
151140
if state.allowed_mentions is not None:
152-
data["allowed_mentions"] = state.allowed_mentions.merge(
153-
allowed_mentions
154-
).to_dict()
141+
data["allowed_mentions"] = state.allowed_mentions.merge(allowed_mentions).to_dict()
155142
else:
156143
data["allowed_mentions"] = allowed_mentions.to_dict()
157144
else:
158-
data["allowed_mentions"] = (
159-
state.allowed_mentions and state.allowed_mentions.to_dict()
160-
)
145+
data["allowed_mentions"] = state.allowed_mentions and state.allowed_mentions.to_dict()
161146

162147
if components is not None:
163148
data["components"] = _get_components_json(components)
@@ -169,9 +154,7 @@ async def respond(
169154
raise InvalidArgument("cannot pass both file and files parameter to send()")
170155
elif files is not None:
171156
if len(files) > 10:
172-
raise InvalidArgument(
173-
"files parameter must be a list of up to 10 elements"
174-
)
157+
raise InvalidArgument("files parameter must be a list of up to 10 elements")
175158
if file is not None:
176159
files = [file]
177160

0 commit comments

Comments
 (0)