添加渲染错误信息为图片

This commit is contained in:
2026-02-25 16:11:23 +08:00
parent 27841b8422
commit 91769f93ae
2 changed files with 38 additions and 1 deletions

View File

@ -0,0 +1,34 @@
from typing import Any
from loguru import logger
from nonebot_plugin_alconna import UniMessage
import playwright.async_api
from playwright.async_api import Page
from konabot.common.web_render import WebRenderer, konaweb
async def render_error_message(message: str) -> UniMessage[Any]:
"""
渲染文本消息为错误信息图片。
如果无法访达 Web 端则返回纯文本给用户。
"""
async def page_function(page: Page):
await page.wait_for_function("typeof setContent === 'function'", timeout=1000)
await page.evaluate(
"""(message) => {return setContent(message);}""",
message,
)
try:
img_data = await WebRenderer.render(
url=konaweb("error_report"),
target="#main",
other_function=page_function,
)
return UniMessage.image(raw=img_data)
except playwright.async_api.Error as e:
logger.warning(f"渲染报错信息图片时出错了,回退到文本 ERR={e}")
return UniMessage.text(message)

View File

@ -10,6 +10,7 @@ from nonebot.adapters.onebot.v11.message import Message as OB11Message
from konabot.common.apis.ali_content_safety import AlibabaGreen
from konabot.common.longtask import DepLongTaskTarget
from konabot.common.render_error_message import render_error_message
from konabot.plugins.handle_text.base import (
PipelineRunner,
TextHandlerEnvironment,
@ -75,7 +76,9 @@ async def _(msg: UniMsg, evt: Event, bot: Bot, target: DepLongTaskTarget):
# 检查是否有错误
for r in results:
if r.code != 0:
await target.send_message(f"处理指令时出现问题:{r.ostream}")
message = f"处理指令时出现问题:{r.ostream}"
rendered = await render_error_message(message)
await target.send_message(rendered)
return
# 收集所有组的文本输出和附件