| from fastapi import APIRouter, HTTPException | |
| router = APIRouter() | |
| # 在运行时获取插件实例 | |
| plugin = None | |
| def set_plugin_instance(plugin_instance): | |
| global plugin | |
| plugin = plugin_instance | |
| async def api_root(): | |
| return {"message": "欢迎插件API", "status": "运行中"} | |
| async def get_welcome(name: str = "用户"): | |
| """获取欢迎消息""" | |
| if plugin is None or not plugin.enabled: | |
| raise HTTPException(status_code=400, detail="插件未启用") | |
| message = plugin.get_welcome_message(name) | |
| return {"message": message} | |
| async def get_status(): | |
| """获取插件状态""" | |
| if plugin is None: | |
| return {"name": "welcome", "enabled": False, "message": "插件未加载"} | |
| return plugin.get_status() | |
| async def enable_plugin(): | |
| """启用插件""" | |
| if plugin is None: | |
| raise HTTPException(status_code=400, detail="插件未加载") | |
| plugin.on_enable() | |
| return {"message": "插件已启用"} | |
| async def disable_plugin(): | |
| """禁用插件""" | |
| if plugin is None: | |
| raise HTTPException(status_code=400, detail="插件未加载") | |
| plugin.on_disable() | |
| return {"message": "插件已禁用"} |