summaryrefslogtreecommitdiff
path: root/ATRI/plugins/help
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2021-07-08 22:09:00 +0800
committerKyomotoi <[email protected]>2021-07-08 22:09:00 +0800
commitbe2747e4d4b820ca0f1f988d3b77a628da26fe7b (patch)
treee1a59dd79ecd973a7d704568dcdc018f1f1b651a /ATRI/plugins/help
parenta4e1b9d1581d756ef79ad063d1c0bd6b2fd13c1d (diff)
downloadATRI-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__.py48
-rw-r--r--ATRI/plugins/help/data_source.py112
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