Browse Source

Fix Interaction.name for own interactions

pull/10109/head
dolfies 3 years ago
parent
commit
8fff4b01f2
  1. 2
      discord/commands.py
  2. 4
      discord/interactions.py
  3. 8
      discord/state.py

2
discord/commands.py

@ -70,7 +70,7 @@ class ApplicationCommand(Protocol):
if getattr(channel, 'guild', None) is not None:
payload['guild_id'] = str(channel.guild.id)
state._interactions[payload['nonce']] = 2
state._interactions[payload['nonce']] = (2, data['name'])
await state.http.interact(payload, form_data=True)
try:
i = await state.client.wait_for(

4
discord/interactions.py

@ -76,9 +76,9 @@ class Interaction:
@classmethod
def _from_self(
cls, *, id: Snowflake, type: int, nonce: Optional[Snowflake] = None, user: ClientUser
cls, *, id: Snowflake, type: int, nonce: Optional[Snowflake] = None, user: ClientUser, name: str
) -> Interaction:
return cls(int(id), type, nonce, user=user)
return cls(int(id), type, nonce, user=user, name=name)
@classmethod
def _from_message(

8
discord/state.py

@ -263,7 +263,7 @@ class ConnectionState:
self._voice_clients: Dict[int, VoiceProtocol] = {}
self._voice_states: Dict[int, VoiceState] = {}
self._interactions: Dict[Union[int, str], Union[int, Interaction]] = {}
self._interactions: Dict[Union[int, str], Union[Tuple[int, str], Interaction]] = {}
self._relationships: Dict[int, Relationship] = {}
self._private_channels: Dict[int, PrivateChannel] = {}
self._private_channels_by_user: Dict[int, DMChannel] = {}
@ -1666,8 +1666,8 @@ class ConnectionState:
self.dispatch('relationship_remove', old)
def parse_interaction_create(self, data) -> None:
type = self._interactions.pop(data['nonce'], 0)
i = Interaction._from_self(type=type, user=self.user, **data)
type, name = self._interactions.pop(data['nonce'], (0, ''))
i = Interaction._from_self(type=type, user=self.user, name=name, **data) # type: ignore
self._interactions[i.id] = i
self.dispatch('interaction_create', i)
@ -1676,7 +1676,7 @@ class ConnectionState:
i = self._interactions.pop(id, None)
if i is None:
i = Interaction(**data)
i.successful = True
i.successful = True # type: ignore
self.dispatch('interaction_finish', i)
def parse_interaction_failed(self, data) -> None:

Loading…
Cancel
Save