diff --git a/LittlePaimon/plugins/Paimon_Autobbs/sign_handle.py b/LittlePaimon/plugins/Paimon_Autobbs/sign_handle.py
index 03820a9..06ffff7 100644
--- a/LittlePaimon/plugins/Paimon_Autobbs/sign_handle.py
+++ b/LittlePaimon/plugins/Paimon_Autobbs/sign_handle.py
@@ -25,12 +25,13 @@ sign_reward_list: dict = {}
async def pass_geetest(data: Dict[str, Any]):
- url = f'https://api.geetest.com/ajax.php?gt={data["gt"]}&challenge={data["challenge"]}&lang=zh-cn&pt=3&client_type=web_mobile'
- resp = await aiorequests.get(url, headers=GEETEST_HEADER)
- if resp.status_code == 200:
- resp_data = json.loads(resp.text.replace('(', '').replace(')', ''))
- if 'success' in resp_data['status'] and 'success' in resp_data['data']['result']:
- return resp_data['data']['validate']
+ if data is not None:
+ url = f'https://api.geetest.com/ajax.php?gt={data["gt"]}&challenge={data["challenge"]}&lang=zh-cn&pt=3&client_type=web_mobile'
+ resp = await aiorequests.get(url, headers=GEETEST_HEADER)
+ if resp.status_code == 200:
+ resp_data = json.loads(resp.text.replace('(', '').replace(')', ''))
+ if 'success' in resp_data['status'] and 'success' in resp_data['data']['result']:
+ return resp_data['data']['validate']
return None
@@ -70,7 +71,7 @@ async def mhy_bbs_sign(user_id: str, uid: str) -> Tuple[SignResult, str]:
defaults={'uid': uid, 'last_time': datetime.datetime.now()})
sign_info = await get_mihoyo_private_data(uid, user_id, 'sign_info')
if isinstance(sign_info, str):
- logger.info('米游社原神签到', '➤', {'用户': user_id, 'UID': uid}, '未绑定私人cookie', False)
+ logger.info('米游社原神签到', '➤', {'用户': user_id, 'UID': uid}, '未绑定私人cookie或已失效', False)
await MihoyoBBSSub.filter(user_id=user_id, uid=uid).delete()
return SignResult.FAIL, sign_info
elif sign_info['data']['is_sign']:
@@ -99,8 +100,9 @@ async def mhy_bbs_sign(user_id: str, uid: str) -> Tuple[SignResult, str]:
signed_days = sign_info['data']['total_sign_day']
return SignResult.SUCCESS, f'签到成功,获得的奖励为\n{sign_reward_list[signed_days]["name"]}*{sign_reward_list[signed_days]["cnt"]}'
else:
- logger.info('米游社原神签到', '➤', {'用户': user_id, 'UID': uid}, f'出现验证码,重试第{i}次', False)
- await asyncio.sleep(random.randint(30, 45))
+ wait_time = random.randint(45, 60)
+ logger.info('米游社原神签到', '➤', {'用户': user_id, 'UID': uid}, f'出现验证码,等待{wait_time}秒后进行第{i + 1}次尝试绕过', False)
+ await asyncio.sleep(wait_time)
logger.info('米游社原神签到', '➤', {'用户': user_id, 'UID': uid}, '尝试6次签到失败,无法绕过验证码', False)
return SignResult.FAIL, f'{uid}签到失败,无法绕过验证码'
@@ -122,7 +124,7 @@ async def bbs_auto_sign():
if not subs:
# 如果没有米游社原神签到订阅,则不执行签到任务
return
- logger.info('米游社原神签到', f'开始执行米游社自动签到,共{len(subs)}个任务,预计花费{round(40 * len(subs) / 60, 2)}分钟')
+ logger.info('米游社原神签到', f'开始执行米游社自动签到,共{len(subs)}个任务,预计花费{round(100 * len(subs) / 60, 2)}分钟')
sign_result_group = defaultdict(list)
sign_result_private = defaultdict(list)
for sub in subs:
@@ -144,7 +146,7 @@ async def bbs_auto_sign():
if result == SignResult.DONE:
await asyncio.sleep(random.randint(3, 8))
else:
- await asyncio.sleep(random.randint(30, 45))
+ await asyncio.sleep(random.randint(45, 60))
for group_id, sign_result in sign_result_group.items():
# 发送签到结果到群