Skip to content

Commit 907931d

Browse files
fix(views): View.message being None initially (#2916)
* Fix View.message being None initially * style(pre-commit): auto fixes from pre-commit.com hooks * chore: add changelog entry * fix: store message regardless of finished state * style(pre-commit): auto fixes from pre-commit.com hooks --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 46f8d4e commit 907931d

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ These changes are available on the `master` branch, but have not yet been releas
3131
([#2905](https://github.com/Pycord-Development/pycord/pull/2905))
3232
- `view=None` in various methods causing an AttributeError.
3333
([#2915](https://github.com/Pycord-Development/pycord/pull/2915))
34+
- `View.message` being `None` when it had not been interacted with yet.
35+
([#2916](https://github.com/Pycord-Development/pycord/pull/2916))
3436

3537
### Removed
3638

discord/interactions.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -613,11 +613,13 @@ async def edit_original_response(
613613
# The message channel types should always match
614614
state = _InteractionMessageState(self, self._state)
615615
message = InteractionMessage(state=state, channel=self.channel, data=data) # type: ignore
616-
if view and not view.is_finished():
616+
if view:
617+
if not view.is_finished():
618+
view.refresh(message.components)
619+
if view.is_dispatchable():
620+
self._state.store_view(view, message.id)
621+
617622
view.message = message
618-
view.refresh(message.components)
619-
if view.is_dispatchable():
620-
self._state.store_view(view, message.id)
621623

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

10311033
flags = MessageFlags(ephemeral=ephemeral)
10321034

1033-
if view is not None:
1035+
if view:
10341036
payload["components"] = view.to_components()
10351037
if view.is_components_v2():
10361038
if embeds or content:
@@ -1100,16 +1102,19 @@ async def send_message(
11001102
for file in files:
11011103
file.close()
11021104

1103-
if view is not None:
1104-
if ephemeral and view.timeout is None:
1105-
view.timeout = 15 * 60.0
1106-
1107-
view.parent = self._parent
1108-
if view.is_dispatchable():
1109-
self._parent._state.store_view(view)
1110-
11111105
self._responded = True
11121106
await self._process_callback_response(callback_response)
1107+
if view:
1108+
if not view.is_finished():
1109+
if ephemeral and view.timeout is None:
1110+
view.timeout = 15 * 60.0
1111+
1112+
view.parent = self._parent
1113+
if view.is_dispatchable():
1114+
self._parent._state.store_view(view)
1115+
1116+
view.message = await self._parent.original_response()
1117+
11131118
if delete_after is not None:
11141119
await self._parent.delete_original_response(delay=delete_after)
11151120
return self._parent
@@ -1268,12 +1273,13 @@ async def edit_message(
12681273
for file in files:
12691274
file.close()
12701275

1271-
if view and not view.is_finished():
1272-
view.message = msg
1273-
state.store_view(view, message_id)
1274-
12751276
self._responded = True
12761277
await self._process_callback_response(callback_response)
1278+
if view:
1279+
if not view.is_finished():
1280+
state.store_view(view, message_id)
1281+
view.message = msg or await parent.original_response()
1282+
12771283
if delete_after is not None:
12781284
await self._parent.delete_original_response(delay=delete_after)
12791285

0 commit comments

Comments
 (0)