aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNCPlayz <[email protected]>2019-03-25 22:31:03 +0000
committerRapptz <[email protected]>2019-04-06 19:19:47 -0400
commit1d701f32b611f421bdd404f2ef523b0c876af1ce (patch)
treee1d8e1de5c231d934a681d0220b13148f6eb78b2
parentRedesign bulk delete events (diff)
downloaddiscord.py-1d701f32b611f421bdd404f2ef523b0c876af1ce.tar.xz
discord.py-1d701f32b611f421bdd404f2ef523b0c876af1ce.zip
Add fetch custom emoji, all custom emojis; Add user property to Emoji
-rw-r--r--discord/emoji.py8
-rw-r--r--discord/guild.py44
-rw-r--r--discord/http.py6
3 files changed, 57 insertions, 1 deletions
diff --git a/discord/emoji.py b/discord/emoji.py
index 5a31f418..d0cd15d4 100644
--- a/discord/emoji.py
+++ b/discord/emoji.py
@@ -26,6 +26,7 @@ DEALINGS IN THE SOFTWARE.
from .asset import Asset
from . import utils
+from .user import User
class PartialEmoji:
"""Represents a "partial" emoji.
@@ -164,8 +165,11 @@ class Emoji:
If this emoji is managed by a Twitch integration.
guild_id: :class:`int`
The guild ID the emoji belongs to.
+ user: Optional[:class:`User`]
+ The user that created the emoji. This can only be retrieved using :meth:`Guild.fetch_emoji`.
"""
- __slots__ = ('require_colons', 'animated', 'managed', 'id', 'name', '_roles', 'guild_id', '_state')
+ __slots__ = ('require_colons', 'animated', 'managed', 'id', 'name', '_roles', 'guild_id',
+ '_state', 'user')
def __init__(self, *, guild, state, data):
self.guild_id = guild.id
@@ -179,6 +183,8 @@ class Emoji:
self.name = emoji['name']
self.animated = emoji.get('animated', False)
self._roles = utils.SnowflakeList(map(int, emoji.get('roles', [])))
+ user = emoji.get('user')
+ self.user = User(state=self._state, data=user) if user else None
def _iterator(self):
for attr in self.__slots__:
diff --git a/discord/guild.py b/discord/guild.py
index ddaf241c..d0d6daa8 100644
--- a/discord/guild.py
+++ b/discord/guild.py
@@ -31,6 +31,7 @@ from . import utils
from .role import Role
from .member import Member, VoiceState
from .activity import create_activity
+from .emoji import Emoji
from .permissions import PermissionOverwrite
from .colour import Colour
from .errors import InvalidArgument, ClientException
@@ -1143,6 +1144,49 @@ class Guild(Hashable):
return result
+ async def fetch_emojis(self):
+ """|coro|
+
+ Retrieves all custom :class:`Emoji`s from the guild.
+
+ Raises
+ ---------
+ HTTPException
+ An error occurred fetching the emojis.
+
+ Returns
+ --------
+ List[:class:`Emoji`]
+ The retrieved emojis.
+ """
+ data = await self._state.http.get_all_custom_emojis(self.id)
+ return [Emoji(guild=self, state=self._state, data=d) for d in data]
+
+ async def fetch_emoji(self, emoji_id):
+ """|coro|
+
+ Retrieves a custom :class:`Emoji` from the guild.
+
+ Parameters
+ -------------
+ emoji_id: :class:`int`
+ The emoji's ID.
+
+ Raises
+ ---------
+ NotFound
+ The emoji requested could not be found.
+ HTTPException
+ An error occurred fetching the emoji.
+
+ Returns
+ --------
+ :class:`Emoji`
+ The retrieved emoji.
+ """
+ data = await self._state.http.get_custom_emoji(self.id, emoji_id)
+ return Emoji(guild=self, state=self._state, data=data)
+
async def create_custom_emoji(self, *, name, image, roles=None, reason=None):
r"""|coro|
diff --git a/discord/http.py b/discord/http.py
index 3fe82d5c..2f68906f 100644
--- a/discord/http.py
+++ b/discord/http.py
@@ -627,6 +627,12 @@ class HTTPClient:
}
return self.request(Route('GET', '/guilds/{guild_id}/prune', guild_id=guild_id), params=params)
+ def get_all_custom_emojis(self, guild_id):
+ return self.request(Route('GET', '/guilds/{guild_id}/emojis', guild_id=guild_id))
+
+ def get_custom_emoji(self, guild_id, emoji_id):
+ return self.request(Route('GET', '/guilds/{guild_id}/emojis/{emoji_id}', guild_id=guild_id, emoji_id=emoji_id))
+
def create_custom_emoji(self, guild_id, name, image, *, roles=None, reason=None):
payload = {
'name': name,