mirror of
https://github.com/stoatchat/python-client-sdk.git
synced 2026-08-24 11:22:54 -04:00
86 lines
2.2 KiB
Python
Executable File
86 lines
2.2 KiB
Python
Executable File
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, Literal, TypedDict, Union
|
|
|
|
from typing_extensions import NotRequired
|
|
|
|
if TYPE_CHECKING:
|
|
from .file import File
|
|
|
|
__all__ = ("Embed", "SendableEmbed", "WebsiteEmbed", "ImageEmbed", "TextEmbed", "NoneEmbed", "YoutubeSpecial", "TwitchSpecial", "SpotifySpecial", "SoundcloudSpecial", "BandcampSpecial", "WebsiteSpecial", "JanuaryImage", "JanuaryVideo")
|
|
|
|
class YoutubeSpecial(TypedDict):
|
|
type: Literal["Youtube"]
|
|
id: str
|
|
timestamp: NotRequired[str]
|
|
|
|
class TwitchSpecial(TypedDict):
|
|
type: Literal["Twitch"]
|
|
content_type: Literal["Channel", "Video", "Clip"]
|
|
id: str
|
|
|
|
class SpotifySpecial(TypedDict):
|
|
type: Literal["Spotify"]
|
|
content_type: str
|
|
id: str
|
|
|
|
class SoundcloudSpecial(TypedDict):
|
|
type: Literal["Soundcloud"]
|
|
|
|
class BandcampSpecial(TypedDict):
|
|
type: Literal["Bandcamp"]
|
|
content_type: Literal["Album", "Track"]
|
|
id: str
|
|
|
|
WebsiteSpecial = Union[YoutubeSpecial, TwitchSpecial, SpotifySpecial, SoundcloudSpecial, BandcampSpecial]
|
|
|
|
class JanuaryImage(TypedDict):
|
|
url: str
|
|
width: int
|
|
height: int
|
|
size: Literal["Large", "Preview"]
|
|
|
|
class JanuaryVideo(TypedDict):
|
|
url: str
|
|
width: int
|
|
height: int
|
|
|
|
class WebsiteEmbed(TypedDict):
|
|
type: Literal["Website"]
|
|
url: NotRequired[str]
|
|
special: NotRequired[WebsiteSpecial]
|
|
title: NotRequired[str]
|
|
description: NotRequired[str]
|
|
image: NotRequired[JanuaryImage]
|
|
video: NotRequired[JanuaryVideo]
|
|
site_name: NotRequired[str]
|
|
icon_url: NotRequired[str]
|
|
colour: NotRequired[str]
|
|
|
|
class ImageEmbed(JanuaryImage):
|
|
type: Literal["Image"]
|
|
|
|
class TextEmbed(TypedDict):
|
|
type: Literal["Text"]
|
|
icon_url: NotRequired[str]
|
|
url: NotRequired[str]
|
|
title: NotRequired[str]
|
|
description: NotRequired[str]
|
|
media: NotRequired[File]
|
|
colour: NotRequired[str]
|
|
|
|
class NoneEmbed(TypedDict):
|
|
type: Literal["None"]
|
|
|
|
Embed = Union[WebsiteEmbed, ImageEmbed, TextEmbed, NoneEmbed]
|
|
|
|
class SendableEmbed(TypedDict):
|
|
type: Literal["Text"]
|
|
icon_url: NotRequired[str]
|
|
url: NotRequired[str]
|
|
title: NotRequired[str]
|
|
description: NotRequired[str]
|
|
media: NotRequired[str]
|
|
colour: NotRequired[str]
|
|
|