diff --git a/nonebot_bison/utils/site.py b/nonebot_bison/utils/site.py index 59593a5..9a042f2 100644 --- a/nonebot_bison/utils/site.py +++ b/nonebot_bison/utils/site.py @@ -46,16 +46,32 @@ class CookieClientManager(ClientManager): _site_name: str # 绑定的 site_name,需要使用 create_cookie_client_manager 创建 Client_mgr 时绑定 _default_cd: int = timedelta(seconds=10) + @classmethod + async def _generate_anonymous_cookie(cls) -> Cookie: + return Cookie( + cookie_name=f"{cls._site_name} anonymous", + site_name=cls._site_name, + content="{}", + is_universal=True, + is_anonymous=True, + last_usage=datetime.now(), + cd_milliseconds=0, + tags="{}", + status="", + ) + @classmethod async def refresh_anonymous_cookie(cls): - """移除已有的匿名cookie,添加一个新的匿名cookie""" + """更新已有的匿名cookie,若不存在则添加""" existing_anonymous_cookies = await config.get_cookie(cls._site_name, is_anonymous=True) - new_anonymous_cookie = Cookie(site_name=cls._site_name, content="{}", is_universal=True, is_anonymous=True) - for cookie in existing_anonymous_cookies: - await config.delete_cookie_by_id(cookie.id) - new_anonymous_cookie.id = cookie.id # 保持原有的id - new_anonymous_cookie.last_usage = datetime.now() # 使得第一次请求优先使用用户 cookie - await config.add_cookie(new_anonymous_cookie) + if existing_anonymous_cookies: + for cookie in existing_anonymous_cookies: + new_anonymous_cookie = await cls._generate_anonymous_cookie() + new_anonymous_cookie.id = cookie.id # 保持原有的id + await config.update_cookie(new_anonymous_cookie) + else: + new_anonymous_cookie = await cls._generate_anonymous_cookie() + await config.add_cookie(new_anonymous_cookie) @classmethod async def add_user_cookie(cls, content: str): @@ -120,7 +136,7 @@ class CookieClientManager(ClientManager): return http_client() async def refresh_client(self): - pass + self.refresh_anonymous_cookie() def is_cookie_client_manager(manger: type[ClientManager]) -> bool: