From f6601f807a289536b441d7e92a3d727914f53483 Mon Sep 17 00:00:00 2001 From: passthem Date: Mon, 2 Mar 2026 13:50:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20krg=20=E8=A1=A8=E6=83=85?= =?UTF-8?q?=E5=B7=AE=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konabot/plugins/krgsay.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/konabot/plugins/krgsay.py b/konabot/plugins/krgsay.py index 644b325..049d758 100644 --- a/konabot/plugins/krgsay.py +++ b/konabot/plugins/krgsay.py @@ -9,7 +9,7 @@ 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 render_image(message: str, style: str = 'say') -> UniMessage[Any]: """ 渲染文本为图片 """ @@ -17,8 +17,8 @@ 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, + "([ message, style ]) => { return setContent(message, style); }", + [ message, style ], ) img_data = await WebRenderer.render( @@ -29,15 +29,22 @@ async def render_image(message: str) -> UniMessage[Any]: return UniMessage.image(raw=img_data) +ALLOWED_STYLE = { "say", "cry", "hungry", "blush" } + + cmd = on_message( rule=match_keyword.match_keyword( - re.compile(r"^[kK][rR][gG][sS][aA][yY] .+"), + re.compile(r"^krg(" + '|'.join(ALLOWED_STYLE) + r")\s.+", re.I), ), ) @cmd.handle() async def _(event: Event, msg: UniMsg): - text = msg.extract_plain_text().strip()[6:].strip() - msg = await render_image(text) + text = msg.extract_plain_text().lstrip() + command, content = text.split(maxsplit=1) + style = command.removeprefix("krg").lower() + if style not in ALLOWED_STYLE: + style = 'say' + msg = await render_image(content, style) await msg.send(event)