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
...@@ -96,16 +96,17 @@ fun main() { ...@@ -96,16 +96,17 @@ fun main() {
} }
``` ```
| 状态码 | 原因 | | 状态码 | 原因 |
| ------ | ----------------------------------- | | ------ | ---------------------------------------- |
| 0 | 正常 | | 0 | 正常 |
| 1 | 错误的auth key | | 1 | 错误的auth key |
| 2 | 指定的Bot不存在 | | 2 | 指定的Bot不存在(常发生在Session认证时) |
| 3 | Session失效或不存在 | | 3 | Session失效或不存在 |
| 4 | Session未认证(未激活) | | 4 | Session未认证(未激活) |
| 5 | 发送消息目标不存在(指定对象不存在) | | 5 | 发送消息目标不存在(指定对象不存在) |
| 10 | 无操作权限,指Bot没有对应操作的限权 | | 10 | 无操作权限,指Bot没有对应操作的限权 |
| 400 | 错误的访问,如参数错误等 | | 20 | Bot被禁言,指Bot当前无法向指定群发送消息 |
| 400 | 错误的访问,如参数错误等 |
......
...@@ -11,6 +11,7 @@ open class StateCode(val code: Int, var msg: String) : DTO { ...@@ -11,6 +11,7 @@ open class StateCode(val code: Int, var msg: String) : DTO {
object NotVerifySession : StateCode(4, "Session未认证") object NotVerifySession : StateCode(4, "Session未认证")
object NoElement : StateCode(5, "指定对象不存在") object NoElement : StateCode(5, "指定对象不存在")
object PermissionDenied : StateCode(10, "无操作权限") object PermissionDenied : StateCode(10, "无操作权限")
object BotMuted : StateCode(20, "Bot被禁言")
// KS bug: 主构造器中不能有非字段参数 https://github.com/Kotlin/kotlinx.serialization/issues/575 // KS bug: 主构造器中不能有非字段参数 https://github.com/Kotlin/kotlinx.serialization/issues/575
@Serializable @Serializable
......
...@@ -130,17 +130,19 @@ internal inline fun <reified T : VerifyDTO> Route.miraiVerify( ...@@ -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 { internal inline fun Route.intercept(crossinline blk: suspend PipelineContext<Unit, ApplicationCall>.() -> Unit) = handle {
try { try {
blk(this) blk(this)
} catch (e: NoSuchBotException) { // Bot不存在
call.respondStateCode(StateCode.NoBot)
} catch (e: IllegalSessionException) { // Session过期 } catch (e: IllegalSessionException) { // Session过期
call.respondStateCode(StateCode.IllegalSession) call.respondStateCode(StateCode.IllegalSession)
} catch (e: NotVerifiedSessionException) { // Session未认证 } catch (e: NotVerifiedSessionException) { // Session未认证
call.respondStateCode(StateCode.NotVerifySession) call.respondStateCode(StateCode.NotVerifySession)
} catch (e: NoSuchBotException) { // Bot不存在
call.respondStateCode(StateCode.NoBot)
} catch (e: NoSuchElementException) { // 指定对象不存在 } catch (e: NoSuchElementException) { // 指定对象不存在
call.respondStateCode(StateCode.NoElement) call.respondStateCode(StateCode.NoElement)
} catch (e: PermissionDeniedException) { // 缺少权限 } catch (e: PermissionDeniedException) { // 缺少权限
call.respondStateCode(StateCode.PermissionDenied) 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) call.respondStateCode(StateCode(400, e.message), HttpStatusCode.BadRequest)
} catch (e: Throwable) { } catch (e: Throwable) {
e.printStackTrace() 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