桂花说
This commit is contained in:
44
konabot/plugins/guihuasay.py
Normal file
44
konabot/plugins/guihuasay.py
Normal file
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user