群組
im.groups 負責“我的群”列表、公開群、建群、成員管理、入群申請和邀請、群黑名單和入群連結。角色用 GroupRole 表示;能否操作以服務端的檢查為準。
| 要做什麼 | 看哪裡 |
|---|---|
| 顯示我的群、建群 | 列表與建群 |
| 改群資料,顯示和管理成員 | 群資料與成員 |
| 申請入群、處理邀請和審批 | 申請與邀請 |
| 用連結拉人,群黑名單 | 入群連結與黑名單 |
列表與建群
kotlin
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:建群成功不代表所有初始成員都已入群。
群資料與成員
kotlin
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) |
申請與邀請
kotlin
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決定,請按返回值顯示,不要根據介面上的按鈕推斷。
invite 返回後應逐項檢查結果:code 非空表示該使用者邀請失敗;成功時 status 分別為 joined(已入群)、invited(等待本人確認)、pending_review(等待管理員審批)或 already_member(原本就是成員)。呼叫沒有丟擲異常不代表全部使用者已入群。
邀請冷卻(group_invite_cooldown_enabled)在控制檯的群組執行策略中設定:
- 預設關閉:對方退群或拒絕邀請後,可以立即再次邀請。
- 開啟後:對方退群或拒絕邀請後 24 小時內,這個群不能再邀請他,結果項的
code為rate_limited,details中的reason為declined_cooldown。 - 冷卻只限制邀請。服務端直接新增、本人申請、入群連結不受影響;本人確認、管理員審批這些條件照常適用。
- 與此無關:入群申請被拒絕後,申請人 24 小時內不能再申請,這條始終生效。
入群連結與黑名單
- 群主和管理員用
joinLink.get()、create(expiresIn?)、revoke()管理入群連結;開啟連結的人先preview檢視群資訊,再join加入。 - 群黑名單用
blacklist.list/add/remove管理,add可以帶原因reason。 expiresIn、禁言的duration等時長引數都是 Kotlin 的Duration。
群檔案見檔案,群聊傳送見訊息。完整引數見GroupsModule。
