mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 13:42:56 +08:00
* ✨ 新增自我介绍功能及自动发送图片支持 - 在 bot_profile.py 中实现自我介绍指令及重载功能 - 在 group_handle 中添加自动发送自我介绍图片的逻辑 - 在 fg_request 中实现添加好友时自动发送自我介绍图片 - 新增 bot_profile_manager.py 管理 BOT 自我介绍及图片生成 - 更新 models.py 以支持插件自我介绍和注意事项字段 * 🎨 调整管理帮助宽度 * ✨ 更新数据访问层,优化获取数据的方法并引入缓存机制 * ✨ 更新用户数据访问逻辑,优化获取用户信息的方法,使用新的函数替代原有实现 * ✨ 在 BotProfileManager 中添加自我介绍文件不存在的日志记录,优化文件读取逻辑 * ✨ 更新 BOT 自我介绍帮助信息,增加文件不存在时自动创建功能
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
from nonebot_plugin_htmlrender import template_to_pic
|
|
|
|
from zhenxun.configs.config import BotConfig
|
|
from zhenxun.configs.path_config import TEMPLATE_PATH
|
|
from zhenxun.models.task_info import TaskInfo
|
|
from zhenxun.utils._build_image import BuildImage
|
|
|
|
from .config import SUPERUSER_HELP_IMAGE
|
|
from .utils import get_plugins
|
|
|
|
|
|
async def get_task() -> dict[str, str] | None:
|
|
"""获取被动技能帮助"""
|
|
if task_list := await TaskInfo.all():
|
|
return {
|
|
"name": "被动技能",
|
|
"description": "控制群组中的被动技能状态",
|
|
"usage": "通过 开启/关闭群被动 来控制群被动 <br>"
|
|
+ " 示例:开启/关闭群被动早晚安 <br> ---------- <br> "
|
|
+ "<br>".join([task.name for task in task_list]),
|
|
}
|
|
return None
|
|
|
|
|
|
async def build_html_help():
|
|
"""构建帮助图片"""
|
|
plugins = await get_plugins()
|
|
plugin_list = []
|
|
for data in plugins:
|
|
if data.metadata.extra:
|
|
if superuser_help := data.metadata.extra.get("superuser_help"):
|
|
data.metadata.usage += f"<br>以下为超级用户额外命令<br>{superuser_help}"
|
|
plugin_list.append(
|
|
{
|
|
"name": data.plugin.name,
|
|
"description": data.metadata.description.replace("\n", "<br>"),
|
|
"usage": data.metadata.usage.replace("\n", "<br>"),
|
|
}
|
|
)
|
|
if task := await get_task():
|
|
plugin_list.append(task)
|
|
plugin_list.sort(key=lambda p: len(p["description"]) + len(p["usage"]))
|
|
pic = await template_to_pic(
|
|
template_path=str((TEMPLATE_PATH / "help").absolute()),
|
|
template_name="main.html",
|
|
templates={
|
|
"data": {
|
|
"plugin_list": plugin_list,
|
|
"nickname": BotConfig.self_nickname,
|
|
"help_name": "超级用户",
|
|
}
|
|
},
|
|
pages={
|
|
"viewport": {"width": 824, "height": 10},
|
|
"base_url": f"file://{TEMPLATE_PATH}",
|
|
},
|
|
wait=2,
|
|
)
|
|
result = await BuildImage.open(pic).resize(0.5)
|
|
await result.save(SUPERUSER_HELP_IMAGE)
|