mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-02 09:26:12 +08:00
♻️ 将 Site 的元类从 RegistryMeta 改为 新建的 SiteMeta
This commit is contained in:
parent
60dd2c4bab
commit
e8f0d578e1
@ -15,10 +15,10 @@ from .jwt import load_jwt, pack_jwt
|
|||||||
from ..scheduler import scheduler_dict
|
from ..scheduler import scheduler_dict
|
||||||
from ..types import Target as T_Target
|
from ..types import Target as T_Target
|
||||||
from ..utils.get_bot import get_groups
|
from ..utils.get_bot import get_groups
|
||||||
|
from ..platform import platform_manager
|
||||||
from .token_manager import token_manager
|
from .token_manager import token_manager
|
||||||
from ..config.db_config import SubscribeDupException
|
from ..config.db_config import SubscribeDupException
|
||||||
from ..platform import site_manager, platform_manager
|
from ..utils.site import CookieClientManager, site_manager, is_cookie_client_manager
|
||||||
from ..utils.site import CookieClientManager, is_cookie_client_manager
|
|
||||||
from ..config import NoSuchUserException, NoSuchTargetException, NoSuchSubscribeException, config
|
from ..config import NoSuchUserException, NoSuchTargetException, NoSuchSubscribeException, config
|
||||||
from .types import (
|
from .types import (
|
||||||
Cookie,
|
Cookie,
|
||||||
|
@ -3,7 +3,6 @@ from pkgutil import iter_modules
|
|||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
|
|
||||||
from ..utils import Site
|
|
||||||
from ..plugin_config import plugin_config
|
from ..plugin_config import plugin_config
|
||||||
from .platform import Platform, make_no_target_group
|
from .platform import Platform, make_no_target_group
|
||||||
|
|
||||||
@ -36,10 +35,3 @@ def _get_unavailable_platforms() -> dict[str, str]:
|
|||||||
|
|
||||||
# platform => reason for not available
|
# platform => reason for not available
|
||||||
unavailable_paltforms: dict[str, str] = _get_unavailable_platforms()
|
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
|
|
||||||
|
@ -9,10 +9,10 @@ import httpx
|
|||||||
from httpx import AsyncClient
|
from httpx import AsyncClient
|
||||||
from nonebot.log import logger
|
from nonebot.log import logger
|
||||||
|
|
||||||
|
from ..types import Target
|
||||||
from ..config import config
|
from ..config import config
|
||||||
from .http import http_client
|
from .http import http_client
|
||||||
from ..config.db_model import Cookie
|
from ..config.db_model import Cookie
|
||||||
from ..types import Target, RegistryMeta
|
|
||||||
|
|
||||||
|
|
||||||
class ClientManager(ABC):
|
class ClientManager(ABC):
|
||||||
@ -161,7 +161,17 @@ def is_cookie_client_manager(manger: type[ClientManager]) -> bool:
|
|||||||
return issubclass(manger, CookieClientManager)
|
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_type: Literal["date", "interval", "cron"]
|
||||||
schedule_setting: dict
|
schedule_setting: dict
|
||||||
name: str
|
name: str
|
||||||
|
@ -10,12 +10,11 @@ from nonebug import App
|
|||||||
async def test_cookie(app: App, init_scheduler):
|
async def test_cookie(app: App, init_scheduler):
|
||||||
from nonebot_plugin_saa import TargetQQGroup
|
from nonebot_plugin_saa import TargetQQGroup
|
||||||
|
|
||||||
from nonebot_bison.platform import site_manager
|
|
||||||
from nonebot_bison.config.db_config import config
|
from nonebot_bison.config.db_config import config
|
||||||
from nonebot_bison.scheduler import scheduler_dict
|
from nonebot_bison.scheduler import scheduler_dict
|
||||||
from nonebot_bison.types import Target as T_Target
|
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.config.utils import DuplicateCookieTargetException
|
||||||
|
from nonebot_bison.utils.site import CookieClientManager, site_manager
|
||||||
|
|
||||||
target = T_Target("weibo_id")
|
target = T_Target("weibo_id")
|
||||||
platform_name = "weibo"
|
platform_name = "weibo"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user