Http api handle Bot muted exception while sending group message, and response BotMuted(code 20)

This commit is contained in:
ryoii 2020-02-26 15:08:13 +08:00
parent c1a9dd2e51
commit 703f0cc073
3 changed files with 17 additions and 13 deletions

View File

@ -96,16 +96,17 @@ fun main() {
}
```
| 状态码 | 原因 |
| ------ | ----------------------------------- |
| 0 | 正常 |
| 1 | 错误的auth key |
| 2 | 指定的Bot不存在 |
| 3 | Session失效或不存在 |
| 4 | Session未认证(未激活) |
| 5 | 发送消息目标不存在(指定对象不存在) |
| 10 | 无操作权限指Bot没有对应操作的限权 |
| 400 | 错误的访问,如参数错误等 |
| 状态码 | 原因 |
| ------ | ---------------------------------------- |
| 0 | 正常 |
| 1 | 错误的auth key |
| 2 | 指定的Bot不存在(常发生在Session认证时) |
| 3 | Session失效或不存在 |
| 4 | Session未认证(未激活) |
| 5 | 发送消息目标不存在(指定对象不存在) |
| 10 | 无操作权限指Bot没有对应操作的限权 |
| 20 | Bot被禁言指Bot当前无法向指定群发送消息 |
| 400 | 错误的访问,如参数错误等 |

View File

@ -11,6 +11,7 @@ open class StateCode(val code: Int, var msg: String) : DTO {
object NotVerifySession : StateCode(4, "Session未认证")
object NoElement : StateCode(5, "指定对象不存在")
object PermissionDenied : StateCode(10, "无操作权限")
object BotMuted : StateCode(20, "Bot被禁言")
// KS bug: 主构造器中不能有非字段参数 https://github.com/Kotlin/kotlinx.serialization/issues/575
@Serializable

View File

@ -130,17 +130,19 @@ internal inline fun <reified T : VerifyDTO> Route.miraiVerify(
internal inline fun Route.intercept(crossinline blk: suspend PipelineContext<Unit, ApplicationCall>.() -> Unit) = handle {
try {
blk(this)
} catch (e: NoSuchBotException) { // Bot不存在
call.respondStateCode(StateCode.NoBot)
} catch (e: IllegalSessionException) { // Session过期
call.respondStateCode(StateCode.IllegalSession)
} catch (e: NotVerifiedSessionException) { // Session未认证
call.respondStateCode(StateCode.NotVerifySession)
} catch (e: NoSuchBotException) { // Bot不存在
call.respondStateCode(StateCode.NoBot)
} catch (e: NoSuchElementException) { // 指定对象不存在
call.respondStateCode(StateCode.NoElement)
} catch (e: PermissionDeniedException) { // 缺少权限
call.respondStateCode(StateCode.PermissionDenied)
} catch (e: IllegalAccessException) {
} catch (e: IllegalStateException) { // Bot被禁言
call.respondStateCode(StateCode.BotMuted)
} catch (e: IllegalAccessException) { // 错误访问
call.respondStateCode(StateCode(400, e.message), HttpStatusCode.BadRequest)
} catch (e: Throwable) {
e.printStackTrace()