From f4cadaf0ccc291f01434d567acde8909b46f218f Mon Sep 17 00:00:00 2001 From: Rapptz Date: Mon, 16 Jan 2017 18:19:18 -0500 Subject: [PATCH] Fix bug with GuildChannel.edit and Role.edit with positions. I did not update the HTTP code for these two methods. --- discord/abc.py | 6 +++--- discord/http.py | 8 ++++++++ discord/role.py | 3 +-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/discord/abc.py b/discord/abc.py index 2a85d7f22..e8ca3db47 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -124,8 +124,8 @@ class GuildChannel: raise InvalidArgument('Channel position cannot be less than 0.') http = self._state.http - url = '{0}/{1.guild.id}/channels'.format(http.GUILDS, self) - channels = [c for c in self.guild.channels if isinstance(c, type(self))] + cls = type(self) + channels = [c for c in self.guild.channels if isinstance(c, cls)] if position >= len(channels): raise InvalidArgument('Channel position cannot be greater than {}'.format(len(channels) - 1)) @@ -143,7 +143,7 @@ class GuildChannel: channels.insert(position, self) payload = [{'id': c.id, 'position': index } for index, c in enumerate(channels)] - yield from http.patch(url, json=payload, bucket='move_channel') + yield from http.move_channel_position(self.guild.id, payload) def _fill_overwrites(self, data): self._overwrites = [] diff --git a/discord/http.py b/discord/http.py index f2d32e05e..cb0a666e4 100644 --- a/discord/http.py +++ b/discord/http.py @@ -475,6 +475,10 @@ class HTTPClient: return self.request(Route('PATCH', '/channels/{channel_id}', channel_id=channel_id), json=payload) + def move_channel_position(self, guild_id, positions): + r = Route('PATCH', '/guilds/{guild_id}/channels', guild_id=guild_id) + return self.request(r, json=positions) + def create_channel(self, guild_id, name, channe_type, permission_overwrites=None): payload = { 'name': name, @@ -598,6 +602,10 @@ class HTTPClient: r = Route('POST', '/guilds/{guild_id}/roles', guild_id=guild_id) return self.request(r, json=fields) + def move_role_position(self, guild_id, positions): + r = Route('PATCH', '/guilds/{guild_id}/roles', guild_id=guild_id) + return self.request(r, json=positions) + def add_role(self, guild_id, user_id, role_id): r = Route('PUT', '/guilds/{guild_id}/members/{user_id}/roles/{role_id}', guild_id=guild_id, user_id=user_id, role_id=role_id) diff --git a/discord/role.py b/discord/role.py index bb3ba8ec1..dd39a02e3 100644 --- a/discord/role.py +++ b/discord/role.py @@ -175,7 +175,6 @@ class Role(Hashable): return # Save discord the extra request. http = self._state.http - url = '{0}/{1}/roles'.format(http.GUILDS, self.guild.id) change_range = range(min(self.position, position), max(self.position, position) + 1) sorted_roles = sorted((x for x in self.guild.roles if x.position in change_range and x.id != self.id), @@ -189,7 +188,7 @@ class Role(Hashable): roles.append(self.id) payload = [{"id": z[0], "position": z[1]} for z in zip(roles, change_range)] - yield from http.patch(url, json=payload, bucket='move_role') + yield from http.move_role_position(role.guild.id, payload) @asyncio.coroutine def edit(self, **fields):