From b0d3ca9addca428298826c80c399c1e3a88facac Mon Sep 17 00:00:00 2001 From: Miwory Date: Thu, 11 Dec 2025 16:16:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20get=5Fglobal=5Femotes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/twitchclient/api.py | 25 ++++++++++++++++++++++++- src/twitchclient/schema.py | 4 ++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/twitchclient/api.py b/src/twitchclient/api.py index d0ce209..bdf8db3 100644 --- a/src/twitchclient/api.py +++ b/src/twitchclient/api.py @@ -753,7 +753,7 @@ class TwitchAPIClient(AioHTTPXClient): cache_time: int | None = None, ): req = await self.get( - '/emotes', + '/chat/emotes', headers=self.clean_dict( { 'Authorization': f'Bearer {access_token}', @@ -772,3 +772,26 @@ class TwitchAPIClient(AioHTTPXClient): case _: raise s.Error(req.status_code, 'Internal Server Error') + + async def get_global_emotes( + self, access_token: str, cache_time: int | None = None + ): + req = await self.get( + '/chat/emotes/global', + headers=self.clean_dict( + { + 'Authorization': f'Bearer {access_token}', + 'X-Cache-TTL': cache_time, + } + ), + ) + + match req.status_code: + case st.OK: + return s.GlobalEmotes.model_validate(req.json()) + + case st.UNAUTHORIZED: + raise s.Error(req.status_code, req.json()['message']) + + case _: + raise s.Error(req.status_code, 'Internal Server Error') diff --git a/src/twitchclient/schema.py b/src/twitchclient/schema.py index 1eacdd0..fd9da2c 100644 --- a/src/twitchclient/schema.py +++ b/src/twitchclient/schema.py @@ -503,3 +503,7 @@ class ChannelEmotes(BaseModel): data: list[ChannelEmote] template: str + + +class GlobalEmotes(ChannelEmotes): + pass