mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
|
|
from typing_extensions import Self
|
||
|
|
|
||
|
|
from ...models.core.base import RenderableComponent
|
||
|
|
from ...models.core.card import CardData
|
||
|
|
from ..base import BaseBuilder
|
||
|
|
|
||
|
|
|
||
|
|
class CardBuilder(BaseBuilder[CardData]):
|
||
|
|
"""链式构建通用卡片容器的辅助类"""
|
||
|
|
|
||
|
|
def __init__(self, content: "RenderableComponent | BaseBuilder"):
|
||
|
|
content_model = content.build() if isinstance(content, BaseBuilder) else content
|
||
|
|
data_model = CardData(content=content_model)
|
||
|
|
super().__init__(data_model, template_name="components/core/card")
|
||
|
|
|
||
|
|
def set_header(self, header: "RenderableComponent | BaseBuilder") -> Self:
|
||
|
|
"""设置卡片的头部组件"""
|
||
|
|
header_model = header.build() if isinstance(header, BaseBuilder) else header
|
||
|
|
self._data.header = header_model
|
||
|
|
return self
|
||
|
|
|
||
|
|
def set_footer(self, footer: "RenderableComponent | BaseBuilder") -> Self:
|
||
|
|
"""设置卡片的尾部组件"""
|
||
|
|
footer_model = footer.build() if isinstance(footer, BaseBuilder) else footer
|
||
|
|
self._data.footer = footer_model
|
||
|
|
return self
|