diff --git a/discord/guild.py b/discord/guild.py index c2a2341e7..078a7b8be 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -1400,6 +1400,8 @@ class Guild(Hashable): options['rtc_region'] = None if rtc_region is None else rtc_region if video_quality_mode is not MISSING: + if not isinstance(video_quality_mode, VideoQualityMode): + raise TypeError('video_quality_mode must be of type VideoQualityMode') options['video_quality_mode'] = video_quality_mode.value data = await self._create_channel( @@ -1415,11 +1417,14 @@ class Guild(Hashable): self, name: str, *, - topic: str, + reason: Optional[str] = None, + category: Optional[CategoryChannel] = None, position: int = MISSING, + bitrate: int = MISSING, + user_limit: int = MISSING, + rtc_region: Optional[str] = MISSING, + video_quality_mode: VideoQualityMode = MISSING, overwrites: Mapping[Union[Role, Member], PermissionOverwrite] = MISSING, - category: Optional[CategoryChannel] = None, - reason: Optional[str] = None, ) -> StageChannel: """|coro| @@ -1435,8 +1440,6 @@ class Guild(Hashable): ----------- name: :class:`str` The channel's name. - topic: :class:`str` - The new channel's topic. overwrites: Dict[Union[:class:`Role`, :class:`Member`], :class:`PermissionOverwrite`] A :class:`dict` of target (either a role or a member) to :class:`PermissionOverwrite` to apply upon creation of a channel. @@ -1448,6 +1451,23 @@ class Guild(Hashable): position: :class:`int` The position in the channel list. This is a number that starts at 0. e.g. the top channel is position 0. + bitrate: :class:`int` + The channel's preferred audio bitrate in bits per second. + + .. versionadded:: 2.2 + user_limit: :class:`int` + The channel's limit for number of members that can be in a voice channel. + + .. versionadded:: 2.2 + rtc_region: Optional[:class:`str`] + The region for the voice channel's voice communication. + A value of ``None`` indicates automatic voice region detection. + + .. versionadded:: 2.2 + video_quality_mode: :class:`VideoQualityMode` + The camera video quality for the voice channel's participants. + + .. versionadded:: 2.2 reason: Optional[:class:`str`] The reason for creating this channel. Shows up on the audit log. @@ -1466,12 +1486,24 @@ class Guild(Hashable): The channel that was just created. """ - options: Dict[str, Any] = { - 'topic': topic, - } + options = {} if position is not MISSING: options['position'] = position + if bitrate is not MISSING: + options['bitrate'] = bitrate + + if user_limit is not MISSING: + options['user_limit'] = user_limit + + if rtc_region is not MISSING: + options['rtc_region'] = None if rtc_region is None else rtc_region + + if video_quality_mode is not MISSING: + if not isinstance(video_quality_mode, VideoQualityMode): + raise TypeError('video_quality_mode must be of type VideoQualityMode') + options['video_quality_mode'] = video_quality_mode.value + data = await self._create_channel( name, overwrites=overwrites, channel_type=ChannelType.stage_voice, category=category, reason=reason, **options ) @@ -1911,7 +1943,6 @@ class Guild(Hashable): fields['system_channel_flags'] = system_channel_flags.value if any(feat is not MISSING for feat in (community, discoverable, invites_disabled)): - features = set(self.features) if community is not MISSING: @@ -3261,7 +3292,6 @@ class Guild(Hashable): role_positions = [] for role, position in positions.items(): - payload: RolePositionUpdatePayload = {'id': role.id, 'position': position} role_positions.append(payload)