群组管理
群组管理用于治理群与超级群(groupType=super):查看群资料、成员与禁言状态,执行成员禁言/踢出、全员禁言、转让群主、解散和群资料编辑。禁言写入既有 Group.muted / group_mute_all,群消息发送路径会真实返回 1009。
概念
| 能力 | 行为 | 错误/边界 |
|---|---|---|
| 成员禁言 | 写成员 muted/mutedUntil;群消息发送返回 1009 | durationSec 1–2592000(缺省 3600);群主不可被禁言 |
| 踢出成员 | 清理管理员/禁言/成员资料,回调 group.updated(members_removed) | 群主需先转让;非成员返回 4xx |
| 全员禁言 | 与 Open API group.mute-all 同一份状态;群主/管理员/白名单豁免 | durationSec 1–2592000,缺省永久 |
| 转让群主 | toUserId 必须是成员;旧群主降为管理员 | 回调 group.updated(owner_transferred) |
| 解散群 | 移除群与群级附属状态(禁言/白名单/成员资料/频道/扩展),消息历史保留 | 回调 group.destroyed;不可恢复 |
| 群资料 | name/notice/joinPolicy/ext | name 1–64、notice ≤1000、ext ≤20 键 |
- 群列表只返回基础字段;成员、禁言、扩展与群消息计数在详情接口。
- 超级群沿用同一套群组接口,用
groupType=super区分;rev22 起消息/会话的超级群类型为SUPER_GROUP(10)(存量 2+super 可读),频道/用户组见超级群指南。 - 所有写操作都会记录操作日志(
admin.groups.*)。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#groups(tab#groups:群组)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
- 已开通
group(超级群还需supergroup)服务,否则相关接口 1021。
步骤
- 定位群
群列表支持
keyword模糊搜索与分页;拿到groupId后打开详情。 - 查看成员与禁言状态
成员分页按 owner→admin→member 排序,返回
online/muted/mutedUntil/testUser。 - 处置违规成员
先禁言(可恢复),严重违规再踢出;群主需先转让才能被踢出。
- 全群管控
全员禁言用于临时止损;解散用于违规群,解散前确认消息保留但群关系不可恢复。
- 验证生效
被禁言成员用客户端或 Open API 发群消息,应返回 1009;操作日志中可见对应 action。
参数表
| 操作 | 方法与路径 | 请求体 / 参数 |
|---|---|---|
| 群列表 | GET /api/admin/apps/{appkey}/groups | keyword、offset、limit |
| 群详情 | GET /api/admin/apps/{appkey}/groups/{groupId} | — |
| 成员分页 | GET /api/admin/apps/{appkey}/groups/{groupId}/members | keyword、offset、limit |
| 成员禁言 | POST /api/admin/apps/{appkey}/groups/{groupId}/members/{userId}/mute | {muted,durationSec?,reason?} |
| 踢出成员 | POST /api/admin/apps/{appkey}/groups/{groupId}/members/{userId}/remove | {reason?} |
| 全员禁言 | POST /api/admin/apps/{appkey}/groups/{groupId}/mute-all | {muted,durationSec?} |
| 转让群主 | POST /api/admin/apps/{appkey}/groups/{groupId}/transfer | {toUserId} |
| 解散群 | POST /api/admin/apps/{appkey}/groups/{groupId}/dismiss | {reason?} |
| 群资料 | POST /api/admin/apps/{appkey}/groups/{groupId}/profile | {name?,notice?,joinPolicy?,ext?} |
示例
列表 → 详情 → 禁言成员 → 全员禁言
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/groups?limit=20" \
-H 'X-Admin-Secret: dev-admin'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/groups/g_demo" \
-H 'X-Admin-Secret: dev-admin'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/groups/g_demo/members/bob/mute" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"muted":true,"durationSec":600,"reason":"刷屏"}'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/groups/g_demo/mute-all" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"muted":true,"durationSec":3600}'转让群主 → 踢人 → 解散
Shell
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/groups/g_demo/transfer" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"toUserId":"bob"}'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/groups/g_demo/members/carol/remove" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"reason":"违规"}'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/groups/g_demo/dismiss" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"reason":"违规群"}'常见问题
为什么禁言群主返回 4xx?
群主不可被禁言;如需限制,应先用转让接口更换群主。
解散后消息还能查吗?
能。解散只移除群与群级附属状态,消息历史保留供审计;客户端无法再进入该群。
成员禁言和全员禁言冲突吗?
不冲突。成员禁言是个人状态;全员禁言是群级开关,群主/管理员/白名单豁免。
超级群频道成员能在这里管吗?
不能。本页管群成员;频道与用户组使用 supergroup.channel.* / supergroup.usergroup.*。