mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
Fix up some type ignores in state.py
This commit is contained in:
parent
3cf000d467
commit
24b729ed0d
@ -228,7 +228,7 @@ class ConnectionState:
|
|||||||
self._intents: Intents = intents
|
self._intents: Intents = intents
|
||||||
|
|
||||||
if not intents.members or cache_flags._empty:
|
if not intents.members or cache_flags._empty:
|
||||||
self.store_user = self.store_user_no_intents # type: ignore
|
self.store_user = self.store_user_no_intents # type: ignore - This reassignment is on purpose
|
||||||
|
|
||||||
self.parsers = parsers = {}
|
self.parsers = parsers = {}
|
||||||
for attr, func in inspect.getmembers(self):
|
for attr, func in inspect.getmembers(self):
|
||||||
@ -312,7 +312,7 @@ class ConnectionState:
|
|||||||
|
|
||||||
def _update_references(self, ws: DiscordWebSocket) -> None:
|
def _update_references(self, ws: DiscordWebSocket) -> None:
|
||||||
for vc in self.voice_clients:
|
for vc in self.voice_clients:
|
||||||
vc.main_ws = ws # type: ignore
|
vc.main_ws = ws # type: ignore - Silencing the unknown attribute (ok at runtime).
|
||||||
|
|
||||||
def store_user(self, data):
|
def store_user(self, data):
|
||||||
# this way is 300% faster than `dict.setdefault`.
|
# this way is 300% faster than `dict.setdefault`.
|
||||||
@ -404,6 +404,7 @@ class ConnectionState:
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
|
# Type narrowing can't figure out that channel_id isn't None here
|
||||||
self._private_channels.move_to_end(channel_id) # type: ignore
|
self._private_channels.move_to_end(channel_id) # type: ignore
|
||||||
return value
|
return value
|
||||||
|
|
||||||
@ -687,10 +688,12 @@ class ConnectionState:
|
|||||||
def parse_interaction_create(self, data: gw.InteractionCreateEvent) -> None:
|
def parse_interaction_create(self, data: gw.InteractionCreateEvent) -> None:
|
||||||
interaction = Interaction(data=data, state=self)
|
interaction = Interaction(data=data, state=self)
|
||||||
if data['type'] == 3: # interaction component
|
if data['type'] == 3: # interaction component
|
||||||
|
# These keys are always there for this interaction type
|
||||||
custom_id = interaction.data['custom_id'] # type: ignore
|
custom_id = interaction.data['custom_id'] # type: ignore
|
||||||
component_type = interaction.data['component_type'] # type: ignore
|
component_type = interaction.data['component_type'] # type: ignore
|
||||||
self._view_store.dispatch_view(component_type, custom_id, interaction)
|
self._view_store.dispatch_view(component_type, custom_id, interaction)
|
||||||
elif data['type'] == 5: # modal submit
|
elif data['type'] == 5: # modal submit
|
||||||
|
# These keys are always there for this interaction type
|
||||||
custom_id = interaction.data['custom_id'] # type: ignore
|
custom_id = interaction.data['custom_id'] # type: ignore
|
||||||
components = interaction.data['components'] # type: ignore
|
components = interaction.data['components'] # type: ignore
|
||||||
self._view_store.dispatch_modal(custom_id, interaction, components) # type: ignore
|
self._view_store.dispatch_modal(custom_id, interaction, components) # type: ignore
|
||||||
@ -744,11 +747,14 @@ class ConnectionState:
|
|||||||
channel_id = int(data['id'])
|
channel_id = int(data['id'])
|
||||||
if channel_type is ChannelType.group:
|
if channel_type is ChannelType.group:
|
||||||
channel = self._get_private_channel(channel_id)
|
channel = self._get_private_channel(channel_id)
|
||||||
|
if channel is not None:
|
||||||
old_channel = copy.copy(channel)
|
old_channel = copy.copy(channel)
|
||||||
# the channel is a GroupChannel
|
# the channel is a GroupChannel rather than PrivateChannel
|
||||||
channel._update_group(data) # type: ignore
|
channel._update_group(data) # type: ignore
|
||||||
self.dispatch('private_channel_update', old_channel, channel)
|
self.dispatch('private_channel_update', old_channel, channel)
|
||||||
return
|
return
|
||||||
|
else:
|
||||||
|
_log.debug('CHANNEL_UPDATE referencing an unknown channel ID: %s. Discarding.', channel_id)
|
||||||
|
|
||||||
guild_id = utils._get_as_snowflake(data, 'guild_id')
|
guild_id = utils._get_as_snowflake(data, 'guild_id')
|
||||||
guild = self._get_guild(guild_id)
|
guild = self._get_guild(guild_id)
|
||||||
@ -957,7 +963,7 @@ class ConnectionState:
|
|||||||
user_id = int(data['user']['id'])
|
user_id = int(data['user']['id'])
|
||||||
member = guild.get_member(user_id)
|
member = guild.get_member(user_id)
|
||||||
if member is not None:
|
if member is not None:
|
||||||
guild._remove_member(member) # type: ignore
|
guild._remove_member(member)
|
||||||
self.dispatch('member_remove', member)
|
self.dispatch('member_remove', member)
|
||||||
else:
|
else:
|
||||||
_log.debug('GUILD_MEMBER_REMOVE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
_log.debug('GUILD_MEMBER_REMOVE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||||
@ -1001,10 +1007,10 @@ class ConnectionState:
|
|||||||
for emoji in before_emojis:
|
for emoji in before_emojis:
|
||||||
self._emojis.pop(emoji.id, None)
|
self._emojis.pop(emoji.id, None)
|
||||||
# guild won't be None here
|
# guild won't be None here
|
||||||
guild.emojis = tuple(map(lambda d: self.store_emoji(guild, d), data['emojis'])) # type: ignore
|
guild.emojis = tuple(map(lambda d: self.store_emoji(guild, d), data['emojis']))
|
||||||
self.dispatch('guild_emojis_update', guild, before_emojis, guild.emojis)
|
self.dispatch('guild_emojis_update', guild, before_emojis, guild.emojis)
|
||||||
|
|
||||||
def parse_guild_stickers_update(self, data) -> None:
|
def parse_guild_stickers_update(self, data: gw.GuildStickersUpdateEvent) -> None:
|
||||||
guild = self._get_guild(int(data['guild_id']))
|
guild = self._get_guild(int(data['guild_id']))
|
||||||
if guild is None:
|
if guild is None:
|
||||||
_log.debug('GUILD_STICKERS_UPDATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
_log.debug('GUILD_STICKERS_UPDATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||||
@ -1013,8 +1019,8 @@ class ConnectionState:
|
|||||||
before_stickers = guild.stickers
|
before_stickers = guild.stickers
|
||||||
for emoji in before_stickers:
|
for emoji in before_stickers:
|
||||||
self._stickers.pop(emoji.id, None)
|
self._stickers.pop(emoji.id, None)
|
||||||
# guild won't be None here
|
|
||||||
guild.stickers = tuple(map(lambda d: self.store_sticker(guild, d), data['stickers'])) # type: ignore
|
guild.stickers = tuple(map(lambda d: self.store_sticker(guild, d), data['stickers']))
|
||||||
self.dispatch('guild_stickers_update', guild, before_stickers, guild.stickers)
|
self.dispatch('guild_stickers_update', guild, before_stickers, guild.stickers)
|
||||||
|
|
||||||
def _get_create_guild(self, data):
|
def _get_create_guild(self, data):
|
||||||
@ -1178,8 +1184,10 @@ class ConnectionState:
|
|||||||
guild = self._get_guild(guild_id)
|
guild = self._get_guild(guild_id)
|
||||||
presences = data.get('presences', [])
|
presences = data.get('presences', [])
|
||||||
|
|
||||||
# the guild won't be None here
|
if guild is None:
|
||||||
members = [Member(guild=guild, data=member, state=self) for member in data.get('members', [])] # type: ignore
|
return
|
||||||
|
|
||||||
|
members = [Member(guild=guild, data=member, state=self) for member in data.get('members', [])]
|
||||||
_log.debug('Processed a chunk for %s members in guild ID %s.', len(members), guild_id)
|
_log.debug('Processed a chunk for %s members in guild ID %s.', len(members), guild_id)
|
||||||
|
|
||||||
if presences:
|
if presences:
|
||||||
@ -1294,8 +1302,7 @@ class ConnectionState:
|
|||||||
if flags.voice:
|
if flags.voice:
|
||||||
if channel_id is None and flags._voice_only and member.id != self_id:
|
if channel_id is None and flags._voice_only and member.id != self_id:
|
||||||
# Only remove from cache if we only have the voice flag enabled
|
# Only remove from cache if we only have the voice flag enabled
|
||||||
# Member doesn't meet the Snowflake protocol currently
|
guild._remove_member(member)
|
||||||
guild._remove_member(member) # type: ignore
|
|
||||||
elif channel_id is not None:
|
elif channel_id is not None:
|
||||||
guild._add_member(member)
|
guild._add_member(member)
|
||||||
|
|
||||||
@ -1315,13 +1322,12 @@ class ConnectionState:
|
|||||||
channel, guild = self._get_guild_channel(data)
|
channel, guild = self._get_guild_channel(data)
|
||||||
if channel is not None:
|
if channel is not None:
|
||||||
member = None
|
member = None
|
||||||
user_id = utils._get_as_snowflake(data, 'user_id')
|
user_id = int(data['user_id'])
|
||||||
if isinstance(channel, DMChannel):
|
if isinstance(channel, DMChannel):
|
||||||
member = channel.recipient
|
member = channel.recipient
|
||||||
|
|
||||||
elif isinstance(channel, (Thread, TextChannel)) and guild is not None:
|
elif isinstance(channel, (Thread, TextChannel)) and guild is not None:
|
||||||
# user_id won't be None
|
member = guild.get_member(user_id)
|
||||||
member = guild.get_member(user_id) # type: ignore
|
|
||||||
|
|
||||||
if member is None:
|
if member is None:
|
||||||
member_data = data.get('member')
|
member_data = data.get('member')
|
||||||
@ -1502,11 +1508,11 @@ class AutoShardedConnectionState(ConnectionState):
|
|||||||
self._update_message_references()
|
self._update_message_references()
|
||||||
|
|
||||||
self.dispatch('connect')
|
self.dispatch('connect')
|
||||||
self.dispatch('shard_connect', data['__shard_id__']) # type: ignore
|
self.dispatch('shard_connect', data['__shard_id__']) # type: ignore - This is an internal discord.py key
|
||||||
|
|
||||||
if self._ready_task is None:
|
if self._ready_task is None:
|
||||||
self._ready_task = asyncio.create_task(self._delay_ready())
|
self._ready_task = asyncio.create_task(self._delay_ready())
|
||||||
|
|
||||||
def parse_resumed(self, data: gw.ResumedEvent) -> None:
|
def parse_resumed(self, data: gw.ResumedEvent) -> None:
|
||||||
self.dispatch('resumed')
|
self.dispatch('resumed')
|
||||||
self.dispatch('shard_resumed', data['__shard_id__']) # type: ignore
|
self.dispatch('shard_resumed', data['__shard_id__']) # type: ignore - This is an internal discord.py key
|
||||||
|
@ -32,7 +32,7 @@ from .role import Role
|
|||||||
from .channel import Channel, ChannelType, StageInstance
|
from .channel import Channel, ChannelType, StageInstance
|
||||||
from .interactions import Interaction
|
from .interactions import Interaction
|
||||||
from .invite import InviteTargetType
|
from .invite import InviteTargetType
|
||||||
from .emoji import PartialEmoji
|
from .emoji import Emoji, PartialEmoji
|
||||||
from .member import Member, MemberWithUser
|
from .member import Member, MemberWithUser
|
||||||
from .snowflake import Snowflake
|
from .snowflake import Snowflake
|
||||||
from .message import Message
|
from .message import Message
|
||||||
@ -267,7 +267,7 @@ class GuildMemberUpdateEvent(_GuildMemberUpdateEventOptional):
|
|||||||
|
|
||||||
class GuildEmojisUpdateEvent(TypedDict):
|
class GuildEmojisUpdateEvent(TypedDict):
|
||||||
guild_id: Snowflake
|
guild_id: Snowflake
|
||||||
emojis: List[PartialEmoji]
|
emojis: List[Emoji]
|
||||||
|
|
||||||
|
|
||||||
class GuildStickersUpdateEvent(TypedDict):
|
class GuildStickersUpdateEvent(TypedDict):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user