♻️ 将 Site 的元类从 RegistryMeta 改为 新建的 SiteMeta

This commit is contained in:
2024-10-30 20:03:48 +08:00
parent 60dd2c4bab
commit e8f0d578e1
4 changed files with 15 additions and 14 deletions
+2 -2
View File
@@ -15,10 +15,10 @@ from .jwt import load_jwt, pack_jwt
from ..scheduler import scheduler_dict
from ..types import Target as T_Target
from ..utils.get_bot import get_groups
from ..platform import platform_manager
from .token_manager import token_manager
from ..config.db_config import SubscribeDupException
from ..platform import site_manager, platform_manager
from ..utils.site import CookieClientManager, is_cookie_client_manager
from ..utils.site import CookieClientManager, site_manager, is_cookie_client_manager
from ..config import NoSuchUserException, NoSuchTargetException, NoSuchSubscribeException, config
from .types import (
Cookie,
-8
View File
@@ -3,7 +3,6 @@ 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
@@ -36,10 +35,3 @@ def _get_unavailable_platforms() -> dict[str, str]:
# 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
+12 -2
View File
@@ -9,10 +9,10 @@ import httpx
from httpx import AsyncClient
from nonebot.log import logger
from ..types import Target
from ..config import config
from .http import http_client
from ..config.db_model import Cookie
from ..types import Target, RegistryMeta
class ClientManager(ABC):
@@ -161,7 +161,17 @@ def is_cookie_client_manager(manger: type[ClientManager]) -> bool:
return issubclass(manger, CookieClientManager)
class Site(metaclass=RegistryMeta, base=True):
site_manager: dict[str, type["Site"]] = {}
class SiteMeta(type):
def __init__(cls, *args, **kwargs):
if hasattr(cls, "name"):
site_manager[cls.name] = cls
super().__init__(*args, **kwargs)
class Site(metaclass=SiteMeta):
schedule_type: Literal["date", "interval", "cron"]
schedule_setting: dict
name: str