From 39accb16e08ce970626c2acdb353f6fb3324273d Mon Sep 17 00:00:00 2001 From: passthem Date: Wed, 29 Apr 2026 18:51:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=82=E8=8A=B1=E8=AF=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konabot/plugins/guihuasay.py | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 konabot/plugins/guihuasay.py 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) +