forked from mttu-developers/konabot
能不能给此方bot加上这个 by 蜡笔
This commit is contained in:
10
konabot/docs/user/k8x12S.txt
Normal file
10
konabot/docs/user/k8x12S.txt
Normal file
@ -0,0 +1,10 @@
|
||||
# 指令介绍
|
||||
|
||||
根据文字生成 k8x12S
|
||||
|
||||
> 「现在还不知道k8x12S是什么的可以开除界隈籍了」—— Louis, 2025/12/31
|
||||
|
||||
## 使用指南
|
||||
|
||||
`k8x12S 安心をしてください`
|
||||
|
||||
46
konabot/plugins/k8x12S/__init__.py
Normal file
46
konabot/plugins/k8x12S/__init__.py
Normal file
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user