-
-
Notifications
You must be signed in to change notification settings - Fork 31
fix 异常抛出逻辑错误 #137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix 异常抛出逻辑错误 #137
Conversation
不同群的管理员人数不同,且小概率随qq版本变化,因此不能以群管理人数判断,考虑先执行设置管理员,再判断用户是否为管理员
|
测试过了吗,我感觉这样不妥。 impl.role = if (operation) "admin" else "member"被执行,导致你获取的 |
如果permission是正确且即时的,按逻辑来说没有问题。 如果NapCat 即使在管理员已满的情况下也会异常的返回ok导致permission错误,那可能对napcat而言有问题 但是原来的写法对于上限不是15人的群都有问题 这样的话可能还要修改一下,要再次即时向onebot请求获得用户的准确权限是否为permission,而不是根据onebot返回值更改的permission判定,就可以了(不知道是否能即时向onebot请求获得用户的准确权限) |
|
permission 不是即时的,它根据 MemberWrapper 的 |
OK |
那如果存在这样的情况的话,我觉得设置管理之后都要queryUpdate()一下,否则即时不考虑异常处理机制,此时成员的permission也可能与实际不符,可能导致后续使用时出现意外 |
val count = //...
if (count >= max) throw
if (bot.impl.setGroupAdmin.check) {
queryUpdate()
if (permission != ADMINISTRATOR) throw
}这样就行了,check 不通过则说明 onebot 返回了 |
O的,我在改了 |
|
如果你认为需要,if check 可以加个 else 分支把 onebot 返回的错误信息抛出来 |
话说返回failed意味着什么 |
failed 意味着 onebot 在做这件事遇到了问题,大多数 onebot 实现会把原因放到 message 字段。基本可以等同于在 java 中抛出异常,或者说是 |
在提出此拉取请求时,我确认了以下几点(请复选框):
填写PR内容: