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(
resolved.code,
with_counts=True,
with_expiration=True,
input_value=resolved.code if isinstance(url, Invite) else url,
)
if isinstance(url, Invite):

10
discord/guild.py

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

18
discord/http.py

@ -2394,7 +2394,7 @@ class HTTPClient:
target_user_id: Optional[Snowflake] = None,
target_application_id: Optional[Snowflake] = None,
flags: int = 0,
) -> Response[invite.Invite]:
) -> Response[invite.InviteWithMetadata]:
payload = {
'max_age': max_age,
'max_uses': max_uses,
@ -2423,7 +2423,7 @@ class HTTPClient:
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 = {
'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
)
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())
def get_invite(
@ -2443,7 +2443,7 @@ class HTTPClient:
with_counts: bool = True,
guild_scheduled_event_id: Optional[Snowflake] = None,
input_value: Optional[str] = None,
) -> Response[invite.Invite]:
) -> Response[Union[invite.PartialInvite, invite.InviteWithCounts]]:
params: Dict[str, Any] = {
'with_counts': str(with_counts).lower(),
'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)
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))
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))
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())
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)
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())
# Role management

2
discord/stage_instance.py

@ -26,7 +26,7 @@ from __future__ import annotations
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 .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 .activity import Activity, ClientStatus, PartialPresenceUpdate, StatusType
from .application import BaseAchievement, PartialApplication
from .application import BaseAchievement
from .audit_log import AuditLogEntry
from .automod import AutoModerationAction, AutoModerationRuleTriggerType
from .channel import ChannelType, DMChannel, GroupDMChannel, StageInstance
@ -39,7 +39,7 @@ from .experiment import GuildExperiment, UserExperiment
from .guild import ApplicationCommandCounts, Guild, SupplementalGuild, UnavailableGuild
from .integration import BaseIntegration, IntegrationApplication
from .interactions import Interaction
from .invite import InviteTargetType
from .invite import _InviteTargetType
from .library import LibraryApplication
from .member import MemberWithUser
from .message import Message
@ -211,25 +211,25 @@ InteractionCreateEvent = Interaction
UserUpdateEvent = User
class InviteCreateEvent(TypedDict):
channel_id: Snowflake
class InviteCreateEvent(_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
uses: Literal[0]
guild_id: NotRequired[Snowflake]
inviter: NotRequired[PartialUser]
target_type: NotRequired[InviteTargetType]
target_user: NotRequired[PartialUser]
target_application: NotRequired[PartialApplication]
flags: NotRequired[int]
class InviteDeleteEvent(TypedDict):
channel_id: Snowflake
code: str
guild_id: NotRequired[Snowflake]
channel_id: Snowflake
guild_id: Snowflake
class _ChannelEvent(TypedDict):

25
discord/types/invite.py

@ -29,6 +29,7 @@ from typing_extensions import NotRequired
from .application import PartialApplication
from .channel import InviteStageInstance, PartialChannel
from .gateway import InviteCreateEvent, InviteDeleteEvent
from .guild import InviteGuild, _GuildCounts
from .scheduled_event import GuildScheduledEvent
from .snowflake import Snowflake
@ -51,7 +52,7 @@ class _InviteTargetType(TypedDict, total=False):
target_application: PartialApplication
class VanityInvite:
class VanityInvite(TypedDict):
code: Optional[str]
uses: int
@ -80,25 +81,5 @@ class InviteWithMetadata(PartialInvite, _InviteMetadata):
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