aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2017-01-16 18:19:18 -0500
committerRapptz <[email protected]>2017-01-16 18:19:18 -0500
commitf4cadaf0ccc291f01434d567acde8909b46f218f (patch)
treee7f3d52db1ceda799e3b24fb560c3b935d6d7e32
parentFix AutoShardedClient docstring. (diff)
downloaddiscord.py-f4cadaf0ccc291f01434d567acde8909b46f218f.tar.xz
discord.py-f4cadaf0ccc291f01434d567acde8909b46f218f.zip
Fix bug with GuildChannel.edit and Role.edit with positions.
I did not update the HTTP code for these two methods.
-rw-r--r--discord/abc.py6
-rw-r--r--discord/http.py8
-rw-r--r--discord/role.py3
3 files changed, 12 insertions, 5 deletions
diff --git a/discord/abc.py b/discord/abc.py
index 2a85d7f2..e8ca3db4 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 f2d32e05..cb0a666e 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 bb3ba8ec..dd39a02e 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):