mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-19 20:59:10 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
3620d4bd9a
@ -248,7 +248,8 @@ fun main() {
|
||||
"permission": "MEMBER", // 发送者的群限权:OWNER、ADMINISTRATOR或MEMBER
|
||||
"group": { // 消息发送群的信息
|
||||
"id": 1234567890, // 发送群的群号
|
||||
"name": "Miral Technology" // 发送群的群名称
|
||||
"name": "Miral Technology", // 发送群的群名称
|
||||
"permission": "MEMBER" // 发送群中,Bot的群限权
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -398,10 +399,12 @@ fun main() {
|
||||
```json5
|
||||
[{
|
||||
"id":123456789,
|
||||
"name":"群名1"
|
||||
"name":"群名1",
|
||||
"permission": "MEMBER"
|
||||
},{
|
||||
"id":987654321,
|
||||
"name":"群名2"
|
||||
"name":"群名2",
|
||||
"permission": "MEMBER"
|
||||
}]
|
||||
```
|
||||
|
||||
@ -428,19 +431,21 @@ fun main() {
|
||||
[{
|
||||
"id":1234567890,
|
||||
"memberName":"",
|
||||
"permission":"MEMBER",
|
||||
"group":{
|
||||
"id":12345,
|
||||
"name":"群名1"
|
||||
},
|
||||
"permission":"MEMBER"
|
||||
"name":"群名1",
|
||||
"permission": "MEMBER"
|
||||
}
|
||||
},{
|
||||
"id":9876543210,
|
||||
"memberName":"",
|
||||
"permission":"OWNER",
|
||||
"group":{
|
||||
"id":54321,
|
||||
"name":"群名2"
|
||||
},
|
||||
"permission":"OWNER"
|
||||
"name":"群名2",
|
||||
"permission": "MEMBER"
|
||||
}
|
||||
}]
|
||||
```
|
||||
|
||||
@ -458,8 +463,8 @@ fun main() {
|
||||
|
||||
```json5
|
||||
{
|
||||
"sessionKey": "YourSessionKey",
|
||||
"target": 123456789,
|
||||
"sessionKey": "YourSessionKey",
|
||||
"target": 123456789,
|
||||
}
|
||||
```
|
||||
|
||||
@ -510,10 +515,10 @@ fun main() {
|
||||
|
||||
```json5
|
||||
{
|
||||
"sessionKey": "YourSessionKey",
|
||||
"target": 123456789,
|
||||
"member": 987654321,
|
||||
"time": 1800
|
||||
"sessionKey": "YourSessionKey",
|
||||
"target": 123456789,
|
||||
"member": 987654321,
|
||||
"time": 1800
|
||||
}
|
||||
```
|
||||
|
||||
@ -545,11 +550,11 @@ fun main() {
|
||||
|
||||
#### 请求:
|
||||
|
||||
```josn5
|
||||
```json5
|
||||
{
|
||||
"sessionKey": "YourSessionKey",
|
||||
"target": 123456789,
|
||||
"member": 987654321
|
||||
"sessionKey": "YourSessionKey",
|
||||
"target": 123456789,
|
||||
"member": 987654321
|
||||
}
|
||||
```
|
||||
|
||||
@ -557,3 +562,79 @@ fun main() {
|
||||
|
||||
同群禁言群成员
|
||||
|
||||
|
||||
|
||||
### 群设置
|
||||
|
||||
使用此方法修改群设置(需要又相关限权)
|
||||
|
||||
```
|
||||
[POST] /groupConfig
|
||||
```
|
||||
|
||||
#### 请求:
|
||||
|
||||
```json5
|
||||
{
|
||||
"sessionKey": "YourSessionKey",
|
||||
"target": 123456789,
|
||||
"config": {
|
||||
"name": "群名称",
|
||||
"announcement": "群公告",
|
||||
"confessTalk": true,
|
||||
"allowMemberInvite": true,
|
||||
"autoApprove": true,
|
||||
"anonymousChat": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| 名字 | 可选 | 类型 | 举例 | 说明 |
|
||||
| ----------------- | ----- | ------- | ---------------- | -------------------- |
|
||||
| sessionKey | false | String | "YourSessionKey" | 你的session key |
|
||||
| target | false | Long | 123456789 | 指定群的群号 |
|
||||
| config | false | Object | {} | 群设置 |
|
||||
| name | true | String | "Name" | 群名 |
|
||||
| announcement | true | Boolean | true | 群公告 |
|
||||
| confessTalk | true | Boolean | true | 是否开启坦白说 |
|
||||
| allowMemberInvite | true | Boolean | true | 是否运行群员邀请 |
|
||||
| autoApprove | true | Boolean | true | 是否开启自动审批入群 |
|
||||
| anonymousChat | true | Boolean | true | 是否允许匿名聊天 |
|
||||
|
||||
#### 响应: 返回统一状态码
|
||||
|
||||
```json5
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "success"
|
||||
}
|
||||
```
|
||||
|
||||
### 获取群设置
|
||||
|
||||
使用此方法获取群设置
|
||||
|
||||
```
|
||||
[Get] /groupConfig?sessionKey=YourSessionKey&target=123456789
|
||||
```
|
||||
|
||||
#### 请求:
|
||||
|
||||
| 名字 | 可选 | 类型 | 举例 | 说明 |
|
||||
| ----------------- | ----- | ------- | ---------------- | -------------------- |
|
||||
| sessionKey | false | String | YourSessionKey | 你的session key |
|
||||
| target | false | Long | 123456789 | 指定群的群号 |
|
||||
|
||||
|
||||
#### 响应
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "群名称",
|
||||
"announcement": "群公告",
|
||||
"confessTalk": true,
|
||||
"allowMemberInvite": true,
|
||||
"autoApprove": true,
|
||||
"anonymousChat": true
|
||||
}
|
||||
```
|
||||
|
@ -16,25 +16,29 @@ data class QQDTO(
|
||||
override val id: Long,
|
||||
val nickName: String,
|
||||
val remark: String
|
||||
) : ContactDTO()
|
||||
) : ContactDTO() {
|
||||
// TODO: queryProfile.nickname & queryRemark.value not support now
|
||||
constructor(qq: QQ) : this(qq.id, "", "")
|
||||
}
|
||||
|
||||
// TODO: queryProfile.nickname & queryRemark.value not support now
|
||||
suspend fun QQDTO(qq: QQ): QQDTO = QQDTO(qq.id, "", "")
|
||||
|
||||
@Serializable
|
||||
data class MemberDTO(
|
||||
override val id: Long,
|
||||
val memberName: String = "",
|
||||
val group: GroupDTO,
|
||||
val permission: MemberPermission
|
||||
) : ContactDTO()
|
||||
|
||||
fun MemberDTO(member: Member, name: String = ""): MemberDTO = MemberDTO(member.id, name, GroupDTO(member.group), member.permission)
|
||||
val permission: MemberPermission,
|
||||
val group: GroupDTO
|
||||
) : ContactDTO() {
|
||||
constructor(member: Member, name: String = "") : this (
|
||||
member.id, name, member.permission, GroupDTO(member.group)
|
||||
)
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class GroupDTO(
|
||||
override val id: Long,
|
||||
val name: String
|
||||
) : ContactDTO()
|
||||
|
||||
fun GroupDTO(group: Group): GroupDTO = GroupDTO(group.id, group.name)
|
||||
val name: String,
|
||||
val permission: MemberPermission
|
||||
) : ContactDTO() {
|
||||
constructor(group: Group) : this(group.id, group.name, group.botPermission)
|
||||
}
|
||||
|
@ -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") // 成功
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user