Lanly109 / headimg_generator

基于HoshinoBot的制作头像相关的表情包插件,移植自nonebot-plugin-petpet
MIT License
50 stars 11 forks source link

使用at和’自己‘方式触发时报错 #52

Closed assassingyk closed 2 months ago

assassingyk commented 4 months ago

如题。正常文字图片触发正常,但是使用自己和at触发时报错“参数解析错误”

image image

assassingyk commented 4 months ago

加了点打印报错打印看了下,好像是get_info方法返回的gender为空的问题,是不是qq改了member_info的格式了

ParamsMismatch(key="petpet", message="Argument model validation failed: 1 validation error for Model
user_infos.0.gender
  Input should be 'male', 'female' or 'unknown' [type=literal_error, input_value='', input_type=str]
    For further information visit https://errors.pydantic.dev/2.5/v/literal_error")
Cosmos01 commented 2 months ago

是这个问题,之前会返回unknown,现在变成空了。 定位到这里改成: gender = info.get("sex", "") if info.get("sex", "") != "" else "unknown"

kcn3388 commented 2 months ago

QQ_1721359479903 无法复现

assassingyk commented 2 months ago

后来测过了,和账号有关,大部分账号都能正常用,但有的账号就是固定get不到info,不止gender连nickname都get不到,返回都是none。不过具体原因是框架问题还是bot账号风控问题或者对方账号风控问题就不清楚了,总之应该不是插件这边能解决的……

ParamsMismatch(key="do", message="Argument model validation failed: 1 validation error for MemeArgsModel
user_infos.1.name
  Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type")
assassingyk commented 2 months ago

不过非要说其实也可以优化下,因为绝大部分表情其实只需要个对面的头像,昵称和性别信息都不需要,最好是能做到功能需要哪些信息就validate哪些信息,能减少很大一部分这种问题……不过感觉改这个逻辑会很麻烦所以不行就摸了吧()

Cosmos01 commented 2 months ago

那我的情况和你不一样,我是因为框架问题,Lagrange的get_group_member_info接口返回sex就是“”,如果用get_stranger_info则可以正常返回unknown。 基本上按我上面的方法改就好了

kcn3388 commented 2 months ago

后来测过了,和账号有关,大部分账号都能正常用,但有的账号就是固定get不到info,不止gender连nickname都get不到,返回都是none。不过具体原因是框架问题还是bot账号风控问题或者对方账号风控问题就不清楚了,总之应该不是插件这边能解决的……

实际上线时使用的三个QQ端(go-cqhttp, openshamrock和napcat均无法复现),可以考虑一下QQ端的问题