mirror of
https://github.com/Genshin-bots/gsuid_core.git
synced 2025-05-12 06:55:49 +08:00
✨ 支持nest
方式插件加载
This commit is contained in:
parent
b27cf3561b
commit
ff57f10498
@ -39,22 +39,15 @@ class GsServer:
|
|||||||
if plugin.is_dir():
|
if plugin.is_dir():
|
||||||
plugin_path = plugin / '__init__.py'
|
plugin_path = plugin / '__init__.py'
|
||||||
plugins_path = plugin / '__full__.py'
|
plugins_path = plugin / '__full__.py'
|
||||||
|
nest_path = plugin / '__nest__.py'
|
||||||
# 如果文件夹内有__full_.py,则视为插件包合集
|
# 如果文件夹内有__full_.py,则视为插件包合集
|
||||||
sys.path.append(str(plugin_path.parents))
|
sys.path.append(str(plugin_path.parents))
|
||||||
if plugins_path.exists():
|
if plugins_path.exists():
|
||||||
importlib.import_module(
|
self.load_dir_plugins(plugin)
|
||||||
f'plugins.{plugin.name}.__full__'
|
elif nest_path.exists():
|
||||||
)
|
path = nest_path.parent / plugin.name
|
||||||
for sub_plugin in plugin.iterdir():
|
if path.exists():
|
||||||
if sub_plugin.is_dir():
|
self.load_dir_plugins(path, True)
|
||||||
plugin_path = sub_plugin / '__init__.py'
|
|
||||||
if plugin_path.exists():
|
|
||||||
sys.path.append(str(plugin_path.parents))
|
|
||||||
_p = (
|
|
||||||
f'plugins.{plugin.name}.'
|
|
||||||
f'{sub_plugin.name}'
|
|
||||||
)
|
|
||||||
importlib.import_module(f'{_p}.__init__')
|
|
||||||
# 如果文件夹内有__init_.py,则视为单个插件包
|
# 如果文件夹内有__init_.py,则视为单个插件包
|
||||||
elif plugin_path.exists():
|
elif plugin_path.exists():
|
||||||
importlib.import_module(
|
importlib.import_module(
|
||||||
@ -63,9 +56,23 @@ class GsServer:
|
|||||||
# 如果发现单文件,则视为单文件插件
|
# 如果发现单文件,则视为单文件插件
|
||||||
if plugin.suffix == '.py':
|
if plugin.suffix == '.py':
|
||||||
importlib.import_module(f'plugins.{plugin.name[:-3]}')
|
importlib.import_module(f'plugins.{plugin.name[:-3]}')
|
||||||
except: # noqa
|
except Exception as e: # noqa
|
||||||
|
logger.exception(e)
|
||||||
logger.warning(f'插件{plugin.name}加载失败')
|
logger.warning(f'插件{plugin.name}加载失败')
|
||||||
|
|
||||||
|
def load_dir_plugins(self, plugin: Path, nest: bool = False):
|
||||||
|
for sub_plugin in plugin.iterdir():
|
||||||
|
if sub_plugin.is_dir():
|
||||||
|
plugin_path = sub_plugin / '__init__.py'
|
||||||
|
if plugin_path.exists():
|
||||||
|
sys.path.append(str(plugin_path.parents))
|
||||||
|
name = plugin.name
|
||||||
|
if nest:
|
||||||
|
_p = f'plugins.{name}.{name}.{sub_plugin.name}'
|
||||||
|
else:
|
||||||
|
_p = f'plugins.{name}.{sub_plugin.name}'
|
||||||
|
importlib.import_module(f'{_p}.__init__')
|
||||||
|
|
||||||
async def connect(self, websocket: WebSocket, bot_id: str) -> _Bot:
|
async def connect(self, websocket: WebSocket, bot_id: str) -> _Bot:
|
||||||
await websocket.accept()
|
await websocket.accept()
|
||||||
self.active_ws[bot_id] = websocket
|
self.active_ws[bot_id] = websocket
|
||||||
|
Loading…
x
Reference in New Issue
Block a user