import json import os module_path = "" def readfile(filename): if os.path.exists(module_path + filename): return open(module_path + filename).read() else: return False def list_entries(search_query): files = [] for p, d, f in os.walk(module_path + "db/"): for i in f: entry_name = f"{p.split('/', 3)[3]}/{i}" if search_query in entry_name: files.append(f"{p.split('/', 3)[3]}/{i}".rsplit(".", 1)[0].replace("/", ".").lstrip(".")) files.sort() return files def process(message, path): if message.text[:5] != "!help": return None, None global module_path module_path = path cmd = message.text[1:].split() if len(cmd) == 1: return "Usage:\n```\n!help show - displays specified manual entry\n!help list [query] - lists out available entries (optionally, filtered by [query])```", "Markdown" elif cmd[1] == "list": if len(cmd) == 2: return "Available entries:\n" + "\n".join(list_entries("")), None else: return f"Found entries for {cmd[2]}:\n" + "\n".join(list_entries(cmd[2])), None elif cmd[1] == "show": if len(cmd) >= 3: result = "" for entry_name in cmd[2:]: data = readfile("db/" + entry_name.replace(".", "/") + ".txt") if data: result += f"Manual page for {entry_name}:\n```\n{data}```\n" else: result += f"No manual found for {entry_name}\n\n" return result, "Markdown" else: return "Usage: !help show - displays specified manual entry", None