From e2af5d545a389c7abba492ebefb5deaf8f8514d3 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sat, 17 Oct 2015 17:54:16 -0400 Subject: [PATCH] Add Client.create_role to create a server-wide role. --- discord/client.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/discord/client.py b/discord/client.py index c73db4de2..284a3faa8 100644 --- a/discord/client.py +++ b/discord/client.py @@ -1080,6 +1080,28 @@ class Client(object): log.debug(request_logging_format.format(response=response, name='delete_role')) return is_response_successful(response) + def create_role(self, server, **fields): + """Creates a :class:`Role`. + + The fields parameter is the same as :func:`edit_role`. + + :return: The :class:`Role` if creation was successful, None otherwise. + """ + + url = '{0}/{1.id}/roles'.format(endpoints.SERVERS, server) + response = requests.post(url, headers=self.headers) + log.debug(request_logging_format.format(response=response, name='create_role')) + + if is_response_successful(response): + data = response.json() + role = Role(**data) + if self.edit_role(server, role, **fields): + # we have to call edit because you can't pass a payload to the + # http request currently. + return role + + return None + def change_status(self, game_id=None, idle=False): """Changes the client's status.