Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

Him188 6 лет назад
Родитель
Сommit
85ea4563a4

+ 12 - 11
mirai-api-http/README_CH.md

@@ -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    | 错误的访问,如参数错误等                 |
 
 
 
@@ -904,7 +905,7 @@ Content-Type:multipart/form-data
 使用此方法获取群员资料
 
 ```
-[Get] /groupConfig?sessionKey=YourSessionKey&target=123456789
+[Get] /memberInfo?sessionKey=YourSessionKey&target=123456789
 ```
 
 #### 请求:

+ 1 - 0
mirai-api-http/src/main/kotlin/net/mamoe/mirai/api/http/data/StateCode.kt

@@ -20,6 +20,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

+ 9 - 7
mirai-api-http/src/main/kotlin/net/mamoe/mirai/api/http/route/BaseRoute.kt

@@ -126,17 +126,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: IllegalSessionException) {
+    } catch (e: NoSuchBotException) { // Bot不存在
+        call.respondStateCode(StateCode.NoBot)
+    } catch (e: IllegalSessionException) { // Session过期
         call.respondStateCode(StateCode.IllegalSession)
-    } catch (e: NotVerifiedSessionException) {
+    } catch (e: NotVerifiedSessionException) { // Session未认证
         call.respondStateCode(StateCode.NotVerifySession)
-    } catch (e: NoSuchBotException) {
-        call.respondStateCode(StateCode.NoBot)
-    } catch (e: NoSuchElementException) {
+    } catch (e: NoSuchElementException) { // 指定对象不存在
         call.respondStateCode(StateCode.NoElement)
-    } catch (e: PermissionDeniedException) {
+    } 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()