群组
im.groups 提供本人群列表、公开群、建群、成员管理、入群申请、邀请、黑名单和入群链接。操作权限以服务端校验为准,角色枚举为 GroupRole。
列表与建群
import com.deeprespond.im.*
val group = im.groups.create(
name = "项目讨论",
type = GroupType.PRIVATE,
members = listOf("bob"),
)
val info = im.groups.get(group.groupId, refresh = true)list / listFlow 订阅本人群。get 可以返回 null;lookup 批量查询群资料;publicGroups 按 namePrefix 和游标查询公开群。
create 还支持头像、描述、公告、attributes、memberInvite、joinMode 和邀请附言。初始成员的处理结果在 CreateGroupResult.results 中,应逐项检查 code,不能把建群成功当作全部成员已加入。
群资料与成员
im.groups.update(groupId, announcement = "周五下午开会")
val members = im.groups.members(groupId)
try {
members.loadMore()
println(members.snapshot.value.items.size)
} finally {
members.close()
}members / membersFlow 支持 role、muted 筛选;lookupMembers 批量查询。updateMember 修改群昵称和属性;update 支持 version 乐观并发检查,version_conflict 后重新读取再决定。
| 操作 | 方法 |
|---|---|
| 邀请、移除成员 | invite、removeMembers,返回逐项结果 |
| 设置角色 | setRole(groupId, username, role) |
| 禁言、解除禁言 | mute(groupId, username, duration?)、unmute |
| 全员禁言 | setMuteAll(groupId, on) |
| 转让群主 | transferOwner(groupId, username) |
| 在线人数 | onlineCount(groupId) |
| 本人退出、解散 | leave(groupId)、dismiss(groupId) |
申请与邀请
val status = im.groups.applications.apply(groupId, message = "希望加入")
val invitations = im.groups.invitations.received()
println(status)
println(invitations.items.size)apply 返回 joined、pending 或 already_member。applications.mine 查询本人申请,withdraw 撤回;invitations.accept / decline 接受或拒绝邀请。管理者通过 requests.list 查询申请和邀请,approve、decline、withdrawInvite 处理,参数包括 GroupRequestKind 和目标用户名。
本人邀请偏好由 groups.settings.get/set 管理;null 表示使用应用默认设置。申请处理方式由群类型和 joinMode / memberInvite 决定,不能仅根据客户端按钮推断是否直接入群。
入群链接与黑名单
joinLink.get、create(expiresIn?)、revoke 管理链接,preview 在加入前获取信息,join 执行加入。duration 和 expiresIn 使用 Kotlin Duration。黑名单通过 blacklist.list/add/remove 管理,add 可传 reason。
群文件见文件,群聊发送见消息。完整参数见GroupsModule。
