From 27841b842251fe81154d88110f0c6f185f047dd8 Mon Sep 17 00:00:00 2001 From: passthem Date: Wed, 25 Feb 2026 16:11:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20man=20=E6=8C=87=E4=BB=A4?= =?UTF-8?q?=E7=9A=84=E6=B8=B2=E6=9F=93=20Fallback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konabot/plugins/man/__init__.py | 11 ++++++++--- konabot/plugins/markdown/core.py | 11 +++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/konabot/plugins/man/__init__.py b/konabot/plugins/man/__init__.py index a7b9585..b70afce 100644 --- a/konabot/plugins/man/__init__.py +++ b/konabot/plugins/man/__init__.py @@ -5,6 +5,7 @@ import nonebot.adapters import nonebot.rule from nonebot import on_command from nonebot_plugin_alconna import Alconna, Args, UniMessage, on_alconna +import playwright.async_api from konabot.common.nb.is_admin import is_admin from konabot.common.path import DOCS_PATH_MAN1, DOCS_PATH_MAN3, DOCS_PATH_MAN7, DOCS_PATH_MAN8 @@ -87,7 +88,7 @@ async def _( return mans_dict: dict[tuple[int, str], Path] = {} for section in section_set: - mans_dict: dict[tuple[int, str], Path] = {**mans_dict, **search_man(section)} + mans_dict = {**mans_dict, **search_man(section)} mans_dict_2 = {key[1]: val for key, val in mans_dict.items()} mans_fp = mans_dict_2.get(doc.lower()) if mans_fp is None: @@ -95,8 +96,12 @@ async def _( return mans_msg = mans_fp.read_text('utf-8', 'replace') # await man.send(UniMessage().text(mans_msg)) - img = await MarkDownCore.render_markdown(mans_msg) - await man.send(UniMessage.image(raw=img)) + try: + img = await MarkDownCore.render_markdown(mans_msg) + await man.send(UniMessage.image(raw=img)) + except playwright.async_api.Error: + # 图片渲染出错,改成发纯文本 + await man.send(UniMessage.text(mans_msg)) help_deprecated = on_command('help', rule=nonebot.rule.to_me()) diff --git a/konabot/plugins/markdown/core.py b/konabot/plugins/markdown/core.py index b9d2202..2c97ce0 100644 --- a/konabot/plugins/markdown/core.py +++ b/konabot/plugins/markdown/core.py @@ -1,5 +1,4 @@ -from loguru import logger -from playwright.async_api import ConsoleMessage, Page +from playwright.async_api import Page from konabot.common.web_render import konaweb from konabot.common.web_render.core import WebRenderer @@ -12,7 +11,7 @@ class MarkDownCore: await page.locator('textarea[name=content]').fill(markdown_text) await page.locator('#button').click() - + # 等待 checkState 函数加载完成 await page.wait_for_function("typeof checkState === 'function'", timeout=1000) # 访问 checkState 函数,确保渲染完成 @@ -27,7 +26,7 @@ class MarkDownCore: ) return out - + @staticmethod async def render_latex(text: str, theme: str = "dark") -> bytes: params = { @@ -40,7 +39,7 @@ class MarkDownCore: await page.locator('textarea[name=content]').fill(f"$$ {text} $$") page.wait_for_selector('#button') await page.locator('#button').click() - + # 等待 checkState 函数加载完成 await page.wait_for_function("typeof checkState === 'function'", timeout=2000) # 访问 checkState 函数,确保渲染完成 @@ -54,4 +53,4 @@ class MarkDownCore: params=params ) - return out \ No newline at end of file + return out