From 0985705c22f8e9c1bb998bf3f87cf8de77a0a6ef Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Mon, 28 Oct 2024 13:17:36 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E6=B7=BB=E5=8A=A0=20Cookie=20=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=98=BE=E7=A4=BA=20=E3=80=8C=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96cookie=5Fname=E3=80=8D=20=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_bison/sub_manager/add_cookie.py | 16 +++++++++++++--- nonebot_bison/utils/site.py | 4 ++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/nonebot_bison/sub_manager/add_cookie.py b/nonebot_bison/sub_manager/add_cookie.py index 61cdcd6..4f7dd82 100644 --- a/nonebot_bison/sub_manager/add_cookie.py +++ b/nonebot_bison/sub_manager/add_cookie.py @@ -1,5 +1,7 @@ from typing import cast +from json import JSONDecodeError +from nonebot.log import logger from nonebot.typing import T_State from nonebot.matcher import Matcher from nonebot.params import Arg, ArgPlainText @@ -42,7 +44,7 @@ def do_add_cookie(add_cookie: type[Matcher]): await add_cookie.finish("已中止添加cookie") elif platform in platform_manager: state["platform"] = platform - state["site"] = platform_manager[platform].site + state["site"] = cast(CookieSite, platform_manager[platform].site) else: await add_cookie.reject("平台输入错误") @@ -58,12 +60,20 @@ def do_add_cookie(add_cookie: type[Matcher]): await add_cookie.reject( "无效的 Cookie,请检查后重新输入,详情见https://nonebot-bison.netlify.app/usage/cookie.html" ) - state["cookie"] = cookie_text + try: + cookie_name = await cookie_site.get_cookie_name(cookie_text) + state["cookie"] = cookie_text + state["cookie_name"] = cookie_name + except JSONDecodeError as e: + logger.error("获取 Cookie 名称失败" + str(e)) + await add_cookie.reject( + "获取 Cookie 名称失败,请检查后重新输入,详情见https://nonebot-bison.netlify.app/usage/cookie.html" + ) @add_cookie.handle() async def add_cookie_process(state: T_State): client_mgr = cast(CookieClientManager, platform_manager[state["platform"]].site.client_mgr) - new_cookie = await client_mgr.add_user_cookie(state["cookie"]) + new_cookie = await client_mgr.add_user_cookie(state["cookie"], state["cookie_name"]) await add_cookie.finish( f"已添加 Cookie: {new_cookie.cookie_name} 到平台 {state['platform']}" + "\n请使用“关联cookie”为 Cookie 关联订阅" diff --git a/nonebot_bison/utils/site.py b/nonebot_bison/utils/site.py index d975f93..e7e7a31 100644 --- a/nonebot_bison/utils/site.py +++ b/nonebot_bison/utils/site.py @@ -74,7 +74,7 @@ class CookieClientManager(ClientManager): await config.add_cookie(new_anonymous_cookie) @classmethod - async def add_user_cookie(cls, content: str): + async def add_user_cookie(cls, content: str, cookie_name=str | None) -> Cookie: """添加用户 cookie""" from ..platform import site_manager @@ -82,7 +82,7 @@ class CookieClientManager(ClientManager): if not await cookie_site.validate_cookie(content): raise ValueError() cookie = Cookie(site_name=cls._site_name, content=content) - cookie.cookie_name = await cookie_site.get_cookie_name(content) + cookie.cookie_name = cookie_name if cookie_name else await cookie_site.get_cookie_name(content) cookie.cd = cls._default_cd cookie_id = await config.add_cookie(cookie) return await config.get_cookie_by_id(cookie_id)