Browse Source

Fix bug with Client.move_channel and Client.move_role.

pull/460/head v0.16.4
Rapptz 8 years ago
parent
commit
5a6a3574b1
  1. 4
      discord/__init__.py
  2. 7
      discord/client.py
  3. 10
      discord/http.py

4
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

7
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):

10
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)

Loading…
Cancel
Save