aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/guild.py24
-rw-r--r--discord/http.py3
2 files changed, 27 insertions, 0 deletions
diff --git a/discord/guild.py b/discord/guild.py
index b706c905..a3f36c47 100644
--- a/discord/guild.py
+++ b/discord/guild.py
@@ -1521,6 +1521,30 @@ class Guild(Hashable):
data = await self._state.http.create_custom_emoji(self.id, name, img, roles=roles, reason=reason)
return self._state.store_emoji(self, data)
+ async def fetch_roles(self):
+ """|coro|
+
+ Retrieves all :class:`Role` that the guild has.
+
+ .. note::
+
+ This method is an API call. For general usage, consider :attr:`roles` instead.
+
+ .. versionadded:: 1.3.0
+
+ Raises
+ -------
+ HTTPException
+ Retrieving the roles failed.
+
+ Returns
+ -------
+ List[:class:`Role`]
+ All roles in the guild.
+ """
+ data = await self._state.http.get_roles(self.id)
+ return [Role(guild=self, state=self._state, data=d) for d in data]
+
async def create_role(self, *, reason=None, **fields):
"""|coro|
diff --git a/discord/http.py b/discord/http.py
index 17ca74db..79c03db2 100644
--- a/discord/http.py
+++ b/discord/http.py
@@ -722,6 +722,9 @@ class HTTPClient:
# Role management
+ def get_roles(self, guild_id):
+ return self.request(Route('GET', '/guilds/{guild_id}/roles', guild_id=guild_id))
+
def edit_role(self, guild_id, role_id, *, reason=None, **fields):
r = Route('PATCH', '/guilds/{guild_id}/roles/{role_id}', guild_id=guild_id, role_id=role_id)
valid_keys = ('name', 'permissions', 'color', 'hoist', 'mentionable')