Browse Source

Fix invite typing issues

pull/10109/head
dolfies 2 years ago
parent
commit
bb296880c4
  1. 1
      discord/client.py
  2. 10
      discord/guild.py
  3. 18
      discord/http.py
  4. 2
      discord/stage_instance.py
  5. 24
      discord/types/gateway.py
  6. 25
      discord/types/invite.py

1
discord/client.py

@ -2125,7 +2125,6 @@ class Client:
data = await state.http.get_invite( data = await state.http.get_invite(
resolved.code, resolved.code,
with_counts=True, with_counts=True,
with_expiration=True,
input_value=resolved.code if isinstance(url, Invite) else url, input_value=resolved.code if isinstance(url, Invite) else url,
) )
if isinstance(url, Invite): if isinstance(url, Invite):

10
discord/guild.py

@ -3175,7 +3175,7 @@ class Guild(Hashable):
data = await self._state.http.invites_from(self.id) data = await self._state.http.invites_from(self.id)
result = [] result = []
for invite in data: for invite in data:
channel = self.get_channel(int(invite['channel']['id'])) channel = self.get_channel(int(invite['channel']['id'])) # type: ignore
result.append(Invite(state=self._state, data=invite, guild=self, channel=channel)) result.append(Invite(state=self._state, data=invite, guild=self, channel=channel))
return result return result
@ -4301,12 +4301,8 @@ class Guild(Hashable):
# Get the vanity channel & uses # Get the vanity channel & uses
data = await self._state.http.get_invite(payload['code']) data = await self._state.http.get_invite(payload['code'])
channel = self.get_channel(int(data['channel']['id'])) channel = self.get_channel(int(data['channel']['id'])) # type: ignore
payload['revoked'] = False data.update({'temporary': False, 'max_uses': 0, 'max_age': 0, 'uses': payload.get('uses', 0)}) # type: ignore
payload['temporary'] = False
payload['max_uses'] = 0
payload['max_age'] = 0
payload['uses'] = payload.get('uses', 0)
return Invite(state=self._state, data=payload, guild=self, channel=channel) # type: ignore # We're faking a payload here return Invite(state=self._state, data=payload, guild=self, channel=channel) # type: ignore # We're faking a payload here
async def audit_logs( async def audit_logs(

18
discord/http.py

@ -2394,7 +2394,7 @@ class HTTPClient:
target_user_id: Optional[Snowflake] = None, target_user_id: Optional[Snowflake] = None,
target_application_id: Optional[Snowflake] = None, target_application_id: Optional[Snowflake] = None,
flags: int = 0, flags: int = 0,
) -> Response[invite.Invite]: ) -> Response[invite.InviteWithMetadata]:
payload = { payload = {
'max_age': max_age, 'max_age': max_age,
'max_uses': max_uses, 'max_uses': max_uses,
@ -2423,7 +2423,7 @@ class HTTPClient:
context_properties=props, context_properties=props,
) )
def create_group_invite(self, channel_id: Snowflake, *, max_age: int = 86400) -> Response[invite.Invite]: def create_group_invite(self, channel_id: Snowflake, *, max_age: int = 86400) -> Response[invite.InviteWithMetadata]:
payload = { payload = {
'max_age': max_age, 'max_age': max_age,
} }
@ -2433,7 +2433,7 @@ class HTTPClient:
Route('POST', '/channels/{channel_id}/invites', channel_id=channel_id), json=payload, context_properties=props Route('POST', '/channels/{channel_id}/invites', channel_id=channel_id), json=payload, context_properties=props
) )
def create_friend_invite(self) -> Response[invite.Invite]: def create_friend_invite(self) -> Response[invite.InviteWithMetadata]:
return self.request(Route('POST', '/users/@me/invites'), json={}, context_properties=ContextProperties.empty()) return self.request(Route('POST', '/users/@me/invites'), json={}, context_properties=ContextProperties.empty())
def get_invite( def get_invite(
@ -2443,7 +2443,7 @@ class HTTPClient:
with_counts: bool = True, with_counts: bool = True,
guild_scheduled_event_id: Optional[Snowflake] = None, guild_scheduled_event_id: Optional[Snowflake] = None,
input_value: Optional[str] = None, input_value: Optional[str] = None,
) -> Response[invite.Invite]: ) -> Response[Union[invite.PartialInvite, invite.InviteWithCounts]]:
params: Dict[str, Any] = { params: Dict[str, Any] = {
'with_counts': str(with_counts).lower(), 'with_counts': str(with_counts).lower(),
'with_expiration': 'true', # No longer exists 'with_expiration': 'true', # No longer exists
@ -2455,19 +2455,19 @@ class HTTPClient:
return self.request(Route('GET', '/invites/{invite_id}', invite_id=invite_id), params=params) return self.request(Route('GET', '/invites/{invite_id}', invite_id=invite_id), params=params)
def invites_from(self, guild_id: Snowflake) -> Response[List[invite.Invite]]: def invites_from(self, guild_id: Snowflake) -> Response[List[invite.InviteWithMetadata]]:
return self.request(Route('GET', '/guilds/{guild_id}/invites', guild_id=guild_id)) return self.request(Route('GET', '/guilds/{guild_id}/invites', guild_id=guild_id))
def invites_from_channel(self, channel_id: Snowflake) -> Response[List[invite.Invite]]: def invites_from_channel(self, channel_id: Snowflake) -> Response[List[invite.InviteWithMetadata]]:
return self.request(Route('GET', '/channels/{channel_id}/invites', channel_id=channel_id)) return self.request(Route('GET', '/channels/{channel_id}/invites', channel_id=channel_id))
def get_friend_invites(self) -> Response[List[invite.Invite]]: def get_friend_invites(self) -> Response[List[invite.InviteWithMetadata]]:
return self.request(Route('GET', '/users/@me/invites'), context_properties=ContextProperties.empty()) return self.request(Route('GET', '/users/@me/invites'), context_properties=ContextProperties.empty())
def delete_invite(self, invite_id: str, *, reason: Optional[str] = None) -> Response[invite.Invite]: def delete_invite(self, invite_id: str, *, reason: Optional[str] = None) -> Response[invite.InviteWithMetadata]:
return self.request(Route('DELETE', '/invites/{invite_id}', invite_id=invite_id), reason=reason) return self.request(Route('DELETE', '/invites/{invite_id}', invite_id=invite_id), reason=reason)
def delete_friend_invites(self) -> Response[List[invite.Invite]]: def delete_friend_invites(self) -> Response[List[invite.InviteWithMetadata]]:
return self.request(Route('DELETE', '/users/@me/invites'), context_properties=ContextProperties.empty()) return self.request(Route('DELETE', '/users/@me/invites'), context_properties=ContextProperties.empty())
# Role management # Role management

2
discord/stage_instance.py

@ -26,7 +26,7 @@ from __future__ import annotations
from typing import List, Optional, TYPE_CHECKING from typing import List, Optional, TYPE_CHECKING
from .utils import MISSING, cached_slot_property, _get_as_snowflake from .utils import MISSING, _get_as_snowflake
from .mixins import Hashable from .mixins import Hashable
from .enums import PrivacyLevel, try_enum from .enums import PrivacyLevel, try_enum

24
discord/types/gateway.py

@ -29,7 +29,7 @@ from typing import List, Literal, Optional, TypedDict, Union
from typing_extensions import NotRequired, Required from typing_extensions import NotRequired, Required
from .activity import Activity, ClientStatus, PartialPresenceUpdate, StatusType from .activity import Activity, ClientStatus, PartialPresenceUpdate, StatusType
from .application import BaseAchievement, PartialApplication from .application import BaseAchievement
from .audit_log import AuditLogEntry from .audit_log import AuditLogEntry
from .automod import AutoModerationAction, AutoModerationRuleTriggerType from .automod import AutoModerationAction, AutoModerationRuleTriggerType
from .channel import ChannelType, DMChannel, GroupDMChannel, StageInstance from .channel import ChannelType, DMChannel, GroupDMChannel, StageInstance
@ -39,7 +39,7 @@ from .experiment import GuildExperiment, UserExperiment
from .guild import ApplicationCommandCounts, Guild, SupplementalGuild, UnavailableGuild from .guild import ApplicationCommandCounts, Guild, SupplementalGuild, UnavailableGuild
from .integration import BaseIntegration, IntegrationApplication from .integration import BaseIntegration, IntegrationApplication
from .interactions import Interaction from .interactions import Interaction
from .invite import InviteTargetType from .invite import _InviteTargetType
from .library import LibraryApplication from .library import LibraryApplication
from .member import MemberWithUser from .member import MemberWithUser
from .message import Message from .message import Message
@ -211,25 +211,25 @@ InteractionCreateEvent = Interaction
UserUpdateEvent = User UserUpdateEvent = User
class InviteCreateEvent(TypedDict): class InviteCreateEvent(_InviteTargetType):
channel_id: Snowflake
code: str code: str
type: Literal[0]
channel_id: Snowflake
guild_id: Snowflake
inviter: NotRequired[PartialUser]
expires_at: Optional[str]
created_at: str created_at: str
uses: int
max_age: int max_age: int
max_uses: int max_uses: int
temporary: bool temporary: bool
uses: Literal[0] flags: NotRequired[int]
guild_id: NotRequired[Snowflake]
inviter: NotRequired[PartialUser]
target_type: NotRequired[InviteTargetType]
target_user: NotRequired[PartialUser]
target_application: NotRequired[PartialApplication]
class InviteDeleteEvent(TypedDict): class InviteDeleteEvent(TypedDict):
channel_id: Snowflake
code: str code: str
guild_id: NotRequired[Snowflake] channel_id: Snowflake
guild_id: Snowflake
class _ChannelEvent(TypedDict): class _ChannelEvent(TypedDict):

25
discord/types/invite.py

@ -29,6 +29,7 @@ from typing_extensions import NotRequired
from .application import PartialApplication from .application import PartialApplication
from .channel import InviteStageInstance, PartialChannel from .channel import InviteStageInstance, PartialChannel
from .gateway import InviteCreateEvent, InviteDeleteEvent
from .guild import InviteGuild, _GuildCounts from .guild import InviteGuild, _GuildCounts
from .scheduled_event import GuildScheduledEvent from .scheduled_event import GuildScheduledEvent
from .snowflake import Snowflake from .snowflake import Snowflake
@ -51,7 +52,7 @@ class _InviteTargetType(TypedDict, total=False):
target_application: PartialApplication target_application: PartialApplication
class VanityInvite: class VanityInvite(TypedDict):
code: Optional[str] code: Optional[str]
uses: int uses: int
@ -80,25 +81,5 @@ class InviteWithMetadata(PartialInvite, _InviteMetadata):
Invite = Union[PartialInvite, InviteWithCounts, InviteWithMetadata] Invite = Union[PartialInvite, InviteWithCounts, InviteWithMetadata]
class GatewayInviteCreate(_InviteTargetType):
code: str
type: Literal[0]
channel_id: Snowflake
guild_id: Snowflake
inviter: NotRequired[PartialUser]
expires_at: Optional[str]
created_at: str
uses: int
max_age: int
max_uses: int
temporary: bool
flags: NotRequired[int]
class GatewayInviteDelete(TypedDict):
code: str
channel_id: Snowflake
guild_id: Snowflake
GatewayInvite = Union[GatewayInviteCreate, GatewayInviteDelete] GatewayInvite = Union[InviteCreateEvent, InviteDeleteEvent]

Loading…
Cancel
Save