Browse Source

Implement top emoji fetching

pull/10109/head
dolfies 2 years ago
parent
commit
e51b3e393d
  1. 24
      discord/guild.py
  2. 3
      discord/http.py
  3. 11
      discord/types/emoji.py

24
discord/guild.py

@ -2745,6 +2745,30 @@ class Guild(Hashable):
data = await self._state.http.create_guild_scheduled_event(self.id, **payload, reason=reason)
return ScheduledEvent(state=self._state, data=data)
async def top_emojis(self) -> List[Union[Emoji, PartialEmoji]]:
"""|coro|
Retrieves the most used custom emojis in the guild.
.. versionadded:: 2.0
Raises
-------
HTTPException
Retrieving the top emojis failed.
Returns
--------
List[Union[:class:`Emoji`, :class:`PartialEmoji`]]
The most used emojis. Falls back to a bare :class:`PartialEmoji` if the emoji is not found in cache.
"""
state = self._state
data = await state.http.get_top_emojis(self.id)
return [
self._state.get_emoji(int(e['emoji_id'])) or PartialEmoji.with_state(state, name='', id=int(e['emoji_id']))
for e in data['items']
]
async def fetch_emojis(self) -> List[Emoji]:
r"""|coro|

3
discord/http.py

@ -1614,6 +1614,9 @@ class HTTPClient:
def get_custom_emoji(self, guild_id: Snowflake, emoji_id: Snowflake) -> Response[emoji.Emoji]:
return self.request(Route('GET', '/guilds/{guild_id}/emojis/{emoji_id}', guild_id=guild_id, emoji_id=emoji_id))
def get_top_emojis(self, guild_id: Snowflake) -> Response[emoji.TopEmojis]:
return self.request(Route('GET', '/guilds/{guild_id}/top-emojis', guild_id=guild_id))
def get_emoji_guild(self, emoji_id: Snowflake) -> Response[guild.Guild]:
return self.request(Route('GET', '/emojis/{emoji_id}', emoji_id=emoji_id))

11
discord/types/emoji.py

@ -22,7 +22,7 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
"""
from typing import Optional, TypedDict
from typing import List, Optional, TypedDict
from .snowflake import Snowflake, SnowflakeList
from .user import User
@ -44,3 +44,12 @@ class Emoji(PartialEmoji, total=False):
class EditEmoji(TypedDict):
name: str
roles: Optional[SnowflakeList]
class TopEmoji(TypedDict):
emoji_id: Snowflake
emoji_rank: int
class TopEmojis(TypedDict):
items: List[TopEmoji]

Loading…
Cancel
Save