Browse Source

Add VoiceChannel.video_quality_mode

pull/6747/head
z03h 4 years ago
committed by GitHub
parent
commit
304229071f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      discord/abc.py
  2. 9
      discord/audit_logs.py
  3. 23
      discord/channel.py
  4. 8
      discord/enums.py
  5. 4
      discord/guild.py
  6. 2
      discord/http.py
  7. 33
      docs/api.rst

9
discord/abc.py

@ -31,7 +31,7 @@ from typing import TYPE_CHECKING, Optional, Protocol, runtime_checkable
from .iterators import HistoryIterator from .iterators import HistoryIterator
from .context_managers import Typing from .context_managers import Typing
from .enums import ChannelType from .enums import ChannelType, VideoQualityMode
from .errors import InvalidArgument, ClientException from .errors import InvalidArgument, ClientException
from .mentions import AllowedMentions from .mentions import AllowedMentions
from .permissions import PermissionOverwrite, Permissions from .permissions import PermissionOverwrite, Permissions
@ -266,6 +266,13 @@ class GuildChannel(Protocol):
else: else:
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)
try:
video_quality_mode = options.pop('video_quality_mode')
except KeyError:
pass
else:
options['video_quality_mode'] = int(video_quality_mode)
lock_permissions = options.pop('sync_permissions', False) lock_permissions = options.pop('sync_permissions', False)
try: try:

9
discord/audit_logs.py

@ -102,6 +102,12 @@ def _transform_overwrites(entry, data):
return overwrites return overwrites
def _transform_voiceregion(entry, data):
return enums.try_enum(enums.VoiceRegion, data)
def _transform_video_quality_mode(entry, data):
return enums.try_enum(enums.VideoQualityMode, data)
class AuditLogDiff: class AuditLogDiff:
def __len__(self): def __len__(self):
return len(self.__dict__) return len(self.__dict__)
@ -134,6 +140,9 @@ class AuditLogChanges:
'avatar_hash': ('avatar', None), 'avatar_hash': ('avatar', None),
'rate_limit_per_user': ('slowmode_delay', None), 'rate_limit_per_user': ('slowmode_delay', None),
'default_message_notifications': ('default_notifications', _transform_default_notifications), 'default_message_notifications': ('default_notifications', _transform_default_notifications),
'region': (None, _transform_voiceregion),
'rtc_region': (None, _transform_voiceregion),
'video_quality_mode': (None, _transform_video_quality_mode),
} }
def __init__(self, entry, data: List[AuditLogChangePayload]): def __init__(self, entry, data: List[AuditLogChangePayload]):

23
discord/channel.py

@ -27,7 +27,7 @@ import asyncio
import discord.abc import discord.abc
from .permissions import Permissions from .permissions import Permissions
from .enums import ChannelType, try_enum, VoiceRegion from .enums import ChannelType, try_enum, VoiceRegion, VideoQualityMode
from .mixins import Hashable from .mixins import Hashable
from . import utils from . import utils
from .asset import Asset from .asset import Asset
@ -541,7 +541,7 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
class VocalGuildChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hashable): class VocalGuildChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hashable):
__slots__ = ('name', 'id', 'guild', 'bitrate', 'user_limit', __slots__ = ('name', 'id', 'guild', 'bitrate', 'user_limit',
'_state', 'position', '_overwrites', 'category_id', '_state', 'position', '_overwrites', 'category_id',
'rtc_region') 'rtc_region', 'video_quality_mode')
def __init__(self, *, state, guild, data): def __init__(self, *, state, guild, data):
self._state = state self._state = state
@ -560,6 +560,7 @@ class VocalGuildChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hasha
self.rtc_region = data.get('rtc_region') self.rtc_region = data.get('rtc_region')
if self.rtc_region: if self.rtc_region:
self.rtc_region = try_enum(VoiceRegion, self.rtc_region) self.rtc_region = try_enum(VoiceRegion, self.rtc_region)
self.video_quality_mode = try_enum(VideoQualityMode, data.get('video_quality_mode', 1))
self.category_id = utils._get_as_snowflake(data, 'parent_id') self.category_id = utils._get_as_snowflake(data, 'parent_id')
self.position = data['position'] self.position = data['position']
self.bitrate = data.get('bitrate') self.bitrate = data.get('bitrate')
@ -654,6 +655,10 @@ class VoiceChannel(VocalGuildChannel):
A value of ``None`` indicates automatic voice region detection. A value of ``None`` indicates automatic voice region detection.
.. versionadded:: 1.7 .. versionadded:: 1.7
video_quality_mode: :class:`VideoQualityMode`
The camera video quality for the voice channel's participants.
.. versionadded:: 2.0
""" """
__slots__ = () __slots__ = ()
@ -665,6 +670,7 @@ class VoiceChannel(VocalGuildChannel):
('rtc_region', self.rtc_region), ('rtc_region', self.rtc_region),
('position', self.position), ('position', self.position),
('bitrate', self.bitrate), ('bitrate', self.bitrate),
('video_quality_mode', self.video_quality_mode),
('user_limit', self.user_limit), ('user_limit', self.user_limit),
('category_id', self.category_id) ('category_id', self.category_id)
] ]
@ -720,6 +726,10 @@ class VoiceChannel(VocalGuildChannel):
A value of ``None`` indicates automatic voice region detection. A value of ``None`` indicates automatic voice region detection.
.. versionadded:: 1.7 .. versionadded:: 1.7
video_quality_mode: :class:`VideoQualityMode`
The camera video quality for the voice channel's participants.
.. versionadded:: 2.0
Raises Raises
------ ------
@ -778,6 +788,10 @@ class StageChannel(VocalGuildChannel):
rtc_region: Optional[:class:`VoiceRegion`] rtc_region: Optional[:class:`VoiceRegion`]
The region for the stage channel's voice communication. The region for the stage channel's voice communication.
A value of ``None`` indicates automatic voice region detection. A value of ``None`` indicates automatic voice region detection.
video_quality_mode: :class:`VideoQualityMode`
The camera video quality for the stage channel's participants.
.. versionadded:: 2.0
""" """
__slots__ = ('topic',) __slots__ = ('topic',)
@ -789,6 +803,7 @@ class StageChannel(VocalGuildChannel):
('rtc_region', self.rtc_region), ('rtc_region', self.rtc_region),
('position', self.position), ('position', self.position),
('bitrate', self.bitrate), ('bitrate', self.bitrate),
('video_quality_mode', self.video_quality_mode),
('user_limit', self.user_limit), ('user_limit', self.user_limit),
('category_id', self.category_id) ('category_id', self.category_id)
] ]
@ -845,6 +860,10 @@ class StageChannel(VocalGuildChannel):
rtc_region: Optional[:class:`VoiceRegion`] rtc_region: Optional[:class:`VoiceRegion`]
The new region for the stage channel's voice communication. The new region for the stage channel's voice communication.
A value of ``None`` indicates automatic voice region detection. A value of ``None`` indicates automatic voice region detection.
video_quality_mode: :class:`VideoQualityMode`
The camera video quality for the stage channel's participants.
.. versionadded:: 2.0
Raises Raises
------ ------

8
discord/enums.py

@ -46,6 +46,7 @@ __all__ = (
'ExpireBehaviour', 'ExpireBehaviour',
'ExpireBehavior', 'ExpireBehavior',
'StickerType', 'StickerType',
'VideoQualityMode',
) )
def _create_value_cls(name): def _create_value_cls(name):
@ -428,6 +429,13 @@ class InteractionType(Enum):
ping = 1 ping = 1
application_command = 2 application_command = 2
class VideoQualityMode(Enum):
auto = 1
full = 2
def __int__(self):
return self.value
T = TypeVar('T') T = TypeVar('T')
def create_unknown_value(cls: Type[T], val: Any) -> T: def create_unknown_value(cls: Type[T], val: Any) -> T:

4
discord/guild.py

@ -867,6 +867,10 @@ class Guild(Hashable):
A value of ``None`` indicates automatic voice region detection. A value of ``None`` indicates automatic voice region detection.
.. versionadded:: 1.7 .. versionadded:: 1.7
video_quality_mode: :class:`VideoQualityMode`
The camera video quality for the voice channel's participants.
.. versionadded:: 2.0
Raises Raises
------ ------

2
discord/http.py

@ -681,6 +681,7 @@ class HTTPClient:
'rate_limit_per_user', 'rate_limit_per_user',
'type', 'type',
'rtc_region', 'rtc_region',
'video_quality_mode',
) )
payload = {k: v for k, v in options.items() if k in valid_keys} payload = {k: v for k, v in options.items() if k in valid_keys}
return self.request(r, reason=reason, json=payload) return self.request(r, reason=reason, json=payload)
@ -705,6 +706,7 @@ class HTTPClient:
'permission_overwrites', 'permission_overwrites',
'rate_limit_per_user', 'rate_limit_per_user',
'rtc_region', 'rtc_region',
'video_quality_mode',
) )
payload.update({k: v for k, v in options.items() if k in valid_keys and v is not None}) payload.update({k: v for k, v in options.items() if k in valid_keys and v is not None})

33
docs/api.rst

@ -1413,6 +1413,8 @@ of :class:`enum.Enum`.
- :attr:`~AuditLogDiff.overwrites` - :attr:`~AuditLogDiff.overwrites`
- :attr:`~AuditLogDiff.topic` - :attr:`~AuditLogDiff.topic`
- :attr:`~AuditLogDiff.bitrate` - :attr:`~AuditLogDiff.bitrate`
- :attr:`~AuditLogDiff.rtc_region`
- :attr:`~AuditLogDiff.video_quality_mode`
.. attribute:: channel_delete .. attribute:: channel_delete
@ -1945,6 +1947,20 @@ of :class:`enum.Enum`.
Represents a sticker with a lottie image. Represents a sticker with a lottie image.
.. class:: VideoQualityMode
Represents the camera video quality mode for voice channel participants.
.. versionadded:: 2.0
.. attribute:: auto
Represents auto camera video quality.
.. attribute:: full
Represents full camera video quality.
Async Iterator Async Iterator
---------------- ----------------
@ -2482,6 +2498,23 @@ AuditLogDiff
:type: :class:`int` :type: :class:`int`
.. attribute:: rtc_region
The region for the voice channel’s voice communication.
A value of ``None`` indicates automatic voice region detection.
See also :attr:`VoiceChannel.rtc_region`.
:type: :class:`VoiceRegion`
.. attribute:: video_quality_mode
The camera video quality for the voice channel's participants.
See also :attr:`VoiceChannel.video_quality_mode`.
:type: :class:`VideoQualityMode`
.. this is currently missing the following keys: reason and application_id .. this is currently missing the following keys: reason and application_id
I'm not sure how to about porting these I'm not sure how to about porting these

Loading…
Cancel
Save