group active data

This commit is contained in:
luo123 2020-03-15 17:06:06 +08:00 committed by Him188
parent cae3251291
commit 69d5bbd7fa
3 changed files with 165 additions and 5 deletions

View File

@ -10,12 +10,9 @@
package net.mamoe.mirai.qqandroid
import io.ktor.client.HttpClient
import io.ktor.client.request.*
import io.ktor.client.request.forms.MultiPartFormDataContent
import io.ktor.client.request.forms.formData
import io.ktor.client.request.get
import io.ktor.client.request.headers
import io.ktor.client.request.post
import io.ktor.client.request.url
import io.ktor.client.statement.HttpResponse
import kotlinx.coroutines.CoroutineName
import kotlinx.coroutines.async
@ -319,7 +316,7 @@ internal abstract class QQAndroidBotBase constructor(
}
}
@OptIn(LowLevelAPI::class)
@LowLevelAPI
@MiraiExperimentalAPI
override suspend fun _lowLevelGetAnnouncement(groupId: Long, fid: String): GroupAnnouncement {
val data = network.async {
@ -345,6 +342,26 @@ internal abstract class QQAndroidBotBase constructor(
return json.parse(GroupAnnouncement.serializer(), rep)
}
@LowLevelAPI
@MiraiExperimentalAPI
override suspend fun _lowLevelGetGroupActiveData(groupId: Long): GroupActiveData {
val data = network.async {
HttpClient().get<String> {
url("https://qqweb.qq.com/c/activedata/get_mygroup_data")
parameter("bkn",bkn)
parameter("gc",groupId)
headers {
append(
"cookie",
"uin=o${selfQQ.id}; skey=${client.wLoginSigInfo.sKey.data.encodeToString()}; p_uin=o${selfQQ.id};"
)
}
}
}
val rep = data.await()
return json.parse(GroupActiveData.serializer(), rep)
}
override suspend fun queryImageUrl(image: Image): String = when (image) {
is OnlineFriendImageImpl -> image.originUrl

View File

@ -0,0 +1,135 @@
package net.mamoe.mirai.data
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
/**
* 群统计信息
*
*
* */
@Serializable
data class GroupActiveData(
@SerialName("ec")
val ec: Int? = null,
@SerialName("em")
val msg: String?,
@SerialName("errcode")
val errCode: Int?,
@SerialName("ginfo")
val info: Ginfo? = null,
@SerialName("role")
val role: Int?
) {
@Serializable
data class Ginfo(
@SerialName("g_act_num")
val actNum: List<GActNum?>?, //发言人数列表
@SerialName("g_createtime")
val createTime: Int?,
@SerialName("g_exit_num")
val exitNum: List<GExitNum?>?, //退群人数列表
@SerialName("g_join_num")
val joinNum: List<GJoinNum?>?,
@SerialName("g_mem_num")
val memNum: List<GMemNum?>?, //人数变化
@SerialName("g_most_act")
val mostAct: List<GMostAct?>?, //发言排行
@SerialName("g_sentences")
val sentences: List<GSentence?>?,
@SerialName("gc")
val gc: Int?,
@SerialName("gn")
val gn: String?,
@SerialName("gowner")
val gowner: String?,
@SerialName("isEnd")
val isEnd: Int?
) {
@Serializable
data class GActNum(
@SerialName("date")
val date: String?,
@SerialName("num")
val num: Int?
)
@Serializable
data class GExitNum(
@SerialName("date")
val date: String?,
@SerialName("num")
val num: Int?
)
@Serializable
data class GJoinNum(
@SerialName("date")
val date: String?,
@SerialName("num")
val num: Int?
)
@Serializable
data class GMemNum(
@SerialName("date")
val date: String?,
@SerialName("num")
val num: Int?
)
@Serializable
data class GMostAct(
@SerialName("name")
val name: String?, // 名称 不完整
@SerialName("sentences_num")
val sentencesNum: Int?, // 发言数
@SerialName("sta")
val sta: Int?,
@SerialName("uin")
val uin: Long?
)
@Serializable
data class GSentence(
@SerialName("date")
val date: String?,
@SerialName("num")
val num: Int?
)
}
}

View File

@ -132,6 +132,14 @@ interface LowLevelBotAPIAccessor {
@MiraiExperimentalAPI
suspend fun _lowLevelGetAnnouncement(groupId: Long, fid: String): GroupAnnouncement
/**
* 获取群活跃信息
*
* */
@LowLevelAPI
@MiraiExperimentalAPI
suspend fun _lowLevelGetGroupActiveData(groupId: Long): GroupActiveData
}
/**