aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2015-10-17 17:54:16 -0400
committerRapptz <[email protected]>2015-10-17 17:54:16 -0400
commite2af5d545a389c7abba492ebefb5deaf8f8514d3 (patch)
treea34c5ee95f77f14355c0dae5e2f5bee17e415008
parentChange Client.edit_role to be less stateful. (diff)
downloaddiscord.py-e2af5d545a389c7abba492ebefb5deaf8f8514d3.tar.xz
discord.py-e2af5d545a389c7abba492ebefb5deaf8f8514d3.zip
Add Client.create_role to create a server-wide role.
-rw-r--r--discord/client.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/discord/client.py b/discord/client.py
index c73db4de..284a3faa 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.