From 9ff791e55093f2c6880f75d16ad7b8a018019bb2 Mon Sep 17 00:00:00 2001 From: luo123 Date: Sat, 14 Mar 2020 11:43:43 +0800 Subject: [PATCH] a little change --- README.md | 1 - .../net/mamoe/mirai/qqandroid/QQAndroidBot.kt | 51 ++++++++++--------- .../kotlin/net.mamoe.mirai/lowLevelApi.kt | 8 +-- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index cc467d3ea..766a1c09c 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,6 @@ Demos: [mirai-demos](https://github.com/mamoe/mirai-demos) [](https://github.com/HoshinoTented) [](https://github.com/Cyenoch) - ## 鸣谢 特别感谢 [JetBrains](https://www.jetbrains.com/?from=mirai) 为开源项目提供免费的 [IntelliJ IDEA](https://www.jetbrains.com/idea/?from=mirai) 等 IDE 的授权 diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt index c062aa1be..fabc9c806 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt @@ -67,6 +67,10 @@ internal abstract class QQAndroidBotBase constructor( internal var firstLoginSucceed: Boolean = false override val uin: Long get() = client.uin + companion object { + val json = Json(JsonConfiguration(ignoreUnknownKeys = true, encodeDefaults = true)) + } + @Deprecated( "use friends instead", level = DeprecationLevel.ERROR, @@ -206,7 +210,7 @@ internal abstract class QQAndroidBotBase constructor( } } - @OptIn(LowLevelAPI::class) + @LowLevelAPI override suspend fun _lowLevelRecallGroupMessage(groupId: Long, messageId: Long) { network.run { val response: PbMessageSvc.PbMsgWithDraw.Response = @@ -218,17 +222,15 @@ internal abstract class QQAndroidBotBase constructor( } - - @OptIn(LowLevelAPI::class) + @LowLevelAPI @MiraiExperimentalAPI - override suspend fun _lowLevelGetAnnouncements(groupId:Long, page: Int, amount: Int): GroupAnnouncementList? { - val json = Json(JsonConfiguration(ignoreUnknownKeys = true)) + override suspend fun _lowLevelGetAnnouncements(groupId: Long, page: Int, amount: Int): GroupAnnouncementList { val data = network.async { HttpClient().post { url("https://web.qun.qq.com/cgi-bin/announce/list_announce") body = MultiPartFormDataContent(formData { append("qid", groupId) - append("bkn", getBkn()) + append("bkn", bkn) append("ft", 23) //好像是一个用来识别应用的参数 append("s", if (page == 1) 0 else -(page * amount + 1)) // 第一页这里的参数应该是-1 append("n", amount) @@ -249,16 +251,15 @@ internal abstract class QQAndroidBotBase constructor( return json.parse(GroupAnnouncementList.serializer(), rep) } - @OptIn(LowLevelAPI::class) + @LowLevelAPI @MiraiExperimentalAPI - override suspend fun _lowLevelSendAnnouncement(groupId:Long, announcement: GroupAnnouncement): String { - val json = Json(JsonConfiguration.Stable) + override suspend fun _lowLevelSendAnnouncement(groupId: Long, announcement: GroupAnnouncement): String { val rep = network.async { HttpClient().post { url("https://web.qun.qq.com/cgi-bin/announce/add_qun_notice") body = MultiPartFormDataContent(formData { append("qid", groupId) - append("bkn", getBkn()) + append("bkn", bkn) append("text", announcement.msg.text) append("pinned", announcement.pinned) append( @@ -285,16 +286,16 @@ internal abstract class QQAndroidBotBase constructor( return jsonObj.jsonObject["new_fid"]?.primitive?.content ?: throw throw IllegalStateException("Send Announcement fail group:$groupId msg:${jsonObj.jsonObject["em"]} content:${announcement.msg.text}") } - @OptIn(LowLevelAPI::class) + + @LowLevelAPI @MiraiExperimentalAPI - override suspend fun _lowLevelDeleteAnnouncement(groupId:Long, fid: String) { - val json = Json(JsonConfiguration.Stable) + override suspend fun _lowLevelDeleteAnnouncement(groupId: Long, fid: String) { val rep = network.async { HttpClient().post { url("https://web.qun.qq.com/cgi-bin/announce/del_feed") body = MultiPartFormDataContent(formData { append("qid", groupId) - append("bkn", getBkn()) + append("bkn", bkn) append("fid", fid) append("format", "json") }) @@ -310,8 +311,8 @@ internal abstract class QQAndroidBotBase constructor( } } val data = rep.await() - val jsonObj = json.parseJson(data) - if (jsonObj.jsonObject["ec"]?.int ?: 1 != 0){ + val jsonObj = json.parseJson(data) + if (jsonObj.jsonObject["ec"]?.int ?: 1 != 0) { throw throw IllegalStateException("delete Announcement fail group:$groupId msg:${jsonObj.jsonObject["em"]} fid:$fid") } } @@ -319,13 +320,12 @@ internal abstract class QQAndroidBotBase constructor( @OptIn(LowLevelAPI::class) @MiraiExperimentalAPI override suspend fun _lowLevelGetAnnouncement(groupId: Long, fid: String): GroupAnnouncement { - val json = Json(JsonConfiguration(ignoreUnknownKeys = true)) val data = network.async { HttpClient().post { url("https://web.qun.qq.com/cgi-bin/announce/get_feed") body = MultiPartFormDataContent(formData { append("qid", groupId) - append("bkn", getBkn()) + append("bkn", bkn) append("fid", fid) append("format", "json") }) @@ -363,14 +363,15 @@ internal abstract class QQAndroidBotBase constructor( /** * 获取 获取群公告 所需的bkn参数 * */ - private fun getBkn(): Int { - val str = client.wLoginSigInfo.sKey.data.encodeToString() - var magic = 5381 - for (i in str) { - magic += magic.shl(5) + i.toInt() + val bkn: Int + get() { + val str = client.wLoginSigInfo.sKey.data.encodeToString() + var magic = 5381 + for (i in str) { + magic += magic.shl(5) + i.toInt() + } + return Int.MAX_VALUE.and(magic) } - return Int.MAX_VALUE.and(magic) - } } @Suppress("DEPRECATION") diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/lowLevelApi.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/lowLevelApi.kt index ab54eb5f0..fa3c6a95f 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/lowLevelApi.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/lowLevelApi.kt @@ -99,7 +99,7 @@ interface LowLevelBotAPIAccessor { * */ @LowLevelAPI @MiraiExperimentalAPI - suspend fun _lowLevelGetAnnouncements(groupId: Long, page: Int = 1, amount: Int = 10): GroupAnnouncementList? + suspend fun _lowLevelGetAnnouncements(groupId: Long, page: Int = 1, amount: Int = 10): GroupAnnouncementList /** * 发送群公告 @@ -108,7 +108,7 @@ interface LowLevelBotAPIAccessor { * */ @LowLevelAPI @MiraiExperimentalAPI - suspend fun _lowLevelSendAnnouncement(groupId: Long, announcement: GroupAnnouncement): String + suspend fun _lowLevelSendAnnouncement(groupId: Long, announcement: GroupAnnouncement): String /** @@ -117,7 +117,7 @@ interface LowLevelBotAPIAccessor { * */ @LowLevelAPI @MiraiExperimentalAPI - suspend fun _lowLevelDeleteAnnouncement(groupId: Long, fid: String) + suspend fun _lowLevelDeleteAnnouncement(groupId: Long, fid: String) /** * 获取一条群公告 @@ -125,7 +125,7 @@ interface LowLevelBotAPIAccessor { * */ @LowLevelAPI @MiraiExperimentalAPI - suspend fun _lowLevelGetAnnouncement(groupId: Long,fid:String):GroupAnnouncement + suspend fun _lowLevelGetAnnouncement(groupId: Long, fid: String): GroupAnnouncement }