diff --git a/discord/__init__.py b/discord/__init__.py index c758a0bf6..7fd5eb173 100644 --- a/discord/__init__.py +++ b/discord/__init__.py @@ -15,7 +15,7 @@ __title__ = 'discord' __author__ = 'Rapptz' __license__ = 'MIT' __copyright__ = 'Copyright 2015-2016 Rapptz' -__version__ = '0.16.3' +__version__ = '0.16.4' from .client import Client, AppInfo, ChannelPermissions from .user import User @@ -43,7 +43,7 @@ import logging VersionInfo = namedtuple('VersionInfo', 'major minor micro releaselevel serial') -version_info = VersionInfo(major=0, minor=16, micro=3, releaselevel='final', serial=0) +version_info = VersionInfo(major=0, minor=16, micro=4, releaselevel='final', serial=0) try: from logging import NullHandler diff --git a/discord/client.py b/discord/client.py index fb2cc791b..3758c8c1b 100644 --- a/discord/client.py +++ b/discord/client.py @@ -2042,7 +2042,6 @@ class Client: if position < 0: raise InvalidArgument('Channel position cannot be less than 0.') - url = '{0}/{1.server.id}/channels'.format(self.http.GUILDS, channel) channels = [c for c in channel.server.channels if c.type is channel.type] if position >= len(channels): @@ -2061,7 +2060,7 @@ class Client: channels.insert(position, channel) payload = [{'id': c.id, 'position': index } for index, c in enumerate(channels)] - yield from self.http.patch(url, json=payload, bucket='move_channel') + yield from self.http.move_channel_position(channel.server.id, payload) @asyncio.coroutine def create_channel(self, server, name, *overwrites, type=None): @@ -2781,8 +2780,6 @@ class Client: if role.position == position: return # Save discord the extra request. - url = '{0}/{1.id}/roles'.format(self.http.GUILDS, server) - change_range = range(min(role.position, position), max(role.position, position) + 1) roles = [r.id for r in sorted(filter(lambda x: (x.position in change_range) and x != role, server.roles), key=lambda x: x.position)] @@ -2793,7 +2790,7 @@ class Client: roles.append(role.id) payload = [{"id": z[0], "position": z[1]} for z in zip(roles, change_range)] - yield from self.http.patch(url, json=payload, bucket='move_role') + yield from self.http.move_role_position(server.id, payload) @asyncio.coroutine def edit_role(self, server, role, **fields): diff --git a/discord/http.py b/discord/http.py index 69872d84a..3bed652e8 100644 --- a/discord/http.py +++ b/discord/http.py @@ -468,8 +468,6 @@ class HTTPClient: # Channel management def edit_channel(self, channel_id, **options): - url = '{0.CHANNELS}/{1}'.format(self, channel_id) - valid_keys = ('name', 'topic', 'bitrate', 'user_limit', 'position') payload = { k: v for k, v in options.items() if k in valid_keys @@ -477,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, @@ -600,6 +602,10 @@ class HTTPClient: r = Route('POST', '/guilds/{guild_id}/roles', guild_id=guild_id) return self.request(r) + 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)