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) data = await self._state.http.create_guild_scheduled_event(self.id, **payload, reason=reason)
return ScheduledEvent(state=self._state, data=data) 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]: async def fetch_emojis(self) -> List[Emoji]:
r"""|coro| 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]: 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)) 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]: def get_emoji_guild(self, emoji_id: Snowflake) -> Response[guild.Guild]:
return self.request(Route('GET', '/emojis/{emoji_id}', emoji_id=emoji_id)) 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. DEALINGS IN THE SOFTWARE.
""" """
from typing import Optional, TypedDict from typing import List, Optional, TypedDict
from .snowflake import Snowflake, SnowflakeList from .snowflake import Snowflake, SnowflakeList
from .user import User from .user import User
@ -44,3 +44,12 @@ class Emoji(PartialEmoji, total=False):
class EditEmoji(TypedDict): class EditEmoji(TypedDict):
name: str name: str
roles: Optional[SnowflakeList] roles: Optional[SnowflakeList]
class TopEmoji(TypedDict):
emoji_id: Snowflake
emoji_rank: int
class TopEmojis(TypedDict):
items: List[TopEmoji]

Loading…
Cancel
Save