nonebot-plugin-mystool
nonebot-plugin-mystool copied to clipboard
我发现/任务指令不会通过人机验证,但签到可以通过,这是什么情况
可以的话还是贴一下debug级的日志吧,插件很多信息用的debug级显示的
可以的话还是贴一下debug级的日志吧,插件很多信息用的debug级显示的
07-29 08:31:37 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 07-29 08:31:37 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034}
可以的话还是贴一下debug级的日志吧,插件很多信息用的debug级显示的
07-29 08:31:37 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 07-29 08:31:37 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034}
后面还有吗,贴全一点
可以的话还是贴一下debug级的日志吧,插件很多信息用的debug级显示的
这个应该也算是bug吧,但没有log
可以的话还是贴一下debug级的日志吧,插件很多信息用的debug级显示的
07-29 08:31:37 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 07-29 08:31:37 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034}
后面还有吗,贴全一点
07-28 18:59:51 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 07-28 18:59:51 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034} 07-28 19:00:39 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 07-28 19:00:39 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034} 07-28 19:05:43 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 07-28 19:05:43 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034}
https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/stable/src%2Fnonebot_plugin_mystool%2Fapi%2Fmyb_missions_api.py#L154-L159 那应该就是这一段if的条件为false了,又没有else,你可以自己去添加一些去排除是具体这里那一段判断出问题
https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/stable/src%2Fnonebot_plugin_mystool%2Fapi%2Fmyb_missions_api.py#L154-L159 那应该就是这一段if的条件为false了,又没有else,你可以自己去添加一些去排除是具体这里那一段判断出问题
看不懂的说,我是小白
打开api文件夹里的myb_missions_api.py文件
https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/0a02b01f9bd238906e41ca17c9036210d99dd5df/src/nonebot_plugin_mystool/api/myb_missions_api.py#L152-L159
把上面的内容换成下面的
if plugin_config.preference.geetest_url or user.geetest_url:
create_status, mmt_data = await create_verification(self.account)
logger.debug('米游币签到正在创建验证')
if create_status:
logger.debug('米游币签到创建验证成功')
if geetest_result := await get_validate(user, mmt_data.gt, mmt_data.challenge):
logger.debug('米游币签到获取验证结果成功')
if await verify_verification(mmt_data, geetest_result, self.account):
logger.success(
f"米游币任务 - 讨论区签到: 用户 {self.account.display_name} 人机验证通过")
continue
然后再重新启动机器人后再/任务看看log
打开api文件夹里的
myb_missions_api.py文件https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/0a02b01f9bd238906e41ca17c9036210d99dd5df/src/nonebot_plugin_mystool/api/myb_missions_api.py#L152-L159
把上面的内容换成下面的
if plugin_config.preference.geetest_url or user.geetest_url: create_status, mmt_data = await create_verification(self.account) logger.debug('米游币签到正在创建验证') if create_status: logger.debug('米游币签到创建验证成功') if geetest_result := await get_validate(user, mmt_data.gt, mmt_data.challenge): logger.debug('米游币签到获取验证结果成功') if await verify_verification(mmt_data, geetest_result, self.account): logger.success( f"米游币任务 - 讨论区签到: 用户 {self.account.display_name} 人机验证通过") continue然后再重新启动机器人后再/任务看看log
应该有用,我的一个人用的,所以等我下次看看能不能通过人机验证
这给出来的不是解决方法,替换的内容是在查哪里出了问题,通过查看日志看下哪条日志没输出来判断问题在哪 但是有可能重启后就没这个问题
这给出来的不是解决方法,替换的内容是在查哪里出了问题,通过查看日志看下哪条日志没输出来判断问题在哪 但是有可能重启后就没这个问题
因为我打过卡,而且第二次试的时候没有跳人机验证,等我下次遇到再看看log吧,目前log没问题
这给出来的不是解决方法,替换的内容是在查哪里出了问题,通过查看日志看下哪条日志没输出来判断问题在哪 但是有可能重启后就没这个问题
这样的 08-05 15:26:36 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 08-05 15:26:36 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034} 08-05 15:26:37 [DEBUG] nonebot_plugin_mystool | 米游币签到正在创建验证 08-05 15:26:37 [DEBUG] nonebot_plugin_mystool | 米游币签到创建验证成功 08-05 15:26:37 [DEBUG] nonebot_plugin_mystool | 米游币签到获取验证结果成功
if plugin_config.preference.geetest_url or user.geetest_url:
create_status, mmt_data = await create_verification(self.account)
logger.debug('米游币签到正在创建验证')
if create_status:
logger.debug('米游币签到创建验证成功')
if geetest_result := await get_validate(user, mmt_data.gt, mmt_data.challenge):
logger.debug(f'米游币签到获取验证结果成功:{geetest_result}')
verify_result = await verify_verification(mmt_data, geetest_result, self.account)
logger.debug(f'米游币返回签到结果:{verify_result}')
if verify_result:
logger.success(
f"米游币任务 - 讨论区签到: 用户 {self.account.display_name} 人机验证通过")
continue
再试试用这个,看起来像是卡在verify_verification这里,得看下什么内容
if plugin_config.preference.geetest_url or user.geetest_url: create_status, mmt_data = await create_verification(self.account) logger.debug('米游币签到正在创建验证') if create_status: logger.debug('米游币签到创建验证成功') if geetest_result := await get_validate(user, mmt_data.gt, mmt_data.challenge): logger.debug(f'米游币签到获取验证结果成功:{geetest_result}') verify_result = await verify_verification(mmt_data, geetest_result, self.account) logger.debug(f'米游币返回签到结果:{verify_result}') if verify_result: logger.success( f"米游币任务 - 讨论区签到: 用户 {self.account.display_name} 人机验证通过") continue再试试用这个,看起来像是卡在
verify_verification这里,得看下什么内容
这样的,其实我还有一点感到很奇怪,我用了人人打码的平台,用的是自己的key,没有启动打码的确实签到不成功,但启动打码,虽然可以成功,但神奇的是,我账户没有验证记录,也没消耗积分,真的奇了怪了 08-05 15:53:44 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 08-05 15:53:44 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034} 08-05 15:53:44 [DEBUG] nonebot_plugin_mystool | 米游币签到正在创建验证 08-05 15:53:44 [DEBUG] nonebot_plugin_mystool | 米游币签到创建验证成功 08-05 15:53:44 [DEBUG] nonebot_plugin_mystool | 米游币签到获取验证结果成功:GeetestResult(validate='', seccode='') 08-05 15:53:44 [DEBUG] nonebot_plugin_mystool | 米游币返回签到结果:success=False network_error=False incorrect_return=False login_expired=False need_verify=False invalid_ds=False
估计是没能成功调用打码平台的API,这里 get_validate 返回的结果是空的(GeetestResult(validate='', seccode=''))
get_validate也有问题,里面有两个debug的日志没输出,还是 @FeiGePro 的文件里get_validate没有了logger的输出?
@FeiGePro 截一下游戏签到的相关debug日志出来看下
get_validate也有问题,里面有两个debug的日志没输出,还是 @FeiGePro 的文件里get_validate没有了logger的输出? @FeiGePro 截一下游戏签到的相关debug日志出来看下
这个吗
估计是没能成功调用打码平台的API,这里
get_validate返回的结果是空的(GeetestResult(validate='', seccode=''))
我也是这样猜想的,但毕竟不影响签到就没太在意,但任务签到是不能完成的
/签到的那个,不是/任务 去找/签到的需要人机验证的那个日志
就一个log文件吧 08-05 16:29:26 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证 08-05 16:29:26 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034} 08-05 16:29:27 [DEBUG] nonebot_plugin_mystool | 米游币签到正在创建验证 08-05 16:29:27 [DEBUG] nonebot_plugin_mystool | 米游币签到创建验证成功 08-05 16:29:27 [DEBUG] nonebot_plugin_mystool | 米游币签到获取验证结果成功:GeetestResult(validate='', seccode='') 08-05 16:29:27 [DEBUG] nonebot_plugin_mystool | 米游币返回签到结果:success=False network_error=False incorrect_return=False login_expired=False need_verify=False invalid_ds=False
/签到的那个,不是/任务 去找/签到的需要人机验证的那个日志
你去dataV2.json 的同级目录下的那个mystool.log中找这两条
你去dataV2.json 的同级目录下的那个mystool.log中找这两条
日志里,没有这个,我的是任务签到不成功,游戏签到可以成功,那我游戏签到的log发给你 08-05 15:24:49 [WARNING] nonebot_plugin_mystool | 游戏签到 - 用户 190024575 可能被人机验证阻拦 08-05 15:24:49 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"retcode":0,"message":"OK","data":{"code":"","risk_code":375,"gt":"f1342eaf43e356aa680d18f55fa1f1ca","challenge":"3354118fef97a9248eb4937f140d4cc5","success":1,"is_risk":true}} 08-05 15:24:50 [INFO] nonebot_plugin_mystool | 游戏签到 - 尝试使用人机验证结果进行签到 08-05 15:24:50 [SUCCESS] nonebot_plugin_mystool | 游戏签到 - 用户 190024575 签到成功 08-05 15:24:50 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"retcode":0,"message":"OK","data":{"code":"","risk_code":0,"gt":"","challenge":"","success":0,"is_risk":false}} 08-05 15:24:57 [WARNING] nonebot_plugin_mystool | 游戏签到 - 用户 190024575 可能被人机验证阻拦 08-05 15:24:57 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"retcode":0,"message":"OK","data":{"code":"","risk_code":5001,"gt":"bd435bc21c1e44304e33db31e976b868","challenge":"90fadbaa2b1579c473bb91bcaf0139ab","success":1,"is_risk":true}} 08-05 15:24:57 [INFO] nonebot_plugin_mystool | 游戏签到 - 尝试使用人机验证结果进行签到 08-05 15:24:57 [SUCCESS] nonebot_plugin_mystool | 游戏签到 - 用户 190024575 签到成功 08-05 15:24:57 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"retcode":0,"message":"OK","data":{"code":"","risk_code":0,"gt":"","challenge":"","success":0,"is_risk":false}} 08-05 15:25:04 [WARNING] nonebot_plugin_mystool | 游戏签到 - 用户 190024575 可能被人机验证阻拦 08-05 15:25:04 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"retcode":0,"message":"OK","data":{"code":"","risk_code":5001,"gt":"afa69b855e321950b027ebab65f86ce8","challenge":"2f6f28d7a5210411f06df0b8ec55cbe7","success":1,"is_risk":true}} 08-05 15:25:05 [INFO] nonebot_plugin_mystool | 游戏签到 - 尝试使用人机验证结果进行签到 08-05 15:25:05 [SUCCESS] nonebot_plugin_mystool | 游戏签到 - 用户 190024575 签到成功 08-05 15:25:05 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"retcode":0,"message":"OK","data":{"code":"","risk_code":0,"gt":"","challenge":"","success":0,"is_risk":false}} 08-05 15:25:12 [WARNING] nonebot_plugin_mystool | 游戏签到 - 用户 190024575 可能被人机验证阻拦 08-05 15:25:12 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"retcode":0,"message":"OK","data":{"code":"","risk_code":5001,"gt":"ccc71324fd054bb75dc80f0467319a4f","challenge":"d73424a3ae17eb730e408d1b159a88c2","success":1,"is_risk":true}}
https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/0a02b01f9bd238906e41ca17c9036210d99dd5df/src/nonebot_plugin_mystool/utils/common.py#L235-L279
https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/0a02b01f9bd238906e41ca17c9036210d99dd5df/src/nonebot_plugin_mystool/utils/common.py#L273-L274
get_validate函数里,有没有logger.debug(f"{plugin_config.preference.log_head}人机验证结果:{geetest_data}")这行,没有的话加上去运行看下输出什么
https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/0a02b01f9bd238906e41ca17c9036210d99dd5df/src/nonebot_plugin_mystool/utils/common.py#L235-L279
https://github.com/Ljzd-PRO/nonebot-plugin-mystool/blob/0a02b01f9bd238906e41ca17c9036210d99dd5df/src/nonebot_plugin_mystool/utils/common.py#L273-L274
get_validate函数里,有没有logger.debug(f"{plugin_config.preference.log_head}人机验证结果:{geetest_data}")这行,没有的话加上去运行看下输出什么
有的,但这里没输出
async def get_validate(user: UserData, gt: str = None, challenge: str = None, retry: bool = True):
"""
使用打码平台获取人机验证validate
:param user: 用户数据对象
:param gt: 验证码gt
:param challenge: challenge
:param retry: 是否允许重试
:return: 如果配置了平台URL,且 gt, challenge 不为空,返回 GeetestResult
"""
try:
if not plugin_config.preference.global_geetest:
if not (gt and challenge) or not user.geetest_url:
return GeetestResult("", "")
geetest_url = user.geetest_url
params = {"gt": gt, "challenge": challenge}
params.update(user.geetest_params)
else:
if not (gt and challenge) or not plugin_config.preference.geetest_url:
return GeetestResult("", "")
geetest_url = plugin_config.preference.geetest_url
params = {"gt": gt, "challenge": challenge}
params.update(plugin_config.preference.geetest_params)
content = deepcopy(plugin_config.preference.geetest_json or Preference().geetest_json)
for key, value in content.items():
if isinstance(value, str):
content[key] = value.format(gt=gt, challenge=challenge)
debug_log = {"geetest_url": geetest_url, "params": params, "content": content}
logger.debug(f"{plugin_config.preference.log_head}get_validate: {debug_log}")
async for attempt in get_async_retry(retry):
with attempt:
async with httpx.AsyncClient() as client:
res = await client.post(
geetest_url,
params=params,
json=content,
timeout=60
)
geetest_data = res.json()
print(f"{plugin_config.preference.log_head}人机验证结果:{geetest_data}") #logger不输出情况
logger.debug(f"{plugin_config.preference.log_head}人机验证结果:{geetest_data}")
validate = geetest_data['data']['validate']
seccode = geetest_data['data'].get('seccode') or f"{validate}|jordan"
return GeetestResult(validate=validate, seccode=seccode)
except Exception as e:
logger.exception(f"{plugin_config.preference.log_head}获取人机验证validate失败")
print(f"reason:{type(e)},{e}")
logger.error(f"reason:{type(e)},{e}")
替换尝试一下,看下哪里有报错没,贴一下你config.json里关于打码平台的配置
async def get_validate(user: UserData, gt: str = None, challenge: str = None, retry: bool = True): """ 使用打码平台获取人机验证validate :param user: 用户数据对象 :param gt: 验证码gt :param challenge: challenge :param retry: 是否允许重试 :return: 如果配置了平台URL,且 gt, challenge 不为空,返回 GeetestResult """ try: if not plugin_config.preference.global_geetest: if not (gt and challenge) or not user.geetest_url: return GeetestResult("", "") geetest_url = user.geetest_url params = {"gt": gt, "challenge": challenge} params.update(user.geetest_params) else: if not (gt and challenge) or not plugin_config.preference.geetest_url: return GeetestResult("", "") geetest_url = plugin_config.preference.geetest_url params = {"gt": gt, "challenge": challenge} params.update(plugin_config.preference.geetest_params) content = deepcopy(plugin_config.preference.geetest_json or Preference().geetest_json) for key, value in content.items(): if isinstance(value, str): content[key] = value.format(gt=gt, challenge=challenge) debug_log = {"geetest_url": geetest_url, "params": params, "content": content} logger.debug(f"{plugin_config.preference.log_head}get_validate: {debug_log}") async for attempt in get_async_retry(retry): with attempt: async with httpx.AsyncClient() as client: res = await client.post( geetest_url, params=params, json=content, timeout=60 ) geetest_data = res.json() print(f"{plugin_config.preference.log_head}人机验证结果:{geetest_data}") #logger不输出情况 logger.debug(f"{plugin_config.preference.log_head}人机验证结果:{geetest_data}") validate = geetest_data['data']['validate'] seccode = geetest_data['data'].get('seccode') or f"{validate}|jordan" return GeetestResult(validate=validate, seccode=seccode) except Exception as e: logger.exception(f"{plugin_config.preference.log_head}获取人机验证validate失败") print(f"reason:{type(e)},{e}") logger.error(f"reason:{type(e)},{e}")替换尝试一下,看下哪里有报错没,贴一下你config.json里关于打码平台的配置
我知道了,我geetest_url是配置在data内的,我发现之后配置在config启动机器签到就报错了,我试过抛给gpt解决这个bug,好像不太行
08-06 09:30:45 [ERROR] nonebot_plugin_mystool | 米游币任务 - 讨论区签到: 用户 190024575 需要完成人机验证
08-06 09:30:45 [DEBUG] nonebot_plugin_mystool | 网络请求返回: {"data":null,"message":"","retcode":1034}
08-06 09:30:45 [DEBUG] nonebot_plugin_mystool | 米游币签到正在创建验证
08-06 09:30:45 [DEBUG] nonebot_plugin_mystool | 米游币签到创建验证成功
08-06 09:30:45 [ERROR] nonebot_plugin_mystool | 获取人机验证validate失败
Traceback (most recent call last):
File "
File "C:\Users\Fei_Ge\PycharmProjects\awesome-bot.venv\lib\site-packages\nonebot_plugin_mystool\utils\common.py", line 258, in get_validate params.update(plugin_config.preference.geetest_params) TypeError: 'NoneType' object is not iterable 08-06 09:30:45 [ERROR] nonebot_plugin_mystool | reason:<class 'TypeError'>,'NoneType' object is not iterable
这个问题去用dev分支,dev分支有个推送已经解决了的
这个问题去用dev分支,dev分支有个推送已经解决了的
我好像,不太会下分支版本,不能直接用nb安装的话,我直接下载到本地替换,然后检测不到这个mystool模块,是不是还要修改我项目的pyproject.toml?
下分支版本,你可以简单的切换到dev,然后下载zip
替换
如果之前是nb安装,那需要在找到python环境包的文件夹里找到替换 不然就切换插件的安装方式,源码安装
好的好的,超级感谢,但我发现我直接用dev内src的替换nonebot-plugin-mystool之后,我签到命令都用不了了,只能用登录和帮助

