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

This commit is contained in:
suyiiyii 2024-10-30 20:03:48 +08:00
parent 60dd2c4bab
commit e8f0d578e1
Signed by: suyiiyii
GPG Key ID: 044704CB29B8AD85
4 changed files with 15 additions and 14 deletions

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,

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

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

View File

@ -10,12 +10,11 @@ from nonebug import App
async def test_cookie(app: App, init_scheduler):
from nonebot_plugin_saa import TargetQQGroup
from nonebot_bison.platform import site_manager
from nonebot_bison.config.db_config import config
from nonebot_bison.scheduler import scheduler_dict
from nonebot_bison.types import Target as T_Target
from nonebot_bison.utils.site import CookieClientManager
from nonebot_bison.config.utils import DuplicateCookieTargetException
from nonebot_bison.utils.site import CookieClientManager, site_manager
target = T_Target("weibo_id")
platform_name = "weibo"