aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2023-11-16 03:11:38 +0800
committer简律纯 <i@jyunko.cn>2023-11-16 03:11:38 +0800
commit21d7c371f20dc1cb1f429f98bc0642cf8c9ca62e (patch)
treeb677ca0261e14fd392adb64e32215867310935d5
parenta904949c07a621c471ce326732a1fb496407a3c2 (diff)
downloadHydroRoll-21d7c371f20dc1cb1f429f98bc0642cf8c9ca62e.tar.gz
HydroRoll-21d7c371f20dc1cb1f429f98bc0642cf8c9ca62e.zip
feat: 将 HydroRoll.Dice 类修改为一个泛型类,更好的IDE支持
-rw-r--r--example/plugins/HydroRoll/__init__.py32
-rw-r--r--example/plugins/HydroRoll/config.py1
2 files changed, 25 insertions, 8 deletions
diff --git a/example/plugins/HydroRoll/__init__.py b/example/plugins/HydroRoll/__init__.py
index 5e48546..6800e96 100644
--- a/example/plugins/HydroRoll/__init__.py
+++ b/example/plugins/HydroRoll/__init__.py
@@ -1,18 +1,37 @@
"""中间件"""
+import re
import json
import joblib
import os
import shutil
-from ast import literal_eval
-from os.path import dirname, join, abspath
+
from iamai import ConfigModel, Plugin
from iamai.log import logger
+from iamai.exceptions import GetEventTimeout
+from iamai.event import MessageEvent, Event
+from iamai.typing import StateT
+
from .config import Directory, GlobalConfig, Models
from .utils import *
from .models.Transformer import query
from .command import Set, Get
-from iamai.exceptions import GetEventTimeout
-from iamai.event import MessageEvent
+from .config import (
+ BasePluginConfig,
+ CommandPluginConfig,
+ RegexPluginConfig,
+ GlobalConfig,
+)
+
+from ast import literal_eval
+from os.path import dirname, join, abspath
+from abc import ABC, abstractmethod
+from typing import Any, Generic, TypeVar
+from typing_extensions import Annotated
+
+ConfigT = TypeVar("ConfigT", bound=BasePluginConfig)
+RegexPluginConfigT = TypeVar("RegexPluginConfigT", bound=RegexPluginConfig)
+CommandPluginConfigT = TypeVar("CommandPluginConfigT", bound=CommandPluginConfig)
+
BASE_DIR = dirname(abspath("__file__"))
HYDRO_DIR = dirname(abspath(__file__))
@@ -21,12 +40,9 @@ APP_DIR = join(BASE_DIR, "HydroRoll")
# logger.info(GlobalConfig._copyright)
-class HydroRoll(Plugin):
+class Dice(Plugin[MessageEvent, Annotated[dict, {}], RegexPluginConfig]):
"""中间件"""
- class Config(ConfigModel):
- __config_name__ = "HydroRoll"
-
priority = 0
# TODO: HydroRollCore should be able to handle all signals and tokens from Psi.
diff --git a/example/plugins/HydroRoll/config.py b/example/plugins/HydroRoll/config.py
index 97591fe..f90ebc0 100644
--- a/example/plugins/HydroRoll/config.py
+++ b/example/plugins/HydroRoll/config.py
@@ -25,6 +25,7 @@ class RegexPluginConfig(BasePluginConfig):
class CommandPluginConfig(RegexPluginConfig):
+ __config_name__ = "HydroRoll"
command_prefix: Set[str] = Field(default_factory=lambda: {".", "。"})
"""命令前缀。"""
command: Set[str] = Field(default_factory=set)