diff --git a/konabot/plugins/guihuasay.py b/konabot/plugins/guihuasay.py new file mode 100644 index 0000000..edabaf1 --- /dev/null +++ b/konabot/plugins/guihuasay.py @@ -0,0 +1,44 @@ +import re +from typing import Any +from nonebot import on_message +from nonebot.adapters import Event +from nonebot_plugin_alconna import UniMessage, UniMsg +from playwright.async_api import Page + +from konabot.common.nb import match_keyword +from konabot.common.web_render import WebRenderer, konaweb + + +async def render_image(message: str) -> UniMessage[Any]: + """ + 渲染文本为图片 + """ + + async def page_function(page: Page): + await page.wait_for_function("typeof setContent === 'function'") + await page.evaluate( + "([ message ]) => { return setContent(message); }", + [ message ], + ) + + img_data = await WebRenderer.render( + url=konaweb("guihuasay"), + target="#main", + other_function=page_function, + ) + return UniMessage.image(raw=img_data) + + +cmd = on_message( + rule=match_keyword.match_keyword( + re.compile(r"^(桂花[说想])\s.+", re.I), + ), +) + +@cmd.handle() +async def _(event: Event, msg: UniMsg): + text = msg.extract_plain_text().lstrip() + _, content = text.split(maxsplit=1) + msg = await render_image(content) + await msg.send(event) +