diff options
Diffstat (limited to 'ATRI/plugins/help/data_source.py')
-rw-r--r-- | ATRI/plugins/help/data_source.py | 112 |
1 files changed, 112 insertions, 0 deletions
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 |