http-api group info

This commit is contained in:
ryoii 2020-02-06 18:13:28 +08:00
parent 64980e066f
commit 5c30f187f7
2 changed files with 51 additions and 1 deletions

View File

@ -3,6 +3,7 @@ package net.mamoe.mirai.api.http.dto
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import net.mamoe.mirai.api.http.AuthedSession
import net.mamoe.mirai.contact.Group
@Serializable
abstract class VerifyDTO : DTO {
@ -37,6 +38,28 @@ data class MuteDTO(
val time: Int = 0
) : VerifyDTO()
@Serializable
data class GroupConfigDTO(
override val sessionKey: String,
val target: Long,
val config: GroupInfoDTO
) : VerifyDTO()
@Serializable
data class GroupInfoDTO(
val name: String? = null,
val announcement: String? = null,
val confessTalk: Boolean? = null,
val allowMemberInvite: Boolean? = null,
val autoApprove: Boolean? = null,
val anonymousChat: Boolean? = null
) : DTO {
constructor(group: Group) : this(
group.name, group.announcement, group.confessTalk, group.allowMemberInvite,
group.autoApprove, group.anonymousChat
)
}
@Serializable
open class StateCode(val code: Int, var msg: String) {
object Success : StateCode(0, "success") // 成功

View File

@ -3,6 +3,8 @@ package net.mamoe.mirai.api.http.route
import io.ktor.application.Application
import io.ktor.application.call
import io.ktor.routing.routing
import net.mamoe.mirai.api.http.dto.GroupConfigDTO
import net.mamoe.mirai.api.http.dto.GroupInfoDTO
import net.mamoe.mirai.api.http.dto.MuteDTO
import net.mamoe.mirai.api.http.dto.StateCode
@ -10,6 +12,9 @@ import net.mamoe.mirai.api.http.dto.StateCode
fun Application.groupManageModule() {
routing {
/**
* 禁言
*/
miraiVerify<MuteDTO>("/muteAll") {
it.session.bot.getGroup(it.target).muteAll = true
call.respondStateCode(StateCode.Success)
@ -21,7 +26,7 @@ fun Application.groupManageModule() {
}
miraiVerify<MuteDTO>("/mute") {
when(it.session.bot.getGroup(it.target).members[it.member].mute(it.time)) {
when(it.session.bot.getGroup(it.target)[it.member].mute(it.time)) {
true -> call.respondStateCode(StateCode.Success)
else -> throw PermissionDeniedException
}
@ -34,5 +39,27 @@ fun Application.groupManageModule() {
}
}
/**
* 群设置需要相关权限
*/
miraiGet("/groupConfig") {
val group = it.bot.getGroup(paramOrNull("target"))
call.respondDTO(GroupInfoDTO(group))
}
miraiVerify<GroupConfigDTO>("/groupConfig") { dto ->
val group = dto.session.bot.getGroup(dto.target)
with(dto.config) {
name?.let { group.name = it }
announcement?.let { group.announcement = it }
confessTalk?.let { group.confessTalk = it }
allowMemberInvite?.let{ group.allowMemberInvite = it }
// TODO: 待core接口实现设置可改
// autoApprove?.let { group.autoApprove = it }
// anonymousChat?.let { group.anonymousChat = it }
}
call.respondStateCode(StateCode.Success)
}
}
}