Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ These changes are available on the `master` branch, but have not yet been releas
([#2905](https://github.com/Pycord-Development/pycord/pull/2905))
- `view=None` in various methods causing an AttributeError.
([#2915](https://github.com/Pycord-Development/pycord/pull/2915))
- `View.message` being `None` when it had not been interacted with yet.
([#2916](https://github.com/Pycord-Development/pycord/pull/2916))

### Removed

Expand Down
40 changes: 23 additions & 17 deletions discord/interactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -613,11 +613,13 @@ async def edit_original_response(
# The message channel types should always match
state = _InteractionMessageState(self, self._state)
message = InteractionMessage(state=state, channel=self.channel, data=data) # type: ignore
if view and not view.is_finished():
if view:
if not view.is_finished():
view.refresh(message.components)
if view.is_dispatchable():
self._state.store_view(view, message.id)

view.message = message
view.refresh(message.components)
if view.is_dispatchable():
self._state.store_view(view, message.id)

if delete_after is not None:
await self.delete_original_response(delay=delete_after)
Expand Down Expand Up @@ -1030,7 +1032,7 @@ async def send_message(

flags = MessageFlags(ephemeral=ephemeral)

if view is not None:
if view:
payload["components"] = view.to_components()
if view.is_components_v2():
if embeds or content:
Expand Down Expand Up @@ -1100,16 +1102,19 @@ async def send_message(
for file in files:
file.close()

if view is not None:
if ephemeral and view.timeout is None:
view.timeout = 15 * 60.0

view.parent = self._parent
if view.is_dispatchable():
self._parent._state.store_view(view)

self._responded = True
await self._process_callback_response(callback_response)
if view:
if not view.is_finished():
if ephemeral and view.timeout is None:
view.timeout = 15 * 60.0

view.parent = self._parent
if view.is_dispatchable():
self._parent._state.store_view(view)

view.message = await self._parent.original_response()

if delete_after is not None:
await self._parent.delete_original_response(delay=delete_after)
return self._parent
Expand Down Expand Up @@ -1268,12 +1273,13 @@ async def edit_message(
for file in files:
file.close()

if view and not view.is_finished():
view.message = msg
state.store_view(view, message_id)

self._responded = True
await self._process_callback_response(callback_response)
if view:
if not view.is_finished():
state.store_view(view, message_id)
view.message = msg or await parent.original_response()

if delete_after is not None:
await self._parent.delete_original_response(delay=delete_after)

Expand Down
Loading