From f86ac47b2853f1331db450af296666b4d3e9802f Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sun, 24 Sep 2017 04:55:10 -0400 Subject: [PATCH] Don't use Bulk Channel Edit endpoint if not actually moving channels. Should make the category-only edit cases more straightforward since it does not rely on other guilds in the cache, outside of the category itself. --- discord/abc.py | 5 ++++- discord/http.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/discord/abc.py b/discord/abc.py index e836dda3c..83df3fabf 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -239,7 +239,10 @@ class GuildChannel: position = options.pop('position') except KeyError: if parent_id is not _undefined: - yield from self._move(self.position, parent_id=parent_id, lock_permissions=lock_permissions, reason=reason) + if lock_permissions: + category = self.guild.get_channel(parent_id) + options['permission_overwrites'] = [c._asdict() for c in category._overwrites] + options['parent_id'] = parent_id elif lock_permissions and self.category_id is not None: # if we're syncing permissions on a pre-existing channel category without changing it # we need to update the permissions to point to the pre-existing category diff --git a/discord/http.py b/discord/http.py index 1c020ee12..ab2534e20 100644 --- a/discord/http.py +++ b/discord/http.py @@ -500,7 +500,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', 'nsfw', 'user_limit', 'position', 'permission_overwrites') + valid_keys = ('name', 'parent_id', 'topic', 'bitrate', 'nsfw', 'user_limit', 'position', 'permission_overwrites') payload = { k: v for k, v in options.items() if k in valid_keys }