经测试,插件在进行色图重置时会产生bug,原因是user_qq参数的数据类型为string,而使用setUserToday修改UserToday.json 传入的第一个参数user_qq必须是number型,报错如下:
Bot调用\plugin\SETU_D1.LUA函数setu_draw_master失败!
\plugin\SETU_D1.LUA:47: bad argument #1 to ‘setUserToday’ (number expected, got string)
产生问题的原因就在于string.sub()这个方法是对字符串进行截取,截取出来的结果自然也为字符串,所以会出现次此报错。
解决办法:很简单,在Line47 local user_qq = string.sub(msg.fromMsg,7,-1) 的下一行加入:local user_qq = tonumber(user_qq) 将本来是string型的user_qq变量转化为number型。
但是问题到这里并没有结束,如果你此时保存并重新执行重置指令会发现,她又报错了,内容:
Bot调用\plugin\SETU_D1.LUA函数setu_draw_master失败!
\plugin\SETU_D1.LUA:47: bad argument #1 to ‘setUserToday’ (number expected, got nil)
这次错误出在47行这个string.sub(msg.fromMsg,7,-1) 里面的‘7’这个参数,给错了,我们将回复内容改为return user_qq 再运行重置指令试试,发现她返回了如下内容:“重置 <QQ号>” 这也就意味着,代表从第7个字符开始截取的参数‘7’,给小了!导致无法传出正确的string型的QQ号,而我们在进行由string到number转换时,会尝试将“重置 <QQ号>”这个字符串转为number型的数字,那么根据lua的语言设定,这一步的转化结果为nil,导致报错
解决办法:修改‘7’这个参数,经过我个人测试,改为‘13’即可,若对此数值有疑问,可以自行更改测试,可能在不同的运行环境、不同的命令(如‘色图重置’和<QQ号>之间没有空格)下不同,请各位Master根据自身情况进行修改
提示:如果你跟着我的回复一步步试验下来,记得别忘记把返回值改回去,什么?!你删除了?那我在这里再放出来原代码的返回:return “成功重置了[CQ:at,qq=”..user_qq..“]今日的使用次数"
可能你复制之后会多出来一个“[]”,记得删除
以上内容仅为个人测试结果和修改意见,由于本人也是小白,所以有些地方的专业语句、词汇使用不当,还请各位dalao谅解