diff options
author | Kyomotoi <[email protected]> | 2021-07-08 22:09:00 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2021-07-08 22:09:00 +0800 |
commit | be2747e4d4b820ca0f1f988d3b77a628da26fe7b (patch) | |
tree | e1a59dd79ecd973a7d704568dcdc018f1f1b651a /ATRI/plugins/help | |
parent | a4e1b9d1581d756ef79ad063d1c0bd6b2fd13c1d (diff) | |
download | ATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.tar.gz ATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.tar.bz2 ATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.zip |
🔖♻️🐛🔧🔥📝 更新版本:YHN-001-A03
🔖 更新版本至:YHN-001-A03
✨ 新增插件:
- 涩图
- 闲聊(文爱
♻️ 重构:
- Service
- 所有插件
🐛 修复部分小bug
🔧 暂时移除部分设置
🔥 删除:
- 插件:nsfw、wife。日后加回
- 插件 essential 中部分内容
📝 更新README
Diffstat (limited to 'ATRI/plugins/help')
-rw-r--r-- | ATRI/plugins/help/__init__.py | 48 | ||||
-rw-r--r-- | ATRI/plugins/help/data_source.py | 112 |
2 files changed, 160 insertions, 0 deletions
diff --git a/ATRI/plugins/help/__init__.py b/ATRI/plugins/help/__init__.py new file mode 100644 index 0000000..1d9af19 --- /dev/null +++ b/ATRI/plugins/help/__init__.py @@ -0,0 +1,48 @@ +from nonebot.typing import T_State +from nonebot.adapters.cqhttp import Bot, MessageEvent + +from ATRI.rule import to_bot +from .data_source import Helper + + +main_help = Helper().on_command("菜单", "获取食用bot的方法", rule=to_bot(), aliases={"/help", "menu"}) + +@main_help.handle() +async def _main_help(bot: Bot, event: MessageEvent): + repo = Helper().menu() + await main_help.finish(repo) + + +about_me = Helper().on_command("关于", "获取关于bot的信息", rule=to_bot(), aliases={"about"}) + +@about_me.handle() +async def _about_me(bot: Bot, event: MessageEvent): + repo = Helper().about() + await about_me.finish(repo) + + +service_list = Helper().on_command("服务列表", "查看所有可用服务", rule=to_bot(), aliases={"功能列表"}) + +@service_list.handle() +async def _service_list(bot: Bot, event: MessageEvent): + repo = Helper().service_list() + await service_list.finish(repo) + + +service_info = Helper().on_command("帮助", "获取服务详细帮助") + +@service_info.handle() +async def _ready_service_info(bot: Bot, event: MessageEvent, state: T_State): + msg = str(event.message).split(" ") + service = msg[0] + try: + cmd = msg[1] + except BaseException: + cmd = str() + + if not cmd: + repo = Helper().service_info(service) + await service_info.finish(repo) + + repo = Helper().cmd_info(service, cmd) + await service_info.finish(repo) diff --git a/ATRI/plugins/help/data_source.py b/ATRI/plugins/help/data_source.py new file mode 100644 index 0000000..930f4bb --- /dev/null +++ b/ATRI/plugins/help/data_source.py @@ -0,0 +1,112 @@ +import os + +from ATRI import __version__ +from ATRI.service import Service, SERVICES_DIR, ServiceTools +from ATRI.config import BotSelfConfig +from ATRI.exceptions import ReadFileError + + +SERVICE_INFO_FORMAT = """ +服务名:{service} +说明:{docs} +可用命令:\n{cmd_list} +是否全局启用:{enabled} +Tip: 帮助 [服务] [命令] 以查看对应命令详细信息 +""".strip() + + +COMMAND_INFO_FORMAT = """ +命令:{cmd} +类型:{cmd_type} +说明:{docs} +更多触发方式:{aliases} +""".strip() + + +class Helper(Service): + + def __init__(self): + Service.__init__(self, "帮助", "bot的食用指南~") + + @staticmethod + def menu() -> str: + return ( + "哦呀?~需要帮助?\n" + "关于 -查看bot基本信息\n" + "服务列表 -以查看所有可用服务\n" + "帮助 [服务] -以查看对应服务帮助\n" + "Tip: 均需要at触发。菜单 打开此页面" + ) + + @staticmethod + def about() -> str: + temp_list = list() + for i in BotSelfConfig.nickname: + temp_list.append(i) + nickname = "、".join(map(str, temp_list)) + return ( + "唔...是来认识咱的么\n" + f"可以称呼咱:{nickname}\n" + f"咱的型号是:{__version__}\n" + "想进一步了解:\n" + "https://github.com/Kyomotoi/ATRI" + ) + + @staticmethod + def service_list() -> str: + files = os.listdir(SERVICES_DIR) + temp_list = list() + for i in files: + service = i.replace(".json", "") + temp_list.append(service) + + msg0 = "咱搭载了以下服务~\n" + services = " | ".join(map(str, temp_list)) + msg0 = msg0 + services + repo = msg0 + "\n帮助 [服务] -以查看对应服务帮助" + return repo + + @staticmethod + def service_info(service: str) -> str: + try: + data = ServiceTools().load_service(service) + except ReadFileError: + return "请检查是否输入错误呢..." + + service_name = data.get("service", "error") + service_docs = data.get("docs", "error") + service_enabled = data.get("enabled", True) + + _service_cmd_list = list(data.get("cmd_list", {"error"})) + service_cmd_list = "\n".join(map(str, _service_cmd_list)) + + repo = SERVICE_INFO_FORMAT.format( + service=service_name, + docs=service_docs, + cmd_list=service_cmd_list, + enabled=service_enabled + ) + return repo + + @staticmethod + def cmd_info(service: str, cmd: str) -> str: + try: + data = ServiceTools().load_service(service) + except ReadFileError: + return "请检查是否输入错误..." + + cmd_list: dict = data["cmd_list"] + cmd_info = cmd_list.get(cmd, dict()) + if not cmd_info: + return "请检查命令是否输入错误..." + cmd_type = cmd_info.get("type", "ignore") + docs = cmd_info.get("docs", "ignore") + aliases = cmd_info.get("aliases", "ignore") + + repo = COMMAND_INFO_FORMAT.format( + cmd=cmd, + cmd_type=cmd_type, + docs=docs, + aliases=aliases + ) + return repo |