Browse Source

Don't use class attribute syntax for Guild typings

pull/7043/head
Rapptz 4 years ago
parent
commit
0dd4c4c08c
  1. 123
      discord/guild.py

123
discord/guild.py

@ -266,55 +266,12 @@ class Guild(Hashable):
3: _GuildLimit(emoji=250, bitrate=384e3, filesize=104857600),
}
# The attributes are typed here due to the usage of late init
name: str
region: VoiceRegion
verification_level: VerificationLevel
default_notifications: NotificationLevel
explicit_content_filter: ContentFilter
afk_timeout: int
unavailable: bool
id: int
mfa_level: MFALevel
emojis: Tuple[Emoji, ...]
features: List[str]
description: Optional[str]
max_presences: Optional[int]
max_members: Optional[int]
max_video_channel_users: Optional[int]
premium_tier: int
premium_subscription_count: int
preferred_locale: Optional[str]
nsfw_level: NSFWLevel
owner_id: Optional[int]
afk_channel: Optional[VocalGuildChannel]
# These are private
_channels: Dict[int, GuildChannel]
_members: Dict[int, Member]
_voice_states: Dict[int, VoiceState]
_threads: Dict[int, Thread]
_state: ConnectionState
_icon: Optional[str]
_banner: Optional[str]
_roles: Dict[int, Role]
_splash: Optional[str]
_system_channel_id: Optional[int]
_system_channel_flags: int
_discovery_splash: Optional[str]
_rules_channel_id: Optional[int]
_public_updates_channel_id: Optional[int]
_stage_instances: Dict[int, StageInstance]
_large: Optional[bool]
def __init__(self, *, data: GuildPayload, state: ConnectionState):
self._channels = {}
self._members = {}
self._voice_states = {}
self._threads = {}
self._state = state
self._channels: Dict[int, GuildChannel] = {}
self._members: Dict[int, Member] = {}
self._voice_states: Dict[int, VoiceState] = {}
self._threads: Dict[int, Thread] = {}
self._state: ConnectionState = state
self._from_data(data)
def _add_channel(self, channel: GuildChannel, /) -> None:
@ -426,43 +383,43 @@ class Guild(Hashable):
# I don't have this guarantee when someone updates the guild.
member_count = guild.get('member_count', None)
if member_count is not None:
self._member_count = member_count
self.name = guild.get('name')
self.region = try_enum(VoiceRegion, guild.get('region'))
self.verification_level = try_enum(VerificationLevel, guild.get('verification_level'))
self.default_notifications = try_enum(NotificationLevel, guild.get('default_message_notifications'))
self.explicit_content_filter = try_enum(ContentFilter, guild.get('explicit_content_filter', 0))
self.afk_timeout = guild.get('afk_timeout')
self._icon = guild.get('icon')
self._banner = guild.get('banner')
self.unavailable = guild.get('unavailable', False)
self.id = int(guild['id'])
self._roles = {}
self._member_count: int = member_count
self.name: str = guild.get('name')
self.region: VoiceRegion = try_enum(VoiceRegion, guild.get('region'))
self.verification_level: VerificationLevel = try_enum(VerificationLevel, guild.get('verification_level'))
self.default_notifications: NotificationLevel = try_enum(NotificationLevel, guild.get('default_message_notifications'))
self.explicit_content_filter: ContentFilter = try_enum(ContentFilter, guild.get('explicit_content_filter', 0))
self.afk_timeout: int = guild.get('afk_timeout')
self._icon: Optional[str] = guild.get('icon')
self._banner: Optional[str] = guild.get('banner')
self.unavailable: bool = guild.get('unavailable', False)
self.id: int = int(guild['id'])
self._roles: Dict[int, Role] = {}
state = self._state # speed up attribute access
for r in guild.get('roles', []):
role = Role(guild=self, data=r, state=state)
self._roles[role.id] = role
self.mfa_level = guild.get('mfa_level')
self.emojis = tuple(map(lambda d: state.store_emoji(self, d), guild.get('emojis', [])))
self.features = guild.get('features', [])
self._splash = guild.get('splash')
self._system_channel_id = utils._get_as_snowflake(guild, 'system_channel_id')
self.description = guild.get('description')
self.max_presences = guild.get('max_presences')
self.max_members = guild.get('max_members')
self.max_video_channel_users = guild.get('max_video_channel_users')
self.premium_tier = guild.get('premium_tier', 0)
self.premium_subscription_count = guild.get('premium_subscription_count') or 0
self._system_channel_flags = guild.get('system_channel_flags', 0)
self.preferred_locale = guild.get('preferred_locale')
self._discovery_splash = guild.get('discovery_splash')
self._rules_channel_id = utils._get_as_snowflake(guild, 'rules_channel_id')
self._public_updates_channel_id = utils._get_as_snowflake(guild, 'public_updates_channel_id')
self.nsfw_level = try_enum(NSFWLevel, guild.get('nsfw_level', 0))
self._stage_instances = {}
self.mfa_level: MFALevel = guild.get('mfa_level')
self.emojis: Tuple[Emoji, ...] = tuple(map(lambda d: state.store_emoji(self, d), guild.get('emojis', [])))
self.features: List[str] = guild.get('features', [])
self._splash: Optional[str] = guild.get('splash')
self._system_channel_id: Optional[int] = utils._get_as_snowflake(guild, 'system_channel_id')
self.description: Optional[str] = guild.get('description')
self.max_presences: Optional[int] = guild.get('max_presences')
self.max_members: Optional[int] = guild.get('max_members')
self.max_video_channel_users: Optional[int] = guild.get('max_video_channel_users')
self.premium_tier: int = guild.get('premium_tier', 0)
self.premium_subscription_count: int = guild.get('premium_subscription_count') or 0
self._system_channel_flags: int = guild.get('system_channel_flags', 0)
self.preferred_locale: Optional[str] = guild.get('preferred_locale')
self._discovery_splash: Optional[str] = guild.get('discovery_splash')
self._rules_channel_id: Optional[int] = utils._get_as_snowflake(guild, 'rules_channel_id')
self._public_updates_channel_id: Optional[int] = utils._get_as_snowflake(guild, 'public_updates_channel_id')
self.nsfw_level: NSFWLevel = try_enum(NSFWLevel, guild.get('nsfw_level', 0))
self._stage_instances: Dict[int, StageInstance] = {}
for s in guild.get('stage_instances', []):
stage_instance = StageInstance(guild=self, data=s, state=state)
self._stage_instances[stage_instance.id] = stage_instance
@ -475,10 +432,10 @@ class Guild(Hashable):
self._add_member(member)
self._sync(guild)
self._large = None if member_count is None else self._member_count >= 250
self._large: Optional[bool] = None if member_count is None else self._member_count >= 250
self.owner_id = utils._get_as_snowflake(guild, 'owner_id')
self.afk_channel = self.get_channel(utils._get_as_snowflake(guild, 'afk_channel_id')) # type: ignore
self.owner_id: Optional[int] = utils._get_as_snowflake(guild, 'owner_id')
self.afk_channel: Optional[VocalGuildChannel] = self.get_channel(utils._get_as_snowflake(guild, 'afk_channel_id')) # type: ignore
for obj in guild.get('voice_states', []):
self._update_voice_state(obj, int(obj['channel_id']))

Loading…
Cancel
Save