群成员管理
更新时间:2022-02-28
本文介绍如何管理群组成员。
技术原理
环信即时通讯 IM Web SDK 提供以下方法用于管理群成员:
inviteUsersToGroup
邀请用户入群;removeGroupMember
群组踢人;changeGroupOwner
变更群主;setGroupAdmin
添加群管理员;removeAdmin
移除群管理员;getGroupAdmin
获取管理员列表;blockGroupMember
/blockGroupMembers
添加成员至群黑名单;unblockGroupMember
/unblockGroupMembers
将用户移出群黑名单;getGroupBlacklist
获取群黑名单列表;muteGroupMember
禁言指定群成员;unmuteGroupMember
将指定用户移出禁言列表;getGroupMuteList
获取群禁言列表;disableSendGroupMsg
开启群全员禁言;enableSendGroupMsg
关闭群全员禁言;addUsersToGroupWhitelist
添加成员至群白名单;removeGroupWhitelistMember
将成员移出群白名单;isInGroupWhiteList
检查成员是否在群白名单中;getGroupWhitelist
获取群白名单列表。
前提条件
实现方法
群组加人
1、根据不同群类型,群组加人会有差别。
- 不管是私有群还是公开群,群主和管理员均可通过
inviteUsersToGroup
加人; - 如果私有群放开了群成员要求,群成员也可邀请用户入群。
2、需要用户确认才能加入群。
被邀请人将会收到 invite
监听事件。
- 如果用户同意加入群组。
- 邀请人将会收到
invite_accept
和memberJoinPublicGroupSuccess
监听事件; - 其他群成员将会收到
memberJoinPublicGroupSuccess
监听事件。
3、如果不需要用户确认直接加入群组的情况。
- 被邀请人将会收到
direct_joined
监听事件; - 邀请人和其他群成员将会收到
memberJoinPublicGroupSuccess
监听事件。
4、用户入群后,将可以收到群消息。
示例代码如下:
邀请人加群:
let option = {
users: ["user1", "user2"],
groupId: "groupId"
};
conn.inviteUsersToGroup(option).then(res => console.log(res))
群组踢人
1、管理员以上权限可以将群成员踢出群组。
2、群成员被踢出群组后,将不会再接收到群消息。
3、群成员被踢出群组后,被踢群成员将会收到 removedFromGroup
监听事件,其他成员将会收到 leaveGroup
监听事件。
示例代码如下:
let option = {
groupId: "groupId",
username: "username"
};
conn.removeGroupMember(option).then(res => console.log(res))
变更群组所有者
群主可以将权限移交给群组中指定成员,移交后原群主权限变为成员权限,群主和新群主将会收到 changeOwner
监听事件。
let option = {
groupId: "groupId",
newOwner: "username"
};
conn.changeGroupOwner(option).then(res => console.log(res))
添加和移除管理员权限
添加管理员权限
管理员除了不能解散群组之外,拥有群组的绝大部分权限。添加群管理员只能由群主操作。添加群管理员后,新管理员和其他管理员将会接收到 addAdmin
监听事件。
示例代码:
let option = {
groupId: "groupId",
username: "user"
};
conn.setGroupAdmin(option).then(res => console.log(res))
移除管理员权限
群主移除指定群管理员的权限后,其将只拥有群成员的权限。被移除管理员的成员和其他管理员将会接收到 removeAdmin
监听事件。
示例代码如下:
let option = {
groupId: "groupId",
username: "user"
};
conn.removeAdmin(option).then(res => console.log(res))
获取群组所有管理员
调用 getGroupAdmin
获取群组下所有管理员,示例如下:
let options = {
// 群组 ID。
groupId: "groupId"
};
conn.getGroupAdmin(options).then((res) => {
console.log(res)
})
也可以通过 获取群组详情信息 获取管理员列表。
群组黑名单
群主及群管理员可以将群组中的指定群成员加入或者移出群黑名单。群成员被加入黑名单后将无法收发群消息。
将群成员拉入群组黑名单
示例代码如下:
let option = {
groupId: "groupId",
usernames: ["user1", "user2"]
};
conn.blockGroupMembers(option).then(res => console.log(res))
将群成员移出群黑名单
指定用户被群主或者群管理员移出群黑名单后,可以再次申请加入群组。
示例代码如下:
let option = {
groupId: "groupId",
username: ["user1", "user2"]
}
conn.unblockGroupMembers(option).then(res => console.log(res))
获取群组的黑名单用户列表
群主及群管理员可以从服务或获取群组的黑名单用户 ID 列表。
示例代码如下:
let option = {
groupId: "groupId",
};
conn.getGroupBlacklist(option).then(res => console.log(res))
群组禁言
为了方便管理群组,环信即时通讯 IM SDK 提供了针对成员和群组的禁言操作。
将群成员加入和移出禁言列表
为了精细化管理群成员发言,群主和群成员可以根据情况将指定群成员加入或者移出群禁言列表。群成员被加入群禁言列表后,将不能够发言,即使其被加入群白名单也不能发言。
- 将群成员加入禁言列表
群成员被群主或者群管理员加入禁言列表后,被禁言成员和其他未操作的管理员或者群主将会收到 addMute
监听事件。
示例代码如下:
let option = {
groupId: "groupId",
username: "user",
muteDuration: 886400000 // 禁言时长,单位为毫秒。
};
conn.muteGroupMember(option).then(res => console.log(res))
- 将群成员移出禁言列表
群成员被群主或者群管理员移出禁言列表后,被移出的群成员及其他未操作的管理员或者群主将会收到 removeMute
监听事件。
示例代码如下:
let option = {
groupId: "groupId",
username: "user"
};
conn.unmuteGroupMember(option).then(res => console.log(res))
获取群成员禁言列表
群主和群管理员可以获取群组的禁言列表。
示例代码如下:
let option = {
groupId: "groupId"
};
conn.getGroupMuteList(option).then(res => console.log(res))
开启和关闭全员禁言
为了快捷管理群成员发言,群主和群成员可以开启和关闭群组全员禁言。开启群组全员禁言后,除了在群白名单中的群成员,其他成员将不能发言。
群主和群管理员开启群组全员禁言后,除了在白名单中的群成员,其他成员将不能发言。开启群组全员禁言后,群成员将会收到 muteGroup
监听事件。
示例代码如下:
let options = {
groupId: "groupId",
};
conn.disableSendGroupMsg(options).then(res => console.log(res))
关闭全员禁言
群主和群管理员可以关闭群组全员禁言。关闭群组全员禁言后,群成员将会收到 rmGroupMute
监听事件。
示例代码如下:
let options = {
groupId: "groupId",
};
conn.enableSendGroupMsg(options).then(res => console.log(res))
白名单管理
群主和群管理员可以将指定群成员加入或者移出群白名单,开启群组全员禁言后,白名单用户不受全员禁言限制。如果白名单用户在群禁言列表中,该用户也不能发言。
添加用户到白名单
群成员被群主或者群管理员添加到群白名单后,该群成员及其他未操作的群管理员和群主将会收到 addUserToGroupWhiteList
监听事件。
示例代码如下:
let option = {
groupId: "groupId",
users: ["user1", "user2"]
};
conn.addUsersToGroupWhitelist(option).then(res => console.log(res));
将用户移出白名单
群成员被群主或者群管理员移出群白名单后,该群成员及其他未操作的群管理员和群主将会收到 rmUserFromGroupWhiteList
监听事件。
示例代码如下:
let option = {
groupId: "groupId",
userName: "user"
}
conn.removeGroupWhitelistMember(option).then(res => console.log(res));
检查自己是否在白名单中
用户可以调用如下 API 检查群成员是否在群白名单中。 应用的管理员可查询所有用户,而普通用户只能查询自己:
示例代码如下:
let option = {
groupId: "groupId",
userName: "user"
}
conn.isInGroupWhiteList(option).then(res => console.log(res));
获取白名单成员列表
群主和群管理员可以获取群组白名单列表。
示例代码如下:
let options = {
groupId: "groupId"
}
conn.getGroupWhitelist(options).then(res => console.log(res));