2024-02-25 03:18:34 +08:00
|
|
|
import nonebot
|
2024-10-18 18:57:55 +08:00
|
|
|
from nonebot_plugin_uninfo import Uninfo
|
2024-02-25 03:18:34 +08:00
|
|
|
|
2024-09-07 13:54:25 +08:00
|
|
|
from zhenxun.utils.enum import PluginType
|
2024-09-14 05:23:55 +08:00
|
|
|
from zhenxun.models.level_user import LevelUser
|
2024-02-25 03:18:34 +08:00
|
|
|
from zhenxun.models.plugin_info import PluginInfo
|
2024-08-28 19:08:22 +08:00
|
|
|
from zhenxun.configs.path_config import IMAGE_PATH
|
2024-02-27 16:13:06 +08:00
|
|
|
from zhenxun.utils.image_utils import BuildImage, ImageTemplate
|
2024-02-25 03:18:34 +08:00
|
|
|
|
2024-09-14 05:23:55 +08:00
|
|
|
from .html_help import build_html_image
|
|
|
|
|
from .normal_help import build_normal_image
|
|
|
|
|
from .zhenxun_help import build_zhenxun_image
|
|
|
|
|
from ._config import GROUP_HELP_PATH, SIMPLE_HELP_IMAGE, base_config
|
2024-02-25 03:18:34 +08:00
|
|
|
|
|
|
|
|
random_bk_path = IMAGE_PATH / "background" / "help" / "simple_help"
|
|
|
|
|
|
|
|
|
|
background = IMAGE_PATH / "background" / "0.png"
|
|
|
|
|
|
|
|
|
|
|
2024-09-14 05:23:55 +08:00
|
|
|
driver = nonebot.get_driver()
|
|
|
|
|
|
|
|
|
|
|
2024-10-18 18:57:55 +08:00
|
|
|
async def create_help_img(session: Uninfo, group_id: str | None):
|
2024-08-28 19:08:22 +08:00
|
|
|
"""生成帮助图片
|
|
|
|
|
|
2024-02-25 03:18:34 +08:00
|
|
|
参数:
|
2024-10-18 18:57:55 +08:00
|
|
|
session: Uninfo
|
2024-08-28 19:08:22 +08:00
|
|
|
group_id: 群号
|
2024-09-14 05:23:55 +08:00
|
|
|
"""
|
|
|
|
|
help_type: str = base_config.get("type")
|
|
|
|
|
if help_type.lower() == "html":
|
|
|
|
|
result = BuildImage.open(await build_html_image(group_id))
|
|
|
|
|
elif help_type.lower() == "zhenxun":
|
2024-10-18 18:57:55 +08:00
|
|
|
result = BuildImage.open(await build_zhenxun_image(session, group_id))
|
2024-09-14 05:23:55 +08:00
|
|
|
else:
|
|
|
|
|
result = await build_normal_image(group_id)
|
|
|
|
|
if group_id:
|
|
|
|
|
await result.save(GROUP_HELP_PATH / f"{group_id}.png")
|
|
|
|
|
else:
|
|
|
|
|
await result.save(SIMPLE_HELP_IMAGE)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def get_user_allow_help(user_id: str) -> list[PluginType]:
|
|
|
|
|
"""获取用户可访问插件类型列表
|
|
|
|
|
|
|
|
|
|
参数:
|
|
|
|
|
user_id: 用户id
|
|
|
|
|
|
|
|
|
|
返回:
|
|
|
|
|
list[PluginType]: 插件类型列表
|
2024-02-25 03:18:34 +08:00
|
|
|
"""
|
2024-09-14 05:23:55 +08:00
|
|
|
type_list = [PluginType.NORMAL, PluginType.DEPENDANT]
|
|
|
|
|
for level in await LevelUser.filter(user_id=user_id).values_list(
|
|
|
|
|
"user_level", flat=True
|
|
|
|
|
):
|
|
|
|
|
if level > 0: # type: ignore
|
|
|
|
|
type_list.extend((PluginType.ADMIN, PluginType.SUPER_AND_ADMIN))
|
|
|
|
|
break
|
|
|
|
|
if user_id in driver.config.superusers:
|
|
|
|
|
type_list.append(PluginType.SUPERUSER)
|
|
|
|
|
return type_list
|
2024-02-25 03:18:34 +08:00
|
|
|
|
|
|
|
|
|
2024-09-14 05:23:55 +08:00
|
|
|
async def get_plugin_help(
|
|
|
|
|
user_id: str, name: str, is_superuser: bool
|
|
|
|
|
) -> str | BuildImage:
|
2024-02-25 03:18:34 +08:00
|
|
|
"""获取功能的帮助信息
|
|
|
|
|
|
|
|
|
|
参数:
|
2024-09-14 05:23:55 +08:00
|
|
|
user_id: 用户id
|
2024-07-31 18:34:22 +08:00
|
|
|
name: 插件名称或id
|
2024-05-15 23:24:35 +08:00
|
|
|
is_superuser: 是否为超级用户
|
2024-02-25 03:18:34 +08:00
|
|
|
"""
|
2024-09-14 05:23:55 +08:00
|
|
|
type_list = await get_user_allow_help(user_id)
|
2024-07-31 18:34:22 +08:00
|
|
|
if name.isdigit():
|
2024-09-14 05:23:55 +08:00
|
|
|
plugin = await PluginInfo.get_or_none(id=int(name), plugin_type__in=type_list)
|
2024-07-31 18:34:22 +08:00
|
|
|
else:
|
2024-09-07 13:54:25 +08:00
|
|
|
plugin = await PluginInfo.get_or_none(
|
2024-09-14 05:23:55 +08:00
|
|
|
name__iexact=name, load_status=True, plugin_type__in=type_list
|
2024-09-07 13:54:25 +08:00
|
|
|
)
|
2024-07-31 18:34:22 +08:00
|
|
|
if plugin:
|
2024-02-25 03:18:34 +08:00
|
|
|
_plugin = nonebot.get_plugin_by_module_name(plugin.module_path)
|
|
|
|
|
if _plugin and _plugin.metadata:
|
2024-05-15 23:24:35 +08:00
|
|
|
items = None
|
|
|
|
|
if is_superuser:
|
|
|
|
|
extra = _plugin.metadata.extra
|
|
|
|
|
if usage := extra.get("superuser_help"):
|
|
|
|
|
items = {
|
|
|
|
|
"简介": _plugin.metadata.description,
|
|
|
|
|
"用法": usage,
|
|
|
|
|
}
|
|
|
|
|
else:
|
|
|
|
|
items = {
|
|
|
|
|
"简介": _plugin.metadata.description,
|
|
|
|
|
"用法": _plugin.metadata.usage,
|
|
|
|
|
}
|
|
|
|
|
if items:
|
2024-07-31 18:34:22 +08:00
|
|
|
return await ImageTemplate.hl_page(plugin.name, items)
|
2024-02-25 03:18:34 +08:00
|
|
|
return "糟糕! 该功能没有帮助喔..."
|
|
|
|
|
return "没有查找到这个功能噢..."
|