1.0.0: Релиз #1
@ -822,3 +822,30 @@ class TwitchAPIClient(AioHTTPXClient):
|
||||
|
||||
case _:
|
||||
raise s.Error(req.status_code, 'Internal Server Error')
|
||||
|
||||
async def get_channel_chat_badges(
|
||||
self,
|
||||
access_token: str,
|
||||
broadcaster_id: int | str,
|
||||
cache_time: int | None = None,
|
||||
):
|
||||
req = await self.get(
|
||||
'/chat/badges',
|
||||
headers=self.clean_dict(
|
||||
{
|
||||
'Authorization': f'Bearer {access_token}',
|
||||
'X-Cache-TTL': cache_time,
|
||||
}
|
||||
),
|
||||
params={'broadcaster_id': broadcaster_id},
|
||||
)
|
||||
|
||||
match req.status_code:
|
||||
case st.OK:
|
||||
return s.ChannelChatBadges.model_validate(req.json())
|
||||
|
||||
case st.BAD_REQUEST | st.UNAUTHORIZED:
|
||||
raise s.Error(req.status_code, req.json()['message'])
|
||||
|
||||
case _:
|
||||
raise s.Error(req.status_code, 'Internal Server Error')
|
||||
|
||||
@ -511,3 +511,29 @@ class GlobalEmotes(ChannelEmotes):
|
||||
|
||||
class EmoteSets(ChannelEmotes):
|
||||
pass
|
||||
|
||||
|
||||
class ChannelChatBadgesVersion(BaseModel):
|
||||
model_config = ConfigDict(extra='forbid')
|
||||
|
||||
id: str
|
||||
image_url_1x: str
|
||||
image_url_2x: str
|
||||
image_url_4x: str
|
||||
title: str
|
||||
description: str
|
||||
click_action: str | None
|
||||
click_url: str | None
|
||||
|
||||
|
||||
class ChannelChatBadgesData(BaseModel):
|
||||
model_config = ConfigDict(extra='forbid')
|
||||
|
||||
set_id: str
|
||||
versions: list[ChannelChatBadgesVersion]
|
||||
|
||||
|
||||
class ChannelChatBadges(BaseModel):
|
||||
model_config = ConfigDict(extra='forbid')
|
||||
|
||||
data: list[ChannelChatBadgesData]
|
||||
|
||||
Reference in New Issue
Block a user