mirror of
https://github.com/Rapptz/discord.py.git
synced 2026-03-05 03:02:49 +00:00
Remove old workaround to /callback not having a return type
The old code needed a workaround using interaction_id to differentiate between multiple instances being reused since they would all go into the `None` key. Since /callback now returns a proper message_id this could be used as a key instead of None. From testing, it seems this is true for both edit_message and send_message responses.
This commit is contained in:
@@ -1053,15 +1053,12 @@ class ViewStore:
|
||||
|
||||
def dispatch_view(self, component_type: int, custom_id: str, interaction: Interaction[ClientT]) -> None:
|
||||
self.dispatch_dynamic_items(component_type, custom_id, interaction)
|
||||
interaction_id: Optional[int] = None
|
||||
message_id: Optional[int] = None
|
||||
# Realistically, in a component based interaction the Interaction.message will never be None
|
||||
# However, this guard is just in case Discord screws up somehow
|
||||
msg = interaction.message
|
||||
if msg is not None:
|
||||
message_id = msg.id
|
||||
if msg.interaction_metadata:
|
||||
interaction_id = msg.interaction_metadata.id
|
||||
|
||||
key = (component_type, custom_id)
|
||||
|
||||
@@ -1070,21 +1067,6 @@ class ViewStore:
|
||||
if message_id is not None:
|
||||
item = self._views.get(message_id, {}).get(key)
|
||||
|
||||
if item is None and interaction_id is not None:
|
||||
try:
|
||||
items = self._views.pop(interaction_id)
|
||||
except KeyError:
|
||||
item = None
|
||||
else:
|
||||
item = items.get(key)
|
||||
# If we actually got the items, then these keys should probably be moved
|
||||
# to the proper message_id instead of the interaction_id as they are now.
|
||||
# An interaction_id is only used as a temporary stop gap for
|
||||
# InteractionResponse.send_message so multiple view instances do not
|
||||
# override each other.
|
||||
# NOTE: Fix this mess if /callback endpoint ever gets proper return types
|
||||
self._views.setdefault(message_id, {}).update(items)
|
||||
|
||||
if item is None:
|
||||
# Fallback to None message_id searches in case a persistent view
|
||||
# was added without an associated message_id
|
||||
@@ -1116,11 +1098,6 @@ class ViewStore:
|
||||
|
||||
self.add_task(modal._dispatch_submit(interaction, components, resolved))
|
||||
|
||||
def remove_interaction_mapping(self, interaction_id: int) -> None:
|
||||
# This is called before re-adding the view
|
||||
self._views.pop(interaction_id, None)
|
||||
self._synced_message_views.pop(interaction_id, None)
|
||||
|
||||
def is_message_tracked(self, message_id: int) -> bool:
|
||||
return message_id in self._synced_message_views
|
||||
|
||||
|
||||
Reference in New Issue
Block a user