From eb8bf1634639cc1b502e866b6072087c7bc92e4d Mon Sep 17 00:00:00 2001 From: passthem Date: Wed, 31 Dec 2025 15:02:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=83=BD=E4=B8=8D=E8=83=BD=E7=BB=99=E6=AD=A4?= =?UTF-8?q?=E6=96=B9bot=E5=8A=A0=E4=B8=8A=E8=BF=99=E4=B8=AA=20by=20?= =?UTF-8?q?=E8=9C=A1=E7=AC=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konabot/docs/user/k8x12S.txt | 10 +++++++ konabot/plugins/k8x12S/__init__.py | 46 ++++++++++++++++++++++++++++++ scripts/watch_filter.py | 3 ++ 3 files changed, 59 insertions(+) create mode 100644 konabot/docs/user/k8x12S.txt create mode 100644 konabot/plugins/k8x12S/__init__.py diff --git a/konabot/docs/user/k8x12S.txt b/konabot/docs/user/k8x12S.txt new file mode 100644 index 0000000..8707949 --- /dev/null +++ b/konabot/docs/user/k8x12S.txt @@ -0,0 +1,10 @@ +# 指令介绍 + +根据文字生成 k8x12S + +> 「现在还不知道k8x12S是什么的可以开除界隈籍了」—— Louis, 2025/12/31 + +## 使用指南 + +`k8x12S 安心をしてください` + diff --git a/konabot/plugins/k8x12S/__init__.py b/konabot/plugins/k8x12S/__init__.py new file mode 100644 index 0000000..76b64d4 --- /dev/null +++ b/konabot/plugins/k8x12S/__init__.py @@ -0,0 +1,46 @@ +import re +from nonebot import on_message +from nonebot.rule import StartswithRule +from nonebot_plugin_alconna import At, Text, UniMessage, UniMsg + +from konabot.common.longtask import DepLongTaskTarget +from konabot.common.web_render import konaweb +from konabot.common.web_render.core import WebRenderer + + +evt = on_message(rule=StartswithRule(("k8x12s",), True)) +rule = re.compile(r"^[kK]8[xX]12[sS] ?(.+)$") + + +@evt.handle() +async def _(msg: UniMsg, target: DepLongTaskTarget): + if len(msg.include(Text, At)) != len(msg): + return + + text = msg.extract_plain_text() + result = re.match(rule, text) + if result is None: + return + + obj: str | None = result.group(1) + if obj is None: + return + + img = await render_with_web_renderer(obj) + await target.send_message(UniMessage.image(raw=img)) + + +async def render_with_web_renderer(text: str) -> bytes: + async def page_function(page): + await page.wait_for_selector('textarea[name=content]') + await page.locator('textarea[name=content]').fill(text) + + out = await WebRenderer.render_with_persistent_page( + "markdown_renderer", + konaweb('k8x12S'), + target='#main', + other_function=page_function, + ) + return out + + diff --git a/scripts/watch_filter.py b/scripts/watch_filter.py index d02dd1c..9554e41 100644 --- a/scripts/watch_filter.py +++ b/scripts/watch_filter.py @@ -12,5 +12,8 @@ def filter(change: Change, path: str) -> bool: return False if Path(path).absolute().is_relative_to((base / ".git").absolute()): return False + if Path(path).absolute().is_relative_to((base / "assets" / "oracle" / "image").absolute()): + # 还要解决坏枪的这个问题 + return False print(path) return True