Adding all files

This commit is contained in:
2026-02-03 20:32:43 +02:00
parent 2588d10ba0
commit 77b70b600f
1457 changed files with 184865 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
# SPDX-License-Identifier: MIT
from __future__ import annotations
from typing import TYPE_CHECKING, ClassVar, Optional, Tuple
from ..components import Thumbnail as ThumbnailComponent, UnfurledMediaItem, handle_media_item_input
from ..enums import ComponentType
from ..utils import MISSING
from .item import UIComponent
if TYPE_CHECKING:
from typing_extensions import Self
from ..components import MediaItemInput
__all__ = ("Thumbnail",)
class Thumbnail(UIComponent):
"""Represents a UI thumbnail.
This is only supported as the :attr:`~.ui.Section.accessory` of a section component.
.. versionadded:: 2.11
Parameters
----------
media: Union[:class:`str`, :class:`.Asset`, :class:`.Attachment`, :class:`.UnfurledMediaItem`]
The media item to display. Can be an arbitrary URL or attachment
reference (``attachment://<filename>``).
description: Optional[:class:`str`]
The thumbnail's description ("alt text"), if any.
spoiler: :class:`bool`
Whether the thumbnail is marked as a spoiler. Defaults to ``False``.
id: :class:`int`
The numeric identifier for the component. Must be unique within the message.
If set to ``0`` (the default) when sending a component, the API will assign
sequential identifiers to the components in the message.
"""
__repr_attributes__: ClassVar[Tuple[str, ...]] = (
"media",
"description",
"spoiler",
)
# We have to set this to MISSING in order to overwrite the abstract property from UIComponent
_underlying: ThumbnailComponent = MISSING
def __init__(
self,
media: MediaItemInput,
description: Optional[str] = None,
*,
spoiler: bool = False,
id: int = 0,
) -> None:
self._underlying = ThumbnailComponent._raw_construct(
type=ComponentType.thumbnail,
id=id,
media=handle_media_item_input(media),
description=description,
spoiler=spoiler,
)
@property
def media(self) -> UnfurledMediaItem:
""":class:`.UnfurledMediaItem`: The media item to display."""
return self._underlying.media
@media.setter
def media(self, value: MediaItemInput) -> None:
self._underlying.media = handle_media_item_input(value)
@property
def description(self) -> Optional[str]:
"""Optional[:class:`str`]: The thumbnail's description ("alt text"), if any."""
return self._underlying.description
@description.setter
def description(self, value: Optional[str]) -> None:
self._underlying.description = value
@property
def spoiler(self) -> bool:
""":class:`bool`: Whether the thumbnail is marked as a spoiler."""
return self._underlying.spoiler
@spoiler.setter
def spoiler(self, value: bool) -> None:
self._underlying.spoiler = value
@classmethod
def from_component(cls, thumbnail: ThumbnailComponent) -> Self:
return cls(
media=thumbnail.media,
description=thumbnail.description,
spoiler=thumbnail.spoiler,
id=thumbnail.id,
)