From ffae6f2ec58d6398ebdb631119b7e645012153f4 Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Mon, 26 Aug 2024 18:09:26 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B7=BB=E5=8A=A0cookie=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=E6=98=BE=E7=A4=BA=E5=85=B3=E8=81=94=E7=9A=84?= =?UTF-8?q?cookie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_bison/apis.py | 2 +- nonebot_bison/sub_manager/add_cookie.py | 2 +- .../sub_manager/add_cookie_target.py | 31 ++++---------- nonebot_bison/sub_manager/utils.py | 41 ++++++++++++++++++- 4 files changed, 49 insertions(+), 27 deletions(-) diff --git a/nonebot_bison/apis.py b/nonebot_bison/apis.py index 9bb9176..c4f247a 100644 --- a/nonebot_bison/apis.py +++ b/nonebot_bison/apis.py @@ -20,4 +20,4 @@ async def check_sub_target_cookie(platform_name: str, target: Target, cookie: st async def get_cookie_friendly_name(cookie: Cookie): # TODO - return cookie.platform_name + cookie.content[:10] + return f"{cookie.platform_name} [{cookie.content[:10]}]" diff --git a/nonebot_bison/sub_manager/add_cookie.py b/nonebot_bison/sub_manager/add_cookie.py index 1f7a525..f6ba356 100644 --- a/nonebot_bison/sub_manager/add_cookie.py +++ b/nonebot_bison/sub_manager/add_cookie.py @@ -59,5 +59,5 @@ def do_add_cookie(add_cookie: type[Matcher]): async def add_cookie_process(state: T_State, user: PlatformTarget = Arg("target_user_info")): await config.add_cookie(user, state["platform"], state["cookie"]) await add_cookie.finish( - f"已添加 Cookie: {state['cookie']} 到平台 {state['platform']}" + "\n请使用“关联cookie”为 cookie 关联订阅" + f"已添加 Cookie: {state['cookie']} 到平台 {state['platform']}" + "\n请使用“关联cookie”为 Cookie 关联订阅" ) diff --git a/nonebot_bison/sub_manager/add_cookie_target.py b/nonebot_bison/sub_manager/add_cookie_target.py index 24196c6..7244736 100644 --- a/nonebot_bison/sub_manager/add_cookie_target.py +++ b/nonebot_bison/sub_manager/add_cookie_target.py @@ -5,11 +5,9 @@ from nonebot.internal.adapter import MessageTemplate from nonebot_plugin_saa import MessageFactory, PlatformTarget from ..config import config -from ..types import Category from ..utils import parse_text -from ..platform import platform_manager from ..apis import get_cookie_friendly_name -from .utils import ensure_user_info, gen_handle_cancel +from .utils import ensure_user_info, gen_handle_cancel, generate_sub_list_text def do_add_cookie_target(add_cookie_target_matcher: type[Matcher]): @@ -19,26 +17,9 @@ def do_add_cookie_target(add_cookie_target_matcher: type[Matcher]): @add_cookie_target_matcher.handle() async def init_promote(state: T_State, user_info: PlatformTarget = Arg("target_user_info")): - sub_list = await config.list_subscribe(user_info) - if not sub_list: - await add_cookie_target_matcher.finish("暂无已订阅账号\n请使用“添加订阅”命令添加订阅") - res = "订阅的帐号为:\n" - state["sub_table"] = {} - for index, sub in enumerate(sub_list, 1): - state["sub_table"][index] = { - "platform_name": sub.target.platform_name, - "target": sub.target.target, - } - res += f"{index} {sub.target.platform_name} {sub.target.target_name} {sub.target.target}\n" - if platform := platform_manager.get(sub.target.platform_name): - if platform.categories: - res += " [{}]".format(", ".join(platform.categories[Category(x)] for x in sub.categories)) - if platform.enable_tag: - res += " {}".format(", ".join(sub.tags)) - else: - res += f" (平台 {sub.target.platform_name} 已失效,请删除此订阅)" - if res[-1] != "\n": - res += "\n" + res = await generate_sub_list_text( + add_cookie_target_matcher, state, user_info, is_index=True, is_show_cookie=True + ) res += "请输入要关联 cookie 的订阅的序号\n输入'取消'中止" await MessageFactory(await parse_text(res)).send() @@ -64,7 +45,9 @@ def do_add_cookie_target(add_cookie_target_matcher: type[Matcher]): associated_cookie_ids = {cookie.id for cookie in associated_cookies} cookies = [cookie for cookie in cookies if cookie.id not in associated_cookie_ids] if not cookies: - await add_cookie_target_matcher.finish("当前平台暂无 Cookie,请使用“添加cookie”命令添加") + await add_cookie_target_matcher.finish( + "当前平台暂无可关联的 Cookie,请使用“添加cookie”命令添加或检查已关联的 Cookie" + ) state["cookies"] = cookies state["_prompt"] = "请选择一个 Cookie,已关联的 Cookie 不会显示\n" + "\n".join( [f"{idx}. {await get_cookie_friendly_name(cookie)}" for idx, cookie in enumerate(cookies, 1)] diff --git a/nonebot_bison/sub_manager/utils.py b/nonebot_bison/sub_manager/utils.py index d069496..71a06e3 100644 --- a/nonebot_bison/sub_manager/utils.py +++ b/nonebot_bison/sub_manager/utils.py @@ -6,11 +6,14 @@ from nonebot.adapters import Event from nonebot.typing import T_State from nonebot.matcher import Matcher from nonebot.permission import SUPERUSER -from nonebot_plugin_saa import extract_target from nonebot.params import Depends, EventToMe, EventPlainText +from nonebot_plugin_saa import PlatformTarget, extract_target +from ..config import config +from ..types import Category from ..platform import platform_manager from ..plugin_config import plugin_config +from ..apis import get_cookie_friendly_name def _configurable_to_me(to_me: bool = EventToMe()): @@ -60,3 +63,39 @@ def admin_permission(): permission = permission | GROUP_ADMIN | GROUP_OWNER return permission + + +async def generate_sub_list_text( + matcher: type[Matcher], state: T_State, user_info: PlatformTarget, is_index=False, is_show_cookie=False +): + sub_list = await config.list_subscribe(user_info) + if not sub_list: + await matcher.finish("暂无已订阅账号\n请使用“添加订阅”命令添加订阅") + res = "订阅的帐号为:\n" + state["sub_table"] = {} + for index, sub in enumerate(sub_list, 1): + state["sub_table"][index] = { + "platform_name": sub.target.platform_name, + "target": sub.target.target, + } + res += f"{index} " if is_index else "" + res += f"{sub.target.platform_name} {sub.target.target_name} {sub.target.target}\n" + if platform := platform_manager.get(sub.target.platform_name): + if platform.categories: + res += " [{}]".format(", ".join(platform.categories[Category(x)] for x in sub.categories)) + "\n" + if platform.enable_tag: + if sub.tags: + res += " {}".format(", ".join(sub.tags)) + "\n" + if is_show_cookie: + target_cookies = await config.get_cookie( + user=user_info, target=sub.target.target, platform_name=sub.target.platform_name + ) + if target_cookies: + res += " 关联的 Cookie:\n" + for cookie in target_cookies: + res += f" \t{await get_cookie_friendly_name(cookie)}\n" + + else: + res += f" (平台 {sub.target.platform_name} 已失效,请删除此订阅)" + + return res