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)