From 6e0902ef57a5d1d4afb7581f2188e8b9e25c457d Mon Sep 17 00:00:00 2001 From: Rapptz Date: Tue, 18 Jul 2017 16:36:26 -0400 Subject: [PATCH] Implement new-style NSFW channels. No idea how these will change in the future but this is barebones enough for now. --- discord/channel.py | 7 +++++-- discord/http.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/discord/channel.py b/discord/channel.py index b30c9b048..9aff327f9 100644 --- a/discord/channel.py +++ b/discord/channel.py @@ -77,7 +77,7 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable): top channel is position 0. """ - __slots__ = ( 'name', 'id', 'guild', 'topic', '_state', + __slots__ = ( 'name', 'id', 'guild', 'topic', '_state', 'nsfw', 'position', '_overwrites' ) def __init__(self, *, state, guild, data): @@ -93,6 +93,7 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable): self.name = data['name'] self.topic = data.get('topic') self.position = data['position'] + self.nsfw = data.get('nsfw', False) self._fill_overwrites(data) @asyncio.coroutine @@ -117,7 +118,7 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable): def is_nsfw(self): """Checks if the channel is NSFW.""" n = self.name - return n == 'nsfw' or n[:5] == 'nsfw-' + return self.nsfw or n == 'nsfw' or n[:5] == 'nsfw-' @asyncio.coroutine def edit(self, *, reason=None, **options): @@ -136,6 +137,8 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable): The new channel's topic. position: int The new channel's position. + nsfw: bool + To mark the channel as NSFW or not. reason: Optional[str] The reason for editing this channel. Shows up on the audit log. diff --git a/discord/http.py b/discord/http.py index 41bc25654..e59ea0e26 100644 --- a/discord/http.py +++ b/discord/http.py @@ -489,7 +489,7 @@ class HTTPClient: def edit_channel(self, channel_id, *, reason=None, **options): r = Route('PATCH', '/channels/{channel_id}', channel_id=channel_id) - valid_keys = ('name', 'topic', 'bitrate', 'user_limit', 'position') + valid_keys = ('name', 'topic', 'bitrate', 'nsfw', 'user_limit', 'position') payload = { k: v for k, v in options.items() if k in valid_keys }