Browse Source

Fix voice state typing

pull/10109/head
dolfies 1 year ago
parent
commit
f6d8c66129
  1. 4
      discord/guild.py
  2. 9
      discord/member.py
  3. 9
      discord/state.py
  4. 6
      discord/types/gateway.py
  5. 6
      discord/types/guild.py
  6. 13
      discord/types/voice.py
  7. 6
      discord/voice_client.py

4
discord/guild.py

@ -112,7 +112,7 @@ if TYPE_CHECKING:
from .types.threads import (
Thread as ThreadPayload,
)
from .types.voice import GuildVoiceState
from .types.voice import BaseVoiceState as VoiceStatePayload
from .permissions import Permissions
from .channel import VoiceChannel, StageChannel, TextChannel, ForumChannel, CategoryChannel
from .template import Template
@ -572,7 +572,7 @@ class Guild(Hashable):
return f'<Guild {inner}>'
def _update_voice_state(
self, data: GuildVoiceState, channel_id: Optional[int]
self, data: VoiceStatePayload, channel_id: Optional[int]
) -> Tuple[Optional[Member], VoiceState, VoiceState]:
cache_flags = self._state.member_cache_flags
user_id = int(data['user_id'])

9
discord/member.py

@ -73,10 +73,7 @@ if TYPE_CHECKING:
from .state import ConnectionState, Presence
from .message import Message
from .role import Role
from .types.voice import (
GuildVoiceState as GuildVoiceStatePayload,
VoiceState as VoiceStatePayload,
)
from .types.voice import BaseVoiceState as VoiceStatePayload
from .user import Note
from .relationship import Relationship
from .calls import PrivateCall
@ -147,12 +144,12 @@ class VoiceState:
)
def __init__(
self, *, data: Union[VoiceStatePayload, GuildVoiceStatePayload], channel: Optional[ConnectableChannel] = None
self, *, data: VoiceStatePayload, channel: Optional[ConnectableChannel] = None
):
self.session_id: Optional[str] = data.get('session_id')
self._update(data, channel)
def _update(self, data: Union[VoiceStatePayload, GuildVoiceStatePayload], channel: Optional[ConnectableChannel]):
def _update(self, data: VoiceStatePayload, channel: Optional[ConnectableChannel]):
self.self_mute: bool = data.get('self_mute', False)
self.self_deaf: bool = data.get('self_deaf', False)
self.self_stream: bool = data.get('self_stream', False)

9
discord/state.py

@ -128,7 +128,7 @@ if TYPE_CHECKING:
PartialMessage as PartialMessagePayload,
)
from .types import gateway as gw
from .types.voice import VoiceState as VoiceStatePayload
from .types.voice import BaseVoiceState as VoiceStatePayload
from .types.activity import ClientStatus as ClientStatusPayload
T = TypeVar('T')
@ -2797,11 +2797,16 @@ class ConnectionState:
self.dispatch('call_delete', call)
def parse_voice_state_update(self, data: gw.VoiceStateUpdateEvent) -> None:
guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id'))
guild_id = utils._get_as_snowflake(data, 'guild_id')
guild = self._get_guild(guild_id)
channel_id = utils._get_as_snowflake(data, 'channel_id')
flags = self.member_cache_flags
self_id = self.self_id
if guild_id is not None and guild is None:
_log.debug('VOICE_STATE_UPDATE referencing unknown guild ID: %s. Discarding.', guild_id)
return
if int(data['user_id']) == self_id:
voice = self._get_voice_client(guild.id if guild else self_id)
if voice is not None:

6
discord/types/gateway.py

@ -61,7 +61,7 @@ from .user import (
User,
UserGuildSettings,
)
from .voice import GuildVoiceState, VoiceState
from .voice import GuildVoiceState, PrivateVoiceState, VoiceState
T = TypeVar('T')
@ -428,7 +428,7 @@ class _GuildScheduledEventUsersEvent(TypedDict):
GuildScheduledEventUserAdd = GuildScheduledEventUserRemove = _GuildScheduledEventUsersEvent
VoiceStateUpdateEvent = GuildVoiceState
VoiceStateUpdateEvent = Union[GuildVoiceState, PrivateVoiceState]
class VoiceServerUpdateEvent(TypedDict):
@ -559,7 +559,7 @@ class PartialUpdateChannel(TypedDict):
class PassiveUpdateEvent(TypedDict):
guild_id: Snowflake
channels: List[PartialUpdateChannel]
voice_states: NotRequired[List[GuildVoiceState]]
voice_states: NotRequired[List[VoiceState]]
members: NotRequired[List[MemberWithUser]]

6
discord/types/guild.py

@ -29,7 +29,7 @@ from .scheduled_event import GuildScheduledEvent
from .sticker import GuildSticker
from .snowflake import Snowflake
from .channel import GuildChannel, StageInstance
from .voice import GuildVoiceState
from .voice import VoiceState
from .welcome_screen import WelcomeScreen
from .activity import PartialPresenceUpdate
from .role import Role
@ -116,7 +116,7 @@ class Guild(UnavailableGuild, _GuildMedia):
joined_at: NotRequired[Optional[str]]
large: NotRequired[bool]
member_count: NotRequired[int]
voice_states: NotRequired[List[GuildVoiceState]]
voice_states: NotRequired[List[VoiceState]]
members: NotRequired[List[MemberWithUser]]
channels: NotRequired[List[GuildChannel]]
presences: NotRequired[List[PartialPresenceUpdate]]
@ -189,4 +189,4 @@ class CommandScopeMigration(TypedDict):
class SupplementalGuild(UnavailableGuild):
embedded_activities: list
voice_states: List[GuildVoiceState]
voice_states: List[VoiceState]

13
discord/types/voice.py

@ -32,7 +32,7 @@ from .member import MemberWithUser
SupportedModes = Literal['xsalsa20_poly1305_lite', 'xsalsa20_poly1305_suffix', 'xsalsa20_poly1305']
class _VoiceState(TypedDict):
class BaseVoiceState(TypedDict):
user_id: Snowflake
session_id: str
deaf: bool
@ -45,13 +45,16 @@ class _VoiceState(TypedDict):
self_stream: NotRequired[bool]
class GuildVoiceState(_VoiceState):
class VoiceState(BaseVoiceState):
channel_id: Snowflake
class VoiceState(_VoiceState, total=False):
channel_id: NotRequired[Optional[Snowflake]]
guild_id: NotRequired[Optional[Snowflake]]
class PrivateVoiceState(BaseVoiceState):
channel_id: Optional[Snowflake]
class GuildVoiceState(PrivateVoiceState):
guild_id: Snowflake
class VoiceRegion(TypedDict):

6
discord/voice_client.py

@ -61,8 +61,8 @@ if TYPE_CHECKING:
from .opus import Encoder
from . import abc
from .types.gateway import VoiceStateUpdateEvent as VoiceStateUpdatePayload
from .types.voice import (
GuildVoiceState as GuildVoiceStatePayload,
VoiceServerUpdate as VoiceServerUpdatePayload,
SupportedModes,
)
@ -114,7 +114,7 @@ class VoiceProtocol:
self.client: Client = client
self.channel: VocalChannel = channel
async def on_voice_state_update(self, data: GuildVoiceStatePayload, /) -> None:
async def on_voice_state_update(self, data: VoiceStateUpdatePayload, /) -> None:
"""|coro|
An abstract method that is called when the client's voice state
@ -288,7 +288,7 @@ class VoiceClient(VoiceProtocol):
# connection related
async def on_voice_state_update(self, data: GuildVoiceStatePayload) -> None:
async def on_voice_state_update(self, data: VoiceStateUpdatePayload) -> None:
self.session_id: str = data['session_id']
channel_id = data['channel_id']

Loading…
Cancel
Save