aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNCPlayz <[email protected]>2020-05-18 00:39:22 +0100
committerRapptz <[email protected]>2020-05-29 23:21:59 -0400
commitbd1420b5f0b9856d3bb7129a0e4353d6bd570bb0 (patch)
tree181c0a1210a9a7cddf2286c28fce1889a6578070
parentFix KeyError on Member Channels not in JSON (diff)
downloaddiscord.py-bd1420b5f0b9856d3bb7129a0e4353d6bd570bb0.tar.xz
discord.py-bd1420b5f0b9856d3bb7129a0e4353d6bd570bb0.zip
Allow editing of channel types for news and text channels
-rw-r--r--discord/abc.py10
-rw-r--r--discord/channel.py7
-rw-r--r--discord/http.py3
3 files changed, 19 insertions, 1 deletions
diff --git a/discord/abc.py b/discord/abc.py
index 7e1bc122..07046a40 100644
--- a/discord/abc.py
+++ b/discord/abc.py
@@ -31,6 +31,7 @@ from collections import namedtuple
from .iterators import HistoryIterator
from .context_managers import Typing
+from .enums import ChannelType
from .errors import InvalidArgument, ClientException, HTTPException
from .permissions import PermissionOverwrite, Permissions
from .role import Role
@@ -280,6 +281,15 @@ class GuildChannel:
perms.append(payload)
options['permission_overwrites'] = perms
+ try:
+ ch_type = options['type']
+ except KeyError:
+ pass
+ else:
+ if not isinstance(ch_type, ChannelType):
+ raise InvalidArgument('type field must be of type ChannelType')
+ options['type'] = ch_type.value
+
if options:
data = await self._state.http.edit_channel(self.id, reason=reason, **options)
self._update(self.guild, data)
diff --git a/discord/channel.py b/discord/channel.py
index 68383b8c..71e5580b 100644
--- a/discord/channel.py
+++ b/discord/channel.py
@@ -197,6 +197,9 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
.. versionchanged:: 1.3
The ``overwrites`` keyword-only parameter was added.
+ .. versionchanged:: 1.4
+ The ``type`` keyword-only parameter was added.
+
Parameters
----------
name: :class:`str`
@@ -216,6 +219,10 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
slowmode_delay: :class:`int`
Specifies the slowmode rate limit for user in this channel, in seconds.
A value of `0` disables slowmode. The maximum value possible is `21600`.
+ type: :class:`ChannelType`
+ Change the type of this text channel. Currently, only conversion between
+ :attr:`ChannelType.text` and :attr:`ChannelType.news` is supported. This
+ is only available to guilds that contain ``NEWS`` in :attr:`Guild.features`.
reason: Optional[:class:`str`]
The reason for editing this channel. Shows up on the audit log.
overwrites: :class:`dict`
diff --git a/discord/http.py b/discord/http.py
index e1653ed8..46483c04 100644
--- a/discord/http.py
+++ b/discord/http.py
@@ -529,7 +529,8 @@ class HTTPClient:
def edit_channel(self, channel_id, *, reason=None, **options):
r = Route('PATCH', '/channels/{channel_id}', channel_id=channel_id)
valid_keys = ('name', 'parent_id', 'topic', 'bitrate', 'nsfw',
- 'user_limit', 'position', 'permission_overwrites', 'rate_limit_per_user')
+ 'user_limit', 'position', 'permission_overwrites', 'rate_limit_per_user',
+ 'type')
payload = {
k: v for k, v in options.items() if k in valid_keys
}