🎨 Update Handle InvalidCookies Exception

This commit is contained in:
洛水居室 2022-12-23 21:35:26 +08:00
parent c927b7b86b
commit 3de0f8beb5
No known key found for this signature in database
GPG Key ID: C9DE87DA724B88FC
3 changed files with 26 additions and 13 deletions

View File

@ -184,7 +184,7 @@ class AvatarListPlugin(Plugin, BasePlugin):
all_avatars = any(["all" in args, "全部" in args]) # 是否发送全部角色 all_avatars = any(["all" in args, "全部" in args]) # 是否发送全部角色
logger.info(f"用户 {user.full_name}[{user.id}] [bold]练度统计[/bold]: all={all_avatars}", extra={"markup": True}) logger.info("用户 %s[%s] [bold]练度统计[/bold]: all=%s", user.full_name, user.id, all_avatars, extra={"markup": True})
client = await self.get_user_client(user, message, context) client = await self.get_user_client(user, message, context)
if not client: if not client:
@ -193,20 +193,25 @@ class AvatarListPlugin(Plugin, BasePlugin):
notice = await message.reply_text("派蒙需要收集整理数据,还请耐心等待哦~") notice = await message.reply_text("派蒙需要收集整理数据,还请耐心等待哦~")
await message.reply_chat_action(ChatAction.TYPING) await message.reply_chat_action(ChatAction.TYPING)
characters = await client.get_genshin_characters(client.uid)
try: try:
characters = await client.get_genshin_characters(client.uid)
avatar_datas: List[AvatarData] = await self.get_avatars_data( avatar_datas: List[AvatarData] = await self.get_avatars_data(
characters, client, None if all_avatars else 20 characters, client, None if all_avatars else 20
) )
except InvalidCookies as e: except InvalidCookies as exc:
await notice.delete() await notice.delete()
raise e await client.get_genshin_user(client.uid)
logger.warning("用户 %s[%s] 无法请求角色数数据 API返回信息为 [%s]%s", user.full_name, user.id, exc.retcode, exc.original)
reply_message = await message.reply_text("出错了呜呜呜 ~ 当前账号无法请求角色数数据。\n请尝试登录通行证,在账号管理里面选择账号游戏信息,将原神设置为默认角色。")
if filters.ChatType.GROUPS.filter(message):
self._add_delete_message_job(context, reply_message.chat_id, reply_message.message_id, 30)
self._add_delete_message_job(context, message.chat_id, message.message_id, 30)
return
except GenshinException as e: except GenshinException as e:
if e.retcode == -502002: if e.retcode == -502002:
self._add_delete_message_job(context, notice.chat_id, notice.message_id, 5) await notice.delete()
notice = await message.reply_text("请先在米游社中使用一次<b>养成计算器</b>后再使用此功能~", parse_mode=ParseMode.HTML) reply_message = await message.reply_html("请先在米游社中使用一次<b>养成计算器</b>后再使用此功能~")
self._add_delete_message_job(context, notice.chat_id, notice.message_id, 20) self._add_delete_message_job(context, reply_message.chat_id, reply_message.message_id, 20)
return return
raise e raise e
@ -246,7 +251,10 @@ class AvatarListPlugin(Plugin, BasePlugin):
await image.reply_photo(message) await image.reply_photo(message)
logger.info( logger.info(
f"用户 {user.full_name}[{user.id}] [bold]练度统计[/bold]发送{'文件' if all_avatars else '图片'}成功", "用户 %s[%s] [bold]练度统计[/bold]发送%s成功",
user.full_name,
user.id,
"文件" if all_avatars else "图片",
extra={"markup": True}, extra={"markup": True},
) )

View File

@ -119,15 +119,20 @@ class Ledger(Plugin, BasePlugin):
self._add_delete_message_job(context, reply_message.chat_id, reply_message.message_id, 30) self._add_delete_message_job(context, reply_message.chat_id, reply_message.message_id, 30)
self._add_delete_message_job(context, message.chat_id, message.message_id, 30) self._add_delete_message_job(context, message.chat_id, message.message_id, 30)
return return
logger.info(f"用户 {user.full_name}[{user.id}] 查询旅行札记") logger.info("用户 %s[%s] 查询旅行札记", user.full_name, user.id)
await message.reply_chat_action(ChatAction.TYPING) await message.reply_chat_action(ChatAction.TYPING)
try: try:
client = await get_genshin_client(user.id) client = await get_genshin_client(user.id)
try: try:
render_result = await self._start_get_ledger(client, month) render_result = await self._start_get_ledger(client, month)
except InvalidCookies: # 如果抛出InvalidCookies 判断是否真的玄学过期(或权限不足?) except InvalidCookies as exc: # 如果抛出InvalidCookies 判断是否真的玄学过期(或权限不足?)
await client.get_genshin_user(client.uid) await client.get_genshin_user(client.uid)
reply_message = await message.reply_text("出错了呜呜呜 ~ 当前账号无法请求旅行札记数据。") logger.warning(
"用户 %s[%s] 无法请求旅行札记数据 API返回信息为 [%s]%s", user.full_name, user.id, exc.retcode, exc.original
)
reply_message = await message.reply_text(
"出错了呜呜呜 ~ 当前账号无法请求旅行札记数据。\n请尝试登录通行证,在账号管理里面选择账号游戏信息,将原神设置为默认角色。"
)
if filters.ChatType.GROUPS.filter(message): if filters.ChatType.GROUPS.filter(message):
self._add_delete_message_job(context, reply_message.chat_id, reply_message.message_id, 30) self._add_delete_message_job(context, reply_message.chat_id, reply_message.message_id, 30)
self._add_delete_message_job(context, message.chat_id, message.message_id, 30) self._add_delete_message_job(context, message.chat_id, message.message_id, 30)

View File

@ -103,7 +103,7 @@ def error_callable(func: Callable) -> Callable:
if exc.retcode in (10001, -100): if exc.retcode in (10001, -100):
text = "出错了呜呜呜 ~ Cookie 无效,请尝试重新绑定" text = "出错了呜呜呜 ~ Cookie 无效,请尝试重新绑定"
elif exc.retcode == 10103: elif exc.retcode == 10103:
text = "出错了呜呜呜 ~ Cookie 有效,但没有绑定到游戏帐户,请尝试重新绑定" text = "出错了呜呜呜 ~ Cookie 有效,但没有绑定到游戏帐户,请尝试登录通行证,在账号管理里面选择账号游戏信息,将原神设置为默认角色。"
else: else:
logger.warning("Cookie错误") logger.warning("Cookie错误")
logger.exception(exc) logger.exception(exc)