From cac060a6e8b70e4e4e1b34555d3d4fee8bc6d007 Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Tue, 27 Feb 2024 11:46:36 +0800 Subject: refactor!: rename HydroRoll dir as hydro_roll --- hydro_roll/__init__.py | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 hydro_roll/__init__.py (limited to 'hydro_roll/__init__.py') diff --git a/hydro_roll/__init__.py b/hydro_roll/__init__.py new file mode 100644 index 0000000..cfaff13 --- /dev/null +++ b/hydro_roll/__init__.py @@ -0,0 +1,80 @@ +"""中间件""" + +from ast import literal_eval +import os +from os.path import dirname, join, abspath +from iamai import ConfigModel, Plugin +from iamai.log import logger +from .config import Directory +from .models.utils import * +import joblib + +try: + from .HydroRoll import sum_as_string +except ImportError: + ... + +BASE_DIR = Directory(_path=dirname(abspath("__file__"))) +HYDRO_DIR = dirname(abspath(__file__)) + + +def _init_directory(_prefix: str = ""): + """初始化水系目录""" + for _ in BASE_DIR.get_dice_dir_list(_prefix): + if not os.path.exists(_): + os.makedirs(_) + + +def _load_models(): + models = {} + models["hola"] = joblib.load(join(HYDRO_DIR, "models", "hola.pkl")) + return models + + +def load_model(model): + logger.info("loading models...") + return _load_models()[model] + + +def init_directory(_prefix: str = "HydroRoll"): + _init_directory(_prefix=_prefix) + + +class HydroRoll(Plugin): + """中间件""" + + class Config(ConfigModel): + __config_name__ = "HydroRoll" + + priority = 0 + + # TODO: infini should be able to handle all signals and tokens from Psi. + logger.info(f"Loading infini... with {sum_as_string(2,3)}") + + async def handle(self) -> None: + """ + @TODO: infini should be able to handle all signals and tokens from Psi. + @BODY: infini actives the rule-packages. + """ + + if self.event.message.get_plain_text() == ".core": + await self.event.reply("infini is running.") + elif self.event.message.startswith(".test"): + try: + result = literal_eval(self.event.message.get_plain_text()[5:]) + await self.event.reply(result) + except Exception as error: + await self.event.reply(f"{error!r}") + + async def rule(self) -> bool: + """ + @TODO: Psi should be able to handle all message first. + @BODY: lexer module will return a list of tokens, parser module will parse the tokens into a tree, and executor module will execute the tokens with a stack with a bool return value. + """ + logger.info("loading psi...") + if not self.bot.global_state.get("HydroRoll.dir"): + hola = load_model("hola") + + init_directory() + self.bot.global_state["HydroRoll.dir"] = True + return self.event.adapter.name in ["cqhttp", "kook", "console", "mirai"] -- cgit v1.2.3-70-g09d2