Azide 3d4dca3b21
🐛 为各主题添加 repost 的渲染 (#505)
* 🐛 为各主题添加 repost 的渲染

*  调整渲染结果

*  更新测试
2024-03-21 14:17:25 +08:00

40 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from typing import TYPE_CHECKING, Literal
from nonebot_plugin_saa import Text, Image, MessageSegmentFactory
from nonebot_bison.utils import pic_merge, is_pics_mergable
from nonebot_bison.theme import Theme, ThemeRenderUnsupportError
if TYPE_CHECKING:
from nonebot_bison.post import Post
class BriefTheme(Theme):
"""简报主题只发送标题、头图如果有、URL如果有"""
name: Literal["brief"] = "brief"
async def render(self, post: "Post") -> list[MessageSegmentFactory]:
if not post.title:
raise ThemeRenderUnsupportError("Post has no title")
text = f"{post.title}\n\n"
text += f"来源: {post.platform.name} {post.nickname or ''}{' 的转发' if post.repost else ''}\n"
urls: list[str] = []
if (rp := post.repost) and rp.url:
urls.append(f"转发详情: {rp.url}")
if post.url:
urls.append(f"详情: {post.url}")
if urls:
text += "\n".join(urls)
msgs: list[MessageSegmentFactory] = [Text(text)]
if post.images:
pics = post.images
if is_pics_mergable(pics):
pics = await pic_merge(list(pics), post.platform.client)
msgs.append(Image(pics[0]))
return msgs