diff --git a/CoreModules/plugin_interface.py b/CoreModules/plugin_interface.py index f1d831f..95db270 100644 --- a/CoreModules/plugin_interface.py +++ b/CoreModules/plugin_interface.py @@ -22,7 +22,7 @@ class DatabaseModel(BaseModel): class PluginInterface(ABC): plugin_instances: Dict[str, "PluginInterface"] = {} - async def callback(self, message: str, chat_id: int, user_id: int) -> str|None: + async def callback(self, message: str|None|Literal[""], chat_id: int, user_id: int) -> str|None: ''' 继承后重写该方法接受消息并返回消息 返回空字符串代表不进行反馈 @@ -50,22 +50,22 @@ class PluginInterface(ABC): 继承后是否返回路由决定是否启动该插件 若返回None, 则不启动该插件 ''' - Architecture.Register(self.__class__, self, self.wake_up, *self.dependencies()) + + def setup() -> None: + # 在数据库保证必要的表和列存在 + db_model = self.register_db_model() + if db_model is None: + pass + elif isinstance(db_model, DatabaseModel): + self.register_table(db_model) + else: + for model in db_model: + self.register_table(model) + self.wake_up() + + Architecture.Register(self.__class__, self, setup, *self.dependencies()) router = APIRouter() router.post(path)(self.generate_router_callback()) - # 在数据库保证必要的表和列存在 - db = get_db() - db_model = self.register_db_model() - - - if db_model is None: - return router - elif isinstance(db_model, DatabaseModel): - self.register_table(db_model) - else: - for model in db_model: - self.register_table(model) - return router def generate_router_callback(self) -> Callable|Coroutine: