添加 Shadertool(谁需要??????)
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
41
konabot/plugins/sksl/__init__.py
Normal file
41
konabot/plugins/sksl/__init__.py
Normal file
@ -0,0 +1,41 @@
|
||||
from nonebot_plugin_alconna import Alconna, Args, Option, UniMessage, on_alconna
|
||||
|
||||
from konabot.common.nb.exc import BotExceptionMessage
|
||||
from konabot.plugins.sksl.run_sksl import render_sksl_shader_to_gif
|
||||
|
||||
|
||||
cmd_run_sksl = on_alconna(Alconna(
|
||||
"shadertool",
|
||||
Option("--width", Args["width_", int]),
|
||||
Option("--height", Args["height_", int]),
|
||||
Option("--duration", Args["duration_", float]),
|
||||
Option("--fps", Args["fps_", float]),
|
||||
Args["code", str],
|
||||
))
|
||||
|
||||
@cmd_run_sksl.handle()
|
||||
async def _(
|
||||
code: str,
|
||||
width_: int = 320,
|
||||
height_: int = 180,
|
||||
duration_: float = 1.0,
|
||||
fps_: float = 15.0,
|
||||
):
|
||||
if width_ <= 0 or height_ <= 0:
|
||||
raise BotExceptionMessage("长宽应该大于 0")
|
||||
if duration_ <= 0:
|
||||
raise BotExceptionMessage("渲染时长应该大于 0")
|
||||
if fps_ <= 0:
|
||||
raise BotExceptionMessage("渲染帧率应该大于 0")
|
||||
if fps_ * duration_ < 1:
|
||||
raise BotExceptionMessage("时长太短或帧率太小,没有帧被渲染")
|
||||
if fps_ * duration_ > 100:
|
||||
raise BotExceptionMessage("太多帧啦!试着缩短一点时间吧!")
|
||||
|
||||
code = code.strip("\"").strip("'")
|
||||
|
||||
try:
|
||||
res = await render_sksl_shader_to_gif(code, width_, height_, duration_, fps_)
|
||||
await cmd_run_sksl.send(await UniMessage().image(raw=res).export())
|
||||
except (ValueError, RuntimeError) as e:
|
||||
await cmd_run_sksl.send(await UniMessage().text(f"渲染时遇到了问题:\n\n{e}").export())
|
||||
Reference in New Issue
Block a user