Commit 703f0cc0 authored by ryoii's avatar ryoii

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

parent c1a9dd2e
......@@ -97,14 +97,15 @@ fun main() {
```
| 状态码 | 原因 |
| ------ | ----------------------------------- |
| ------ | ---------------------------------------- |
| 0 | 正常 |
| 1 | 错误的auth key |
| 2 | 指定的Bot不存在 |
| 2 | 指定的Bot不存在(常发生在Session认证时) |
| 3 | Session失效或不存在 |
| 4 | Session未认证(未激活) |
| 5 | 发送消息目标不存在(指定对象不存在) |
| 10 | 无操作权限,指Bot没有对应操作的限权 |
| 20 | Bot被禁言,指Bot当前无法向指定群发送消息 |
| 400 | 错误的访问,如参数错误等 |
......
......@@ -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
......
......@@ -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()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment