Fix code style issues with Black
This commit is contained in:
447
discord/guild.py
447
discord/guild.py
@@ -79,9 +79,7 @@ from .file import File
|
||||
from .welcome_screen import WelcomeScreen, WelcomeChannel
|
||||
|
||||
|
||||
__all__ = (
|
||||
'Guild',
|
||||
)
|
||||
__all__ = ("Guild",)
|
||||
|
||||
MISSING = utils.MISSING
|
||||
|
||||
@@ -240,45 +238,45 @@ class Guild(Hashable):
|
||||
"""
|
||||
|
||||
__slots__ = (
|
||||
'afk_timeout',
|
||||
'afk_channel',
|
||||
'name',
|
||||
'id',
|
||||
'unavailable',
|
||||
'region',
|
||||
'owner_id',
|
||||
'mfa_level',
|
||||
'emojis',
|
||||
'stickers',
|
||||
'features',
|
||||
'verification_level',
|
||||
'explicit_content_filter',
|
||||
'default_notifications',
|
||||
'description',
|
||||
'max_presences',
|
||||
'max_members',
|
||||
'max_video_channel_users',
|
||||
'premium_tier',
|
||||
'premium_subscription_count',
|
||||
'preferred_locale',
|
||||
'nsfw_level',
|
||||
'_members',
|
||||
'_channels',
|
||||
'_icon',
|
||||
'_banner',
|
||||
'_state',
|
||||
'_roles',
|
||||
'_member_count',
|
||||
'_large',
|
||||
'_splash',
|
||||
'_voice_states',
|
||||
'_system_channel_id',
|
||||
'_system_channel_flags',
|
||||
'_discovery_splash',
|
||||
'_rules_channel_id',
|
||||
'_public_updates_channel_id',
|
||||
'_stage_instances',
|
||||
'_threads',
|
||||
"afk_timeout",
|
||||
"afk_channel",
|
||||
"name",
|
||||
"id",
|
||||
"unavailable",
|
||||
"region",
|
||||
"owner_id",
|
||||
"mfa_level",
|
||||
"emojis",
|
||||
"stickers",
|
||||
"features",
|
||||
"verification_level",
|
||||
"explicit_content_filter",
|
||||
"default_notifications",
|
||||
"description",
|
||||
"max_presences",
|
||||
"max_members",
|
||||
"max_video_channel_users",
|
||||
"premium_tier",
|
||||
"premium_subscription_count",
|
||||
"preferred_locale",
|
||||
"nsfw_level",
|
||||
"_members",
|
||||
"_channels",
|
||||
"_icon",
|
||||
"_banner",
|
||||
"_state",
|
||||
"_roles",
|
||||
"_member_count",
|
||||
"_large",
|
||||
"_splash",
|
||||
"_voice_states",
|
||||
"_system_channel_id",
|
||||
"_system_channel_flags",
|
||||
"_discovery_splash",
|
||||
"_rules_channel_id",
|
||||
"_public_updates_channel_id",
|
||||
"_stage_instances",
|
||||
"_threads",
|
||||
)
|
||||
|
||||
_PREMIUM_GUILD_LIMITS: ClassVar[Dict[Optional[int], _GuildLimit]] = {
|
||||
@@ -338,21 +336,23 @@ class Guild(Hashable):
|
||||
return to_remove
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.name or ''
|
||||
return self.name or ""
|
||||
|
||||
def __repr__(self) -> str:
|
||||
attrs = (
|
||||
('id', self.id),
|
||||
('name', self.name),
|
||||
('shard_id', self.shard_id),
|
||||
('chunked', self.chunked),
|
||||
('member_count', getattr(self, '_member_count', None)),
|
||||
("id", self.id),
|
||||
("name", self.name),
|
||||
("shard_id", self.shard_id),
|
||||
("chunked", self.chunked),
|
||||
("member_count", getattr(self, "_member_count", None)),
|
||||
)
|
||||
inner = ' '.join('%s=%r' % t for t in attrs)
|
||||
return f'<Guild {inner}>'
|
||||
inner = " ".join("%s=%r" % t for t in attrs)
|
||||
return f"<Guild {inner}>"
|
||||
|
||||
def _update_voice_state(self, data: GuildVoiceState, channel_id: int) -> Tuple[Optional[Member], VoiceState, VoiceState]:
|
||||
user_id = int(data['user_id'])
|
||||
def _update_voice_state(
|
||||
self, data: GuildVoiceState, channel_id: int
|
||||
) -> Tuple[Optional[Member], VoiceState, VoiceState]:
|
||||
user_id = int(data["user_id"])
|
||||
channel = self.get_channel(channel_id)
|
||||
try:
|
||||
# check if we should remove the voice state from cache
|
||||
@@ -372,7 +372,7 @@ class Guild(Hashable):
|
||||
member = self.get_member(user_id)
|
||||
if member is None:
|
||||
try:
|
||||
member = Member(data=data['member'], state=self._state, guild=self)
|
||||
member = Member(data=data["member"], state=self._state, guild=self)
|
||||
except KeyError:
|
||||
member = None
|
||||
|
||||
@@ -404,57 +404,57 @@ class Guild(Hashable):
|
||||
def _from_data(self, guild: GuildPayload) -> None:
|
||||
# according to Stan, this is always available even if the guild is unavailable
|
||||
# I don't have this guarantee when someone updates the guild.
|
||||
member_count = guild.get('member_count', None)
|
||||
member_count = guild.get("member_count", None)
|
||||
if member_count is not None:
|
||||
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.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')
|
||||
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.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', []):
|
||||
for r in guild.get("roles", []):
|
||||
role = Role(guild=self, data=r, state=state)
|
||||
self._roles[role.id] = role
|
||||
|
||||
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.mfa_level: MFALevel = guild.get("mfa_level")
|
||||
self.emojis: Tuple[Emoji, ...] = tuple(map(lambda d: state.store_emoji(self, d), guild.get("emojis", [])))
|
||||
self.stickers: Tuple[GuildSticker, ...] = tuple(
|
||||
map(lambda d: state.store_sticker(self, d), guild.get('stickers', []))
|
||||
map(lambda d: state.store_sticker(self, d), guild.get("stickers", []))
|
||||
)
|
||||
self.features: List[GuildFeature] = 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.features: List[GuildFeature] = 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', []):
|
||||
for s in guild.get("stage_instances", []):
|
||||
stage_instance = StageInstance(guild=self, data=s, state=state)
|
||||
self._stage_instances[stage_instance.id] = stage_instance
|
||||
|
||||
cache_joined = self._state.member_cache_flags.joined
|
||||
self_id = self._state.self_id
|
||||
for mdata in guild.get('members', []):
|
||||
for mdata in guild.get("members", []):
|
||||
member = Member(data=mdata, guild=self, state=state)
|
||||
if cache_joined or member.id == self_id:
|
||||
self._add_member(member)
|
||||
@@ -462,35 +462,35 @@ class Guild(Hashable):
|
||||
self._sync(guild)
|
||||
self._large: Optional[bool] = None if member_count is None else self._member_count >= 250
|
||||
|
||||
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
|
||||
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']))
|
||||
for obj in guild.get("voice_states", []):
|
||||
self._update_voice_state(obj, int(obj["channel_id"]))
|
||||
|
||||
# TODO: refactor/remove?
|
||||
def _sync(self, data: GuildPayload) -> None:
|
||||
try:
|
||||
self._large = data['large']
|
||||
self._large = data["large"]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
empty_tuple = tuple()
|
||||
for presence in data.get('presences', []):
|
||||
user_id = int(presence['user']['id'])
|
||||
for presence in data.get("presences", []):
|
||||
user_id = int(presence["user"]["id"])
|
||||
member = self.get_member(user_id)
|
||||
if member is not None:
|
||||
member._presence_update(presence, empty_tuple) # type: ignore
|
||||
|
||||
if 'channels' in data:
|
||||
channels = data['channels']
|
||||
if "channels" in data:
|
||||
channels = data["channels"]
|
||||
for c in channels:
|
||||
factory, ch_type = _guild_channel_factory(c['type'])
|
||||
factory, ch_type = _guild_channel_factory(c["type"])
|
||||
if factory:
|
||||
self._add_channel(factory(guild=self, data=c, state=self._state)) # type: ignore
|
||||
|
||||
if 'threads' in data:
|
||||
threads = data['threads']
|
||||
if "threads" in data:
|
||||
threads = data["threads"]
|
||||
for thread in threads:
|
||||
self._add_thread(Thread(guild=self, state=self._state, data=thread))
|
||||
|
||||
@@ -713,7 +713,7 @@ class Guild(Hashable):
|
||||
@property
|
||||
def emoji_limit(self) -> int:
|
||||
""":class:`int`: The maximum number of emoji slots this guild has."""
|
||||
more_emoji = 200 if 'MORE_EMOJI' in self.features else 50
|
||||
more_emoji = 200 if "MORE_EMOJI" in self.features else 50
|
||||
return max(more_emoji, self._PREMIUM_GUILD_LIMITS[self.premium_tier].emoji)
|
||||
|
||||
@property
|
||||
@@ -722,13 +722,13 @@ class Guild(Hashable):
|
||||
|
||||
.. versionadded:: 2.0
|
||||
"""
|
||||
more_stickers = 60 if 'MORE_STICKERS' in self.features else 0
|
||||
more_stickers = 60 if "MORE_STICKERS" in self.features else 0
|
||||
return max(more_stickers, self._PREMIUM_GUILD_LIMITS[self.premium_tier].stickers)
|
||||
|
||||
@property
|
||||
def bitrate_limit(self) -> float:
|
||||
""":class:`float`: The maximum bitrate for voice channels this guild can have."""
|
||||
vip_guild = self._PREMIUM_GUILD_LIMITS[1].bitrate if 'VIP_REGIONS' in self.features else 96e3
|
||||
vip_guild = self._PREMIUM_GUILD_LIMITS[1].bitrate if "VIP_REGIONS" in self.features else 96e3
|
||||
return max(vip_guild, self._PREMIUM_GUILD_LIMITS[self.premium_tier].bitrate)
|
||||
|
||||
@property
|
||||
@@ -744,15 +744,15 @@ class Guild(Hashable):
|
||||
@property
|
||||
def humans(self) -> List[Member]:
|
||||
"""List[:class:`Member`]: A list of human members that belong to this guild.
|
||||
|
||||
.. versionadded:: 2.0 """
|
||||
|
||||
.. versionadded:: 2.0"""
|
||||
return [member for member in self.members if not member.bot]
|
||||
|
||||
@property
|
||||
def bots(self) -> List[Member]:
|
||||
"""List[:class:`Member`]: A list of bots that belong to this guild.
|
||||
|
||||
.. versionadded:: 2.0 """
|
||||
|
||||
.. versionadded:: 2.0"""
|
||||
return [member for member in self.members if member.bot]
|
||||
|
||||
def get_member(self, user_id: int, /) -> Optional[Member]:
|
||||
@@ -872,21 +872,21 @@ class Guild(Hashable):
|
||||
"""Optional[:class:`Asset`]: Returns the guild's banner asset, if available."""
|
||||
if self._banner is None:
|
||||
return None
|
||||
return Asset._from_guild_image(self._state, self.id, self._banner, path='banners')
|
||||
return Asset._from_guild_image(self._state, self.id, self._banner, path="banners")
|
||||
|
||||
@property
|
||||
def splash(self) -> Optional[Asset]:
|
||||
"""Optional[:class:`Asset`]: Returns the guild's invite splash asset, if available."""
|
||||
if self._splash is None:
|
||||
return None
|
||||
return Asset._from_guild_image(self._state, self.id, self._splash, path='splashes')
|
||||
return Asset._from_guild_image(self._state, self.id, self._splash, path="splashes")
|
||||
|
||||
@property
|
||||
def discovery_splash(self) -> Optional[Asset]:
|
||||
"""Optional[:class:`Asset`]: Returns the guild's discovery splash asset, if available."""
|
||||
if self._discovery_splash is None:
|
||||
return None
|
||||
return Asset._from_guild_image(self._state, self.id, self._discovery_splash, path='discovery-splashes')
|
||||
return Asset._from_guild_image(self._state, self.id, self._discovery_splash, path="discovery-splashes")
|
||||
|
||||
@property
|
||||
def member_count(self) -> int:
|
||||
@@ -910,7 +910,7 @@ class Guild(Hashable):
|
||||
If this value returns ``False``, then you should request for
|
||||
offline members.
|
||||
"""
|
||||
count = getattr(self, '_member_count', None)
|
||||
count = getattr(self, "_member_count", None)
|
||||
if count is None:
|
||||
return False
|
||||
return count == len(self._members)
|
||||
@@ -957,7 +957,7 @@ class Guild(Hashable):
|
||||
|
||||
result = None
|
||||
members = self.members
|
||||
if len(name) > 5 and name[-5] == '#':
|
||||
if len(name) > 5 and name[-5] == "#":
|
||||
# The 5 length is checking to see if #0000 is in the string,
|
||||
# as a#0000 has a length of 6, the minimum for a potential
|
||||
# discriminator lookup.
|
||||
@@ -985,20 +985,20 @@ class Guild(Hashable):
|
||||
if overwrites is MISSING:
|
||||
overwrites = {}
|
||||
elif not isinstance(overwrites, dict):
|
||||
raise InvalidArgument('overwrites parameter expects a dict.')
|
||||
raise InvalidArgument("overwrites parameter expects a dict.")
|
||||
|
||||
perms = []
|
||||
for target, perm in overwrites.items():
|
||||
if not isinstance(perm, PermissionOverwrite):
|
||||
raise InvalidArgument(f'Expected PermissionOverwrite received {perm.__class__.__name__}')
|
||||
raise InvalidArgument(f"Expected PermissionOverwrite received {perm.__class__.__name__}")
|
||||
|
||||
allow, deny = perm.pair()
|
||||
payload = {'allow': allow.value, 'deny': deny.value, 'id': target.id}
|
||||
payload = {"allow": allow.value, "deny": deny.value, "id": target.id}
|
||||
|
||||
if isinstance(target, Role):
|
||||
payload['type'] = abc._Overwrites.ROLE
|
||||
payload["type"] = abc._Overwrites.ROLE
|
||||
else:
|
||||
payload['type'] = abc._Overwrites.MEMBER
|
||||
payload["type"] = abc._Overwrites.MEMBER
|
||||
|
||||
perms.append(payload)
|
||||
|
||||
@@ -1099,16 +1099,16 @@ class Guild(Hashable):
|
||||
|
||||
options = {}
|
||||
if position is not MISSING:
|
||||
options['position'] = position
|
||||
options["position"] = position
|
||||
|
||||
if topic is not MISSING:
|
||||
options['topic'] = topic
|
||||
options["topic"] = topic
|
||||
|
||||
if slowmode_delay is not MISSING:
|
||||
options['rate_limit_per_user'] = slowmode_delay
|
||||
options["rate_limit_per_user"] = slowmode_delay
|
||||
|
||||
if nsfw is not MISSING:
|
||||
options['nsfw'] = nsfw
|
||||
options["nsfw"] = nsfw
|
||||
|
||||
data = await self._create_channel(
|
||||
name, overwrites=overwrites, channel_type=ChannelType.text, category=category, reason=reason, **options
|
||||
@@ -1183,19 +1183,19 @@ class Guild(Hashable):
|
||||
"""
|
||||
options = {}
|
||||
if position is not MISSING:
|
||||
options['position'] = position
|
||||
options["position"] = position
|
||||
|
||||
if bitrate is not MISSING:
|
||||
options['bitrate'] = bitrate
|
||||
options["bitrate"] = bitrate
|
||||
|
||||
if user_limit is not MISSING:
|
||||
options['user_limit'] = user_limit
|
||||
options["user_limit"] = user_limit
|
||||
|
||||
if rtc_region is not MISSING:
|
||||
options['rtc_region'] = None if rtc_region is None else str(rtc_region)
|
||||
options["rtc_region"] = None if rtc_region is None else str(rtc_region)
|
||||
|
||||
if video_quality_mode is not MISSING:
|
||||
options['video_quality_mode'] = video_quality_mode.value
|
||||
options["video_quality_mode"] = video_quality_mode.value
|
||||
|
||||
data = await self._create_channel(
|
||||
name, overwrites=overwrites, channel_type=ChannelType.voice, category=category, reason=reason, **options
|
||||
@@ -1258,13 +1258,18 @@ class Guild(Hashable):
|
||||
"""
|
||||
|
||||
options: Dict[str, Any] = {
|
||||
'topic': topic,
|
||||
"topic": topic,
|
||||
}
|
||||
if position is not MISSING:
|
||||
options['position'] = position
|
||||
options["position"] = position
|
||||
|
||||
data = await self._create_channel(
|
||||
name, overwrites=overwrites, channel_type=ChannelType.stage_voice, category=category, reason=reason, **options
|
||||
name,
|
||||
overwrites=overwrites,
|
||||
channel_type=ChannelType.stage_voice,
|
||||
category=category,
|
||||
reason=reason,
|
||||
**options,
|
||||
)
|
||||
channel = StageChannel(state=self._state, guild=self, data=data)
|
||||
|
||||
@@ -1305,7 +1310,7 @@ class Guild(Hashable):
|
||||
"""
|
||||
options: Dict[str, Any] = {}
|
||||
if position is not MISSING:
|
||||
options['position'] = position
|
||||
options["position"] = position
|
||||
|
||||
data = await self._create_channel(
|
||||
name, overwrites=overwrites, channel_type=ChannelType.category, reason=reason, **options
|
||||
@@ -1480,108 +1485,108 @@ class Guild(Hashable):
|
||||
|
||||
fields: Dict[str, Any] = {}
|
||||
if name is not MISSING:
|
||||
fields['name'] = name
|
||||
fields["name"] = name
|
||||
|
||||
if description is not MISSING:
|
||||
fields['description'] = description
|
||||
fields["description"] = description
|
||||
|
||||
if preferred_locale is not MISSING:
|
||||
fields['preferred_locale'] = preferred_locale
|
||||
fields["preferred_locale"] = preferred_locale
|
||||
|
||||
if afk_timeout is not MISSING:
|
||||
fields['afk_timeout'] = afk_timeout
|
||||
fields["afk_timeout"] = afk_timeout
|
||||
|
||||
if icon is not MISSING:
|
||||
if icon is None:
|
||||
fields['icon'] = icon
|
||||
fields["icon"] = icon
|
||||
else:
|
||||
fields['icon'] = utils._bytes_to_base64_data(icon)
|
||||
fields["icon"] = utils._bytes_to_base64_data(icon)
|
||||
|
||||
if banner is not MISSING:
|
||||
if banner is None:
|
||||
fields['banner'] = banner
|
||||
fields["banner"] = banner
|
||||
else:
|
||||
fields['banner'] = utils._bytes_to_base64_data(banner)
|
||||
fields["banner"] = utils._bytes_to_base64_data(banner)
|
||||
|
||||
if splash is not MISSING:
|
||||
if splash is None:
|
||||
fields['splash'] = splash
|
||||
fields["splash"] = splash
|
||||
else:
|
||||
fields['splash'] = utils._bytes_to_base64_data(splash)
|
||||
fields["splash"] = utils._bytes_to_base64_data(splash)
|
||||
|
||||
if discovery_splash is not MISSING:
|
||||
if discovery_splash is None:
|
||||
fields['discovery_splash'] = discovery_splash
|
||||
fields["discovery_splash"] = discovery_splash
|
||||
else:
|
||||
fields['discovery_splash'] = utils._bytes_to_base64_data(discovery_splash)
|
||||
fields["discovery_splash"] = utils._bytes_to_base64_data(discovery_splash)
|
||||
|
||||
if default_notifications is not MISSING:
|
||||
if not isinstance(default_notifications, NotificationLevel):
|
||||
raise InvalidArgument('default_notifications field must be of type NotificationLevel')
|
||||
fields['default_message_notifications'] = default_notifications.value
|
||||
raise InvalidArgument("default_notifications field must be of type NotificationLevel")
|
||||
fields["default_message_notifications"] = default_notifications.value
|
||||
|
||||
if afk_channel is not MISSING:
|
||||
if afk_channel is None:
|
||||
fields['afk_channel_id'] = afk_channel
|
||||
fields["afk_channel_id"] = afk_channel
|
||||
else:
|
||||
fields['afk_channel_id'] = afk_channel.id
|
||||
fields["afk_channel_id"] = afk_channel.id
|
||||
|
||||
if system_channel is not MISSING:
|
||||
if system_channel is None:
|
||||
fields['system_channel_id'] = system_channel
|
||||
fields["system_channel_id"] = system_channel
|
||||
else:
|
||||
fields['system_channel_id'] = system_channel.id
|
||||
fields["system_channel_id"] = system_channel.id
|
||||
|
||||
if rules_channel is not MISSING:
|
||||
if rules_channel is None:
|
||||
fields['rules_channel_id'] = rules_channel
|
||||
fields["rules_channel_id"] = rules_channel
|
||||
else:
|
||||
fields['rules_channel_id'] = rules_channel.id
|
||||
fields["rules_channel_id"] = rules_channel.id
|
||||
|
||||
if public_updates_channel is not MISSING:
|
||||
if public_updates_channel is None:
|
||||
fields['public_updates_channel_id'] = public_updates_channel
|
||||
fields["public_updates_channel_id"] = public_updates_channel
|
||||
else:
|
||||
fields['public_updates_channel_id'] = public_updates_channel.id
|
||||
fields["public_updates_channel_id"] = public_updates_channel.id
|
||||
|
||||
if owner is not MISSING:
|
||||
if self.owner_id != self._state.self_id:
|
||||
raise InvalidArgument('To transfer ownership you must be the owner of the guild.')
|
||||
raise InvalidArgument("To transfer ownership you must be the owner of the guild.")
|
||||
|
||||
fields['owner_id'] = owner.id
|
||||
fields["owner_id"] = owner.id
|
||||
|
||||
if region is not MISSING:
|
||||
fields['region'] = str(region)
|
||||
fields["region"] = str(region)
|
||||
|
||||
if verification_level is not MISSING:
|
||||
if not isinstance(verification_level, VerificationLevel):
|
||||
raise InvalidArgument('verification_level field must be of type VerificationLevel')
|
||||
raise InvalidArgument("verification_level field must be of type VerificationLevel")
|
||||
|
||||
fields['verification_level'] = verification_level.value
|
||||
fields["verification_level"] = verification_level.value
|
||||
|
||||
if explicit_content_filter is not MISSING:
|
||||
if not isinstance(explicit_content_filter, ContentFilter):
|
||||
raise InvalidArgument('explicit_content_filter field must be of type ContentFilter')
|
||||
raise InvalidArgument("explicit_content_filter field must be of type ContentFilter")
|
||||
|
||||
fields['explicit_content_filter'] = explicit_content_filter.value
|
||||
fields["explicit_content_filter"] = explicit_content_filter.value
|
||||
|
||||
if system_channel_flags is not MISSING:
|
||||
if not isinstance(system_channel_flags, SystemChannelFlags):
|
||||
raise InvalidArgument('system_channel_flags field must be of type SystemChannelFlags')
|
||||
raise InvalidArgument("system_channel_flags field must be of type SystemChannelFlags")
|
||||
|
||||
fields['system_channel_flags'] = system_channel_flags.value
|
||||
fields["system_channel_flags"] = system_channel_flags.value
|
||||
|
||||
if community is not MISSING:
|
||||
features = []
|
||||
if community:
|
||||
if 'rules_channel_id' in fields and 'public_updates_channel_id' in fields:
|
||||
features.append('COMMUNITY')
|
||||
if "rules_channel_id" in fields and "public_updates_channel_id" in fields:
|
||||
features.append("COMMUNITY")
|
||||
else:
|
||||
raise InvalidArgument(
|
||||
'community field requires both rules_channel and public_updates_channel fields to be provided'
|
||||
"community field requires both rules_channel and public_updates_channel fields to be provided"
|
||||
)
|
||||
|
||||
fields['features'] = features
|
||||
fields["features"] = features
|
||||
|
||||
data = await http.edit_guild(self.id, reason=reason, **fields)
|
||||
return Guild(data=data, state=self._state)
|
||||
@@ -1612,9 +1617,9 @@ class Guild(Hashable):
|
||||
data = await self._state.http.get_all_guild_channels(self.id)
|
||||
|
||||
def convert(d):
|
||||
factory, ch_type = _guild_channel_factory(d['type'])
|
||||
factory, ch_type = _guild_channel_factory(d["type"])
|
||||
if factory is None:
|
||||
raise InvalidData('Unknown channel type {type} for channel ID {id}.'.format_map(d))
|
||||
raise InvalidData("Unknown channel type {type} for channel ID {id}.".format_map(d))
|
||||
|
||||
channel = factory(guild=self, state=self._state, data=d)
|
||||
return channel
|
||||
@@ -1641,10 +1646,10 @@ class Guild(Hashable):
|
||||
The active threads
|
||||
"""
|
||||
data = await self._state.http.get_active_threads(self.id)
|
||||
threads = [Thread(guild=self, state=self._state, data=d) for d in data.get('threads', [])]
|
||||
threads = [Thread(guild=self, state=self._state, data=d) for d in data.get("threads", [])]
|
||||
thread_lookup: Dict[int, Thread] = {thread.id: thread for thread in threads}
|
||||
for member in data.get('members', []):
|
||||
thread = thread_lookup.get(int(member['id']))
|
||||
for member in data.get("members", []):
|
||||
thread = thread_lookup.get(int(member["id"]))
|
||||
if thread is not None:
|
||||
thread._add_member(ThreadMember(parent=thread, data=member))
|
||||
|
||||
@@ -1700,7 +1705,7 @@ class Guild(Hashable):
|
||||
"""
|
||||
|
||||
if not self._state._intents.members:
|
||||
raise ClientException('Intents.members must be enabled to use this.')
|
||||
raise ClientException("Intents.members must be enabled to use this.")
|
||||
|
||||
return MemberIterator(self, limit=limit, after=after)
|
||||
|
||||
@@ -1791,7 +1796,7 @@ class Guild(Hashable):
|
||||
The :class:`BanEntry` object for the specified user.
|
||||
"""
|
||||
data: BanPayload = await self._state.http.get_ban(user.id, self.id)
|
||||
return BanEntry(user=User(state=self._state, data=data['user']), reason=data['reason'])
|
||||
return BanEntry(user=User(state=self._state, data=data["user"]), reason=data["reason"])
|
||||
|
||||
async def fetch_channel(self, channel_id: int, /) -> Union[GuildChannel, Thread]:
|
||||
"""|coro|
|
||||
@@ -1824,16 +1829,16 @@ class Guild(Hashable):
|
||||
"""
|
||||
data = await self._state.http.get_channel(channel_id)
|
||||
|
||||
factory, ch_type = _threaded_guild_channel_factory(data['type'])
|
||||
factory, ch_type = _threaded_guild_channel_factory(data["type"])
|
||||
if factory is None:
|
||||
raise InvalidData('Unknown channel type {type} for channel ID {id}.'.format_map(data))
|
||||
raise InvalidData("Unknown channel type {type} for channel ID {id}.".format_map(data))
|
||||
|
||||
if ch_type in (ChannelType.group, ChannelType.private):
|
||||
raise InvalidData('Channel ID resolved to a private channel')
|
||||
raise InvalidData("Channel ID resolved to a private channel")
|
||||
|
||||
guild_id = int(data['guild_id'])
|
||||
guild_id = int(data["guild_id"])
|
||||
if self.id != guild_id:
|
||||
raise InvalidData('Guild ID resolved to a different guild')
|
||||
raise InvalidData("Guild ID resolved to a different guild")
|
||||
|
||||
channel: GuildChannel = factory(guild=self, state=self._state, data=data) # type: ignore
|
||||
return channel
|
||||
@@ -1860,7 +1865,7 @@ class Guild(Hashable):
|
||||
"""
|
||||
|
||||
data: List[BanPayload] = await self._state.http.get_bans(self.id)
|
||||
return [BanEntry(user=User(state=self._state, data=e['user']), reason=e['reason']) for e in data]
|
||||
return [BanEntry(user=User(state=self._state, data=e["user"]), reason=e["reason"]) for e in data]
|
||||
|
||||
async def prune_members(
|
||||
self,
|
||||
@@ -1920,7 +1925,7 @@ class Guild(Hashable):
|
||||
"""
|
||||
|
||||
if not isinstance(days, int):
|
||||
raise InvalidArgument(f'Expected int for ``days``, received {days.__class__.__name__} instead.')
|
||||
raise InvalidArgument(f"Expected int for ``days``, received {days.__class__.__name__} instead.")
|
||||
|
||||
if roles:
|
||||
role_ids = [str(role.id) for role in roles]
|
||||
@@ -1930,7 +1935,7 @@ class Guild(Hashable):
|
||||
data = await self._state.http.prune_members(
|
||||
self.id, days, compute_prune_count=compute_prune_count, roles=role_ids, reason=reason
|
||||
)
|
||||
return data['pruned']
|
||||
return data["pruned"]
|
||||
|
||||
async def templates(self) -> List[Template]:
|
||||
"""|coro|
|
||||
@@ -2012,7 +2017,7 @@ class Guild(Hashable):
|
||||
"""
|
||||
|
||||
if not isinstance(days, int):
|
||||
raise InvalidArgument(f'Expected int for ``days``, received {days.__class__.__name__} instead.')
|
||||
raise InvalidArgument(f"Expected int for ``days``, received {days.__class__.__name__} instead.")
|
||||
|
||||
if roles:
|
||||
role_ids = [str(role.id) for role in roles]
|
||||
@@ -2020,7 +2025,7 @@ class Guild(Hashable):
|
||||
role_ids = []
|
||||
|
||||
data = await self._state.http.estimate_pruned_members(self.id, days, role_ids)
|
||||
return data['pruned']
|
||||
return data["pruned"]
|
||||
|
||||
async def invites(self) -> List[Invite]:
|
||||
"""|coro|
|
||||
@@ -2046,7 +2051,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"]))
|
||||
result.append(Invite(state=self._state, data=invite, guild=self, channel=channel))
|
||||
|
||||
return result
|
||||
@@ -2070,10 +2075,10 @@ class Guild(Hashable):
|
||||
"""
|
||||
from .template import Template
|
||||
|
||||
payload = {'name': name}
|
||||
payload = {"name": name}
|
||||
|
||||
if description:
|
||||
payload['description'] = description
|
||||
payload["description"] = description
|
||||
|
||||
data = await self._state.http.create_template(self.id, payload)
|
||||
|
||||
@@ -2130,9 +2135,9 @@ class Guild(Hashable):
|
||||
data = await self._state.http.get_all_integrations(self.id)
|
||||
|
||||
def convert(d):
|
||||
factory, _ = _integration_factory(d['type'])
|
||||
factory, _ = _integration_factory(d["type"])
|
||||
if factory is None:
|
||||
raise InvalidData('Unknown integration type {type!r} for integration ID {id}'.format_map(d))
|
||||
raise InvalidData("Unknown integration type {type!r} for integration ID {id}".format_map(d))
|
||||
return factory(guild=self, data=d)
|
||||
|
||||
return [convert(d) for d in data]
|
||||
@@ -2237,20 +2242,20 @@ class Guild(Hashable):
|
||||
The created sticker.
|
||||
"""
|
||||
payload = {
|
||||
'name': name,
|
||||
"name": name,
|
||||
}
|
||||
|
||||
if description:
|
||||
payload['description'] = description
|
||||
payload["description"] = description
|
||||
|
||||
try:
|
||||
emoji = unicodedata.name(emoji)
|
||||
except TypeError:
|
||||
pass
|
||||
else:
|
||||
emoji = emoji.replace(' ', '_')
|
||||
emoji = emoji.replace(" ", "_")
|
||||
|
||||
payload['tags'] = emoji
|
||||
payload["tags"] = emoji
|
||||
|
||||
data = await self._state.http.create_guild_sticker(self.id, payload, file, reason)
|
||||
return self._state.store_sticker(self, data)
|
||||
@@ -2517,24 +2522,24 @@ class Guild(Hashable):
|
||||
"""
|
||||
fields: Dict[str, Any] = {}
|
||||
if permissions is not MISSING:
|
||||
fields['permissions'] = str(permissions.value)
|
||||
fields["permissions"] = str(permissions.value)
|
||||
else:
|
||||
fields['permissions'] = '0'
|
||||
fields["permissions"] = "0"
|
||||
|
||||
actual_colour = colour or color or Colour.default()
|
||||
if isinstance(actual_colour, int):
|
||||
fields['color'] = actual_colour
|
||||
fields["color"] = actual_colour
|
||||
else:
|
||||
fields['color'] = actual_colour.value
|
||||
fields["color"] = actual_colour.value
|
||||
|
||||
if hoist is not MISSING:
|
||||
fields['hoist'] = hoist
|
||||
fields["hoist"] = hoist
|
||||
|
||||
if mentionable is not MISSING:
|
||||
fields['mentionable'] = mentionable
|
||||
fields["mentionable"] = mentionable
|
||||
|
||||
if name is not MISSING:
|
||||
fields['name'] = name
|
||||
fields["name"] = name
|
||||
|
||||
data = await self._state.http.create_role(self.id, reason=reason, **fields)
|
||||
role = Role(guild=self, data=data, state=self._state)
|
||||
@@ -2587,12 +2592,12 @@ class Guild(Hashable):
|
||||
A list of all the roles in the guild.
|
||||
"""
|
||||
if not isinstance(positions, dict):
|
||||
raise InvalidArgument('positions parameter expects a dict.')
|
||||
raise InvalidArgument("positions parameter expects a dict.")
|
||||
|
||||
role_positions: List[Dict[str, Any]] = []
|
||||
for role, position in positions.items():
|
||||
|
||||
payload = {'id': role.id, 'position': position}
|
||||
payload = {"id": role.id, "position": position}
|
||||
|
||||
role_positions.append(payload)
|
||||
|
||||
@@ -2665,16 +2670,16 @@ class Guild(Hashable):
|
||||
The edited welcome screen.
|
||||
"""
|
||||
try:
|
||||
welcome_channels = kwargs['welcome_channels']
|
||||
welcome_channels = kwargs["welcome_channels"]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
welcome_channels_serialised = []
|
||||
for wc in welcome_channels:
|
||||
if not isinstance(wc, WelcomeChannel):
|
||||
raise InvalidArgument('welcome_channels parameter must be a list of WelcomeChannel')
|
||||
raise InvalidArgument("welcome_channels parameter must be a list of WelcomeChannel")
|
||||
welcome_channels_serialised.append(wc.to_dict())
|
||||
kwargs['welcome_channels'] = welcome_channels_serialised
|
||||
kwargs["welcome_channels"] = welcome_channels_serialised
|
||||
|
||||
if kwargs:
|
||||
data = await self._state.http.edit_welcome_screen(self.id, kwargs)
|
||||
@@ -2793,19 +2798,19 @@ class Guild(Hashable):
|
||||
|
||||
# we start with { code: abc }
|
||||
payload = await self._state.http.get_vanity_code(self.id)
|
||||
if not payload['code']:
|
||||
if not payload["code"]:
|
||||
return None
|
||||
|
||||
# get the vanity URL channel since default channels aren't
|
||||
# reliable or a thing anymore
|
||||
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']))
|
||||
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"]))
|
||||
payload["revoked"] = False
|
||||
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)
|
||||
|
||||
# TODO: use MISSING when async iterators get refactored
|
||||
@@ -2882,7 +2887,13 @@ class Guild(Hashable):
|
||||
action = action.value
|
||||
|
||||
return AuditLogIterator(
|
||||
self, before=before, after=after, limit=limit, oldest_first=oldest_first, user_id=user_id, action_type=action
|
||||
self,
|
||||
before=before,
|
||||
after=after,
|
||||
limit=limit,
|
||||
oldest_first=oldest_first,
|
||||
user_id=user_id,
|
||||
action_type=action,
|
||||
)
|
||||
|
||||
async def widget(self) -> Widget:
|
||||
@@ -2936,9 +2947,9 @@ class Guild(Hashable):
|
||||
"""
|
||||
payload = {}
|
||||
if channel is not MISSING:
|
||||
payload['channel_id'] = None if channel is None else channel.id
|
||||
payload["channel_id"] = None if channel is None else channel.id
|
||||
if enabled is not MISSING:
|
||||
payload['enabled'] = enabled
|
||||
payload["enabled"] = enabled
|
||||
|
||||
await self._state.http.edit_widget(self.id, payload=payload)
|
||||
|
||||
@@ -2964,7 +2975,7 @@ class Guild(Hashable):
|
||||
"""
|
||||
|
||||
if not self._state._intents.members:
|
||||
raise ClientException('Intents.members must be enabled to use this.')
|
||||
raise ClientException("Intents.members must be enabled to use this.")
|
||||
|
||||
if not self._state.is_guild_evicted(self):
|
||||
return await self._state.chunk_guild(self, cache=cache)
|
||||
@@ -3025,20 +3036,20 @@ class Guild(Hashable):
|
||||
"""
|
||||
|
||||
if presences and not self._state._intents.presences:
|
||||
raise ClientException('Intents.presences must be enabled to use this.')
|
||||
raise ClientException("Intents.presences must be enabled to use this.")
|
||||
|
||||
if query is None:
|
||||
if query == '':
|
||||
raise ValueError('Cannot pass empty query string.')
|
||||
if query == "":
|
||||
raise ValueError("Cannot pass empty query string.")
|
||||
|
||||
if user_ids is None:
|
||||
raise ValueError('Must pass either query or user_ids')
|
||||
raise ValueError("Must pass either query or user_ids")
|
||||
|
||||
if user_ids is not None and query is not None:
|
||||
raise ValueError('Cannot pass both query and user_ids')
|
||||
raise ValueError("Cannot pass both query and user_ids")
|
||||
|
||||
if user_ids is not None and not user_ids:
|
||||
raise ValueError('user_ids must contain at least 1 value')
|
||||
raise ValueError("user_ids must contain at least 1 value")
|
||||
|
||||
limit = min(100, limit or 5)
|
||||
return await self._state.query_members(
|
||||
|
||||
Reference in New Issue
Block a user