From f7cea196ec422bed8a3a0f19bd79fc533b4ef240 Mon Sep 17 00:00:00 2001 From: passthem Date: Sat, 28 Feb 2026 15:31:12 +0800 Subject: [PATCH] krgsay --- konabot/plugins/krgsay.py | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 konabot/plugins/krgsay.py diff --git a/konabot/plugins/krgsay.py b/konabot/plugins/krgsay.py new file mode 100644 index 0000000..644b325 --- /dev/null +++ b/konabot/plugins/krgsay.py @@ -0,0 +1,43 @@ +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("krgsay"), + target="#main", + other_function=page_function, + ) + return UniMessage.image(raw=img_data) + + +cmd = on_message( + rule=match_keyword.match_keyword( + re.compile(r"^[kK][rR][gG][sS][aA][yY] .+"), + ), +) + +@cmd.handle() +async def _(event: Event, msg: UniMsg): + text = msg.extract_plain_text().strip()[6:].strip() + msg = await render_image(text) + await msg.send(event) +