mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-04 02:26:11 +08:00
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
from pathlib import Path
|
|
from pkgutil import iter_modules
|
|
from collections import defaultdict
|
|
from importlib import import_module
|
|
|
|
from ..utils import Site
|
|
from ..plugin_config import plugin_config
|
|
from .platform import Platform, make_no_target_group
|
|
|
|
_package_dir = str(Path(__file__).resolve().parent)
|
|
for _, module_name, _ in iter_modules([_package_dir]):
|
|
import_module(f"{__name__}.{module_name}")
|
|
|
|
|
|
_platform_list: defaultdict[str, list[type[Platform]]] = defaultdict(list)
|
|
for _platform in Platform.registry:
|
|
if not _platform.enabled:
|
|
continue
|
|
_platform_list[_platform.platform_name].append(_platform)
|
|
|
|
platform_manager: dict[str, type[Platform]] = {}
|
|
for name, platform_list in _platform_list.items():
|
|
if len(platform_list) == 1:
|
|
platform_manager[name] = platform_list[0]
|
|
else:
|
|
platform_manager[name] = make_no_target_group(platform_list)
|
|
|
|
|
|
def _get_unavailable_platforms() -> dict[str, str]:
|
|
res = {}
|
|
for name, platform in platform_manager.items():
|
|
if platform.site.require_browser and not plugin_config.bison_use_browser:
|
|
res[name] = "需要启用 bison_use_browser"
|
|
return res
|
|
|
|
|
|
# platform => reason for not available
|
|
unavailable_paltforms: dict[str, str] = _get_unavailable_platforms()
|
|
|
|
|
|
site_manager: dict[str, type[Site]] = {}
|
|
for site in Site.registry:
|
|
if not hasattr(site, "name"):
|
|
continue
|
|
site_manager[site.name] = site
|