mirror of
https://github.com/PaiGramTeam/PamGram.git
synced 2024-11-25 07:36:27 +00:00
🎨 Use CookiesModel
to parse cookies
This commit is contained in:
parent
6723c63117
commit
a7f597708f
@ -18,6 +18,7 @@ from core.user.error import UserNotFoundError
|
|||||||
from core.user.models import User
|
from core.user.models import User
|
||||||
from core.user.services import UserService
|
from core.user.services import UserService
|
||||||
from modules.apihelper.client.components.authclient import AuthClient
|
from modules.apihelper.client.components.authclient import AuthClient
|
||||||
|
from modules.apihelper.models.genshin.cookies import CookiesModel
|
||||||
from utils.decorators.error import error_callable
|
from utils.decorators.error import error_callable
|
||||||
from utils.decorators.restricts import restricts
|
from utils.decorators.restricts import restricts
|
||||||
from utils.log import logger
|
from utils.log import logger
|
||||||
@ -219,25 +220,28 @@ class SetUserCookies(Plugin.Conversation, BasePlugin.Conversation):
|
|||||||
user = update.effective_user
|
user = update.effective_user
|
||||||
message = update.effective_message
|
message = update.effective_message
|
||||||
add_user_command_data: AddUserCommandData = context.chat_data.get("add_user_command_data")
|
add_user_command_data: AddUserCommandData = context.chat_data.get("add_user_command_data")
|
||||||
cookies = add_user_command_data.cookies
|
cookies = CookiesModel(**add_user_command_data.cookies)
|
||||||
if add_user_command_data.region == RegionEnum.HYPERION:
|
if add_user_command_data.region == RegionEnum.HYPERION:
|
||||||
client = genshin.Client(cookies=cookies, region=types.Region.CHINESE)
|
client = genshin.Client(cookies=cookies.to_dict(), region=types.Region.CHINESE)
|
||||||
elif add_user_command_data.region == RegionEnum.HOYOLAB:
|
elif add_user_command_data.region == RegionEnum.HOYOLAB:
|
||||||
client = genshin.Client(cookies=cookies, region=types.Region.OVERSEAS)
|
client = genshin.Client(cookies=cookies.to_dict(), region=types.Region.OVERSEAS)
|
||||||
else:
|
else:
|
||||||
logger.error("用户 %s[%s] region 异常", user.full_name, user.id)
|
logger.error("用户 %s[%s] region 异常", user.full_name, user.id)
|
||||||
await message.reply_text("数据错误", reply_markup=ReplyKeyboardRemove())
|
await message.reply_text("数据错误", reply_markup=ReplyKeyboardRemove())
|
||||||
return ConversationHandler.END
|
return ConversationHandler.END
|
||||||
|
if not cookies.check():
|
||||||
|
await message.reply_text("检测到Cookie不完整,可能会出现问题。", reply_markup=ReplyKeyboardRemove())
|
||||||
try:
|
try:
|
||||||
if "account_mid_v2" in cookies:
|
if client.cookie_manager.user_id is None:
|
||||||
logger.info("检测到用户 %s[%s] 使用 V2 Cookie 正在尝试获取 account_id", user.full_name, user.id)
|
if cookies.is_v2:
|
||||||
if client.region == types.Region.CHINESE:
|
logger.info("检测到用户 %s[%s] 使用 V2 Cookie 正在尝试获取 account_id", user.full_name, user.id)
|
||||||
account_info = await client.get_hoyolab_user()
|
if client.region == types.Region.CHINESE:
|
||||||
account_id = account_info.hoyolab_id
|
account_info = await client.get_hoyolab_user()
|
||||||
add_user_command_data.cookies["account_id"] = str(account_id)
|
account_id = account_info.hoyolab_id
|
||||||
logger.success("获取用户 %s[%s] account_id[%s] 成功", user.full_name, user.id, account_id)
|
cookies.set_v2_uid(account_id)
|
||||||
else:
|
logger.success("获取用户 %s[%s] account_id[%s] 成功", user.full_name, user.id, account_id)
|
||||||
logger.warning("用户 %s[%s] region[%s] 也许是不正确的", user.full_name, user.id, client.region.name)
|
else:
|
||||||
|
logger.warning("用户 %s[%s] region[%s] 也许是不正确的", user.full_name, user.id, client.region.name)
|
||||||
genshin_accounts = await client.genshin_accounts()
|
genshin_accounts = await client.genshin_accounts()
|
||||||
except DataNotPublic:
|
except DataNotPublic:
|
||||||
logger.info("用户 %s[%s] 账号疑似被注销", user.full_name, user.id)
|
logger.info("用户 %s[%s] 账号疑似被注销", user.full_name, user.id)
|
||||||
@ -261,18 +265,15 @@ class SetUserCookies(Plugin.Conversation, BasePlugin.Conversation):
|
|||||||
await message.reply_text("Cookies错误,请检查是否正确", reply_markup=ReplyKeyboardRemove())
|
await message.reply_text("Cookies错误,请检查是否正确", reply_markup=ReplyKeyboardRemove())
|
||||||
return ConversationHandler.END
|
return ConversationHandler.END
|
||||||
with contextlib.suppress(Exception):
|
with contextlib.suppress(Exception):
|
||||||
if cookies.get("login_ticket"):
|
if cookies.login_ticket is not None:
|
||||||
auth_client = AuthClient(cookies=add_user_command_data.cookies)
|
auth_client = AuthClient(cookies=cookies)
|
||||||
if await auth_client.get_stoken_by_login_ticket():
|
if await auth_client.get_stoken_by_login_ticket():
|
||||||
logger.success("用户 %s[%s] 绑定时获取 stoken 成功", user.full_name, user.id)
|
logger.success("用户 %s[%s] 绑定时获取 stoken 成功", user.full_name, user.id)
|
||||||
add_user_command_data.cookies = auth_client.cookies.to_dict()
|
|
||||||
if await auth_client.get_cookie_token_by_stoken():
|
if await auth_client.get_cookie_token_by_stoken():
|
||||||
logger.success("用户 %s[%s] 绑定时获取 cookie_token 成功", user.full_name, user.id)
|
logger.success("用户 %s[%s] 绑定时获取 cookie_token 成功", user.full_name, user.id)
|
||||||
add_user_command_data.cookies = auth_client.cookies.to_dict()
|
|
||||||
if await auth_client.get_ltoken_by_stoken():
|
if await auth_client.get_ltoken_by_stoken():
|
||||||
logger.success("用户 %s[%s] 绑定时获取 ltoken 成功", user.full_name, user.id)
|
logger.success("用户 %s[%s] 绑定时获取 ltoken 成功", user.full_name, user.id)
|
||||||
auth_client.cookies.remove_v2()
|
auth_client.cookies.remove_v2()
|
||||||
add_user_command_data.cookies = auth_client.cookies.to_dict()
|
|
||||||
user_info: Optional[GenshinAccount] = None
|
user_info: Optional[GenshinAccount] = None
|
||||||
level: int = 0
|
level: int = 0
|
||||||
# todo : 多账号绑定
|
# todo : 多账号绑定
|
||||||
@ -295,6 +296,7 @@ class SetUserCookies(Plugin.Conversation, BasePlugin.Conversation):
|
|||||||
f"服务器名称:`{user_info.server_name}`\n"
|
f"服务器名称:`{user_info.server_name}`\n"
|
||||||
)
|
)
|
||||||
await message.reply_markdown_v2(text, reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))
|
await message.reply_markdown_v2(text, reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))
|
||||||
|
add_user_command_data.cookies = auth_client.cookies.to_dict()
|
||||||
return COMMAND_RESULT
|
return COMMAND_RESULT
|
||||||
|
|
||||||
@conversation.state(state=COMMAND_RESULT)
|
@conversation.state(state=COMMAND_RESULT)
|
||||||
|
Loading…
Reference in New Issue
Block a user