zhenxun_bot/zhenxun/builtin_plugins/help/__init__.py

100 lines
2.8 KiB
Python
Raw Normal View History

2024-05-15 23:24:35 +08:00
from nonebot.adapters import Bot
2024-02-25 03:18:34 +08:00
from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
2024-08-04 19:34:02 +08:00
from nonebot_plugin_alconna import (
Alconna,
AlconnaQuery,
Args,
Match,
Option,
Query,
on_alconna,
store_true,
)
2024-02-25 03:18:34 +08:00
from nonebot_plugin_saa import Image, Text
from nonebot_plugin_session import EventSession
2024-08-04 19:34:02 +08:00
from zhenxun.configs.path_config import IMAGE_PATH
2024-02-25 03:18:34 +08:00
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.image_utils import BuildImage
2024-02-25 03:18:34 +08:00
from ._data_source import create_help_img, get_plugin_help
from ._utils import GROUP_HELP_PATH
__plugin_meta__ = PluginMetadata(
name="帮助",
description="帮助",
usage="",
extra=PluginExtraData(
author="HibiKier",
version="0.1",
plugin_type=PluginType.HIDDEN,
configs=[
RegisterConfig(
key="type",
value="normal",
help="帮助图片样式 ['normal', 'HTML']",
default_value="normal",
)
],
).dict(),
)
SIMPLE_HELP_IMAGE = IMAGE_PATH / "SIMPLE_HELP.png"
if SIMPLE_HELP_IMAGE.exists():
SIMPLE_HELP_IMAGE.unlink()
_matcher = on_alconna(
Alconna(
"功能",
Args["name?", str],
2024-08-04 19:34:02 +08:00
Option("-s|--superuser", action=store_true, help_text="超级用户帮助"),
2024-02-25 03:18:34 +08:00
),
aliases={"help", "帮助", "菜单"},
2024-02-25 03:18:34 +08:00
rule=to_me(),
priority=1,
block=True,
)
@_matcher.handle()
async def _(
2024-05-15 23:24:35 +08:00
bot: Bot,
2024-02-25 03:18:34 +08:00
name: Match[str],
session: EventSession,
2024-08-04 19:34:02 +08:00
is_superuser: Query[bool] = AlconnaQuery("superuser.value", False),
2024-02-25 03:18:34 +08:00
):
2024-05-15 23:24:35 +08:00
_is_superuser = False
if is_superuser.available:
_is_superuser = is_superuser.result
2024-02-25 03:18:34 +08:00
if name.available:
2024-05-15 23:24:35 +08:00
if _is_superuser and session.id1 not in bot.config.superusers:
_is_superuser = False
if result := await get_plugin_help(name.result, _is_superuser):
if isinstance(result, BuildImage):
2024-02-28 00:38:54 +08:00
await Image(result.pic2bytes()).send(reply=True)
else:
await Text(result).send(reply=True)
2024-02-25 03:18:34 +08:00
else:
await Text("没有此功能的帮助信息...").send(reply=True)
2024-02-25 03:18:34 +08:00
logger.info(
f"查看帮助详情: {name.result}",
"帮助",
session=session,
)
else:
if gid := session.id3 or session.id2:
_image_path = GROUP_HELP_PATH / f"{gid}.png"
if not _image_path.exists():
await create_help_img(gid)
await Image(_image_path).finish()
else:
if not SIMPLE_HELP_IMAGE.exists():
if SIMPLE_HELP_IMAGE.exists():
SIMPLE_HELP_IMAGE.unlink()
await create_help_img(None)
await Image(SIMPLE_HELP_IMAGE).finish()