外观
插件帮助简单
字数统计:1.3k 字
阅读时长:5 分钟
请为你的插件添加帮助!
一个优秀的帮助可以让用户更好的理解插件的功能,Core也提供相应的自身命令帮助
&管理帮助
插件添加漂亮的帮助图非常简单!
在GsCore中,绘制类似上述的帮助图有单独的函数协助,所以已经尽可能的简单!
以雀魂插件(MajsoulUID)为参考,下面是该插件的外助图
- 准备相应的图标素材,这里有一份范例, 注意图标大小恒定为150x150,且为PNG透明底!
- 编写函数,同样是参考,可以直接复制修改
python
from typing import Dict
from pathlib import Path
import aiofiles
from PIL import Image
from msgspec import json as msgjson
from gsuid_core.sv import get_plugin_available_prefix
from gsuid_core.help.model import PluginHelp
from gsuid_core.help.draw_new_plugin_help import get_new_help
from ..utils.image import get_footer
from ..version import MajsoulUID_version
ICON = Path(__file__).parent.parent.parent / 'ICON.png'
HELP_DATA = Path(__file__).parent / 'help.json'
ICON_PATH = Path(__file__).parent / 'icon_path'
TEXT_PATH = Path(__file__).parent / 'texture2d'
# 使用Core内置函数`get_plugin_available_prefix`获取插件可用的前缀
PREFIX = get_plugin_available_prefix('MajsoulUID')
# 使用aiofiles异步读取help.json文件
async def get_help_data() -> Dict[str, PluginHelp]:
async with aiofiles.open(HELP_DATA, 'rb') as file:
return msgjson.decode(await file.read(), type=Dict[str, PluginHelp])
async def get_help():
return await get_new_help(
# 插件名
plugin_name='MajsoulUID',
# 插件的badge, 会出现在帮助图title的右边的色块
# 该值是一个dict, key为内容, value为色块颜色(RGB数组或者字符串)
plugin_info={f'v{MajsoulUID_version}': ''},
# 插件的logo
plugin_icon=Image.open(ICON),
# 之前准备的help.json文件
plugin_help=await get_help_data(),
# 插件的前缀, 哪怕存在用户自定义, 也可以让帮助图可以给出正确的命令
plugin_prefix=PREFIX,
# 主题, 暂时只影响整体的文字颜色, 如果是dark, 文字则为白色, light则为黑色
help_mode='dark',
# 帮助图最上面的部分, 一些精彩的插画非常适合, 注意处理宽度为1545
banner_bg=Image.open(TEXT_PATH / 'banner_bg.jpg'),
# 帮助图最上面部分的副标题, 可以写一些个性化内容
banner_sub_text='小心八木唯!',
# 帮助图背景, 注意处理宽度为1545!
# 请尽量使用纯色背景, 如果是插画, 尽量添加高斯模糊或者颜色遮罩!
help_bg=Image.open(TEXT_PATH / 'bg.jpg'),
# 分类的横幅, 注意处理宽度为1545!
cag_bg=Image.open(TEXT_PATH / 'cag_bg.png'),
# 单个命令的底部图片, 大小为490x175
item_bg=Image.open(TEXT_PATH / 'item.png'),
# 命令图标包, 大小为150x150
icon_path=ICON_PATH,
# 页脚
footer=get_footer(),
# 是否允许缓存, 或者每次使用命令均重新绘制(建议使用缓存)
enable_cache=True,
)
注册插件帮助命令到帮助
中
在core默认的命令帮助
中,可以在底部注册插件帮助,类似这样:
只需要在插件代码中进行注册即可,参考,代码如下
python
from PIL import Image
from gsuid_core.sv import SV
from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger
from gsuid_core.help.utils import register_help
from .get_help import ICON, get_help
from ..wutheringwaves_config import PREFIX
sv_waves_help = SV('waves帮助')
@sv_waves_help.on_fullmatch(f'{PREFIX}帮助')
async def send_help_img(bot: Bot, ev: Event):
logger.info('开始执行[waves帮助]')
await bot.send(await get_help())
# 重点在这
register_help('WutheringWavesUID', f'{PREFIX}帮助', Image.open(ICON))
不想准备素材和图标包?
当然可以! 函数get_new_help()
有丰富的默认参数,你只需要准备help.json
即可!
python
async def get_help():
return await get_new_help(
plugin_name='MajsoulUID',
plugin_info={f'v{MajsoulUID_version}': ''},
# 图标
plugin_icon=Image.open(ICON),
# 你的帮助内容
plugin_help={},
)
下面是一些插件的帮助图范例
💡 提醒
图标包内图片的名字并不一定需要完全依照help.json
中的name
去设定
core在寻找图标的时候按照以下优先级顺序执行:
- 先找路径中是否存在完全一样名字的ICON文件
- 再找路径中是否存在部分一致的的ICON文件
- 再找路径中文件名为
通用.png
的文件 - 随机挑选一张