添加cookie的时候显示关联的cookie

This commit is contained in:
suyiiyii 2024-08-26 18:09:26 +08:00
parent 6f20dbf358
commit ffae6f2ec5
4 changed files with 49 additions and 27 deletions

View File

@ -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]}]"

View File

@ -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 关联订阅"
)

View File

@ -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)]

View File

@ -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