Files
VLNKI_Bot/.local/lib/python3.14/site-packages/disnake/ui/media_gallery.py
2026-02-03 20:32:43 +02:00

61 lines
1.8 KiB
Python

# SPDX-License-Identifier: MIT
from __future__ import annotations
from typing import TYPE_CHECKING, ClassVar, List, Sequence, Tuple
from ..components import MediaGallery as MediaGalleryComponent, MediaGalleryItem
from ..enums import ComponentType
from ..utils import MISSING
from .item import UIComponent
if TYPE_CHECKING:
from typing_extensions import Self
__all__ = ("MediaGallery",)
class MediaGallery(UIComponent):
"""Represents a UI media gallery.
This allows displaying up to 10 images in a gallery.
.. versionadded:: 2.11
Parameters
----------
*items: :class:`.MediaGalleryItem`
The list of images in this gallery (up to 10).
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, ...]] = ("items",)
# We have to set this to MISSING in order to overwrite the abstract property from UIComponent
_underlying: MediaGalleryComponent = MISSING
def __init__(self, *items: MediaGalleryItem, id: int = 0) -> None:
self._underlying = MediaGalleryComponent._raw_construct(
type=ComponentType.media_gallery,
id=id,
items=list(items),
)
@property
def items(self) -> List[MediaGalleryItem]:
"""List[:class:`.MediaGalleryItem`]: The images in this gallery."""
return self._underlying.items
@items.setter
def items(self, values: Sequence[MediaGalleryItem]) -> None:
self._underlying.items = list(values)
@classmethod
def from_component(cls, media_gallery: MediaGalleryComponent) -> Self:
return cls(
*media_gallery.items,
id=media_gallery.id,
)