文档中心
IM 即时通讯
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 即时通讯
  • 群组相关
  • 群成员管理

群成员管理

更新时间:2024-10-28 11:58

功能简介

ZIM SDK 提供了群成员管理功能,支持查询群组成员列表、查询群组成员基本信息以及转让群主等功能。

前提条件

在实现“群成员管理”功能之前,请确保:

  • 已在 ZEGO 控制台 创建项目,获取到了接入 ZIM SDK 服务所需的 AppID 和 ServerSecret。ZIM 服务权限不是默认开启的,使用前,请先在 ZEGO 控制台 自助开通 ZIM 服务(详情请参考 项目管理 - 即时通讯),若无法开通 ZIM 服务,请联系 ZEGO 技术支持开通。
  • 已获取登录 SDK 所需的 Token,详情请参考 使用 Token 鉴权。
  • 已集成 ZIM SDK,详情请参考 快速开始 - 实现基本收发消息 的 “3 集成 SDK”。

实现流程

用户使用“群成员管理”功能之前,请先加入某个群组,否则无法使用相关功能,详情请参考 加入群组。

查询群成员列表

用户登录 ZIM SDK、并加入某个群组后,如果想要了解自己所在群组都有哪些成员,可以通过调用 queryGroupMemberList 接口,分页查询该群组的成员列表。单次调用接口最多可获取 100 名成员,传入 count 超过 100 按照 100 处理。

查询成功后,用户可以通过 ZIMGroupMemberListQueriedResult 收到查询结果。

截至当前版本,首次调用此接口拉取群成员列表时,可以获取群成员头像。再次调用此接口后,可以获取新增用户的头像信息,但存量用户的头像信息不会更新。

如需获取群成员最新头像,请调用接口 queryGroupMemberInfo 查询群成员信息。

queryGroupMemberList 说明

queryGroupMemberList(groupID: string, config: ZIMGroupMemberQueryConfig): Promise<ZIMGroupMemberListQueriedResult>
参数/回调 类型 是否必填 说明
groupID string 是 查询群成员列表的群组 ID。
config ZIMGroupMemberQueryConfig 是 查询群成员列表的高级属性配置。
Promise ZIMGroupMemberListQueriedResult 是 查询群成员列表操作的结果回调通知。

示例代码

// 群内成员查询群组的成员列表
var groupID = '';
// count 超过 100 按 100 处理
var config = { count: 10, nextFlag: 0 };

zim.queryGroupMemberList(groupID, config)
    .then(function ({ groupID, userList, nextFlag }) {
        // 查询成功
    })
    .catch(function (err) {
        // 查询失败
    });

查询群成员信息

用户登录 ZIM SDK、并加入某个群组后,如果想要了解自己所在群组的某个成员的信息,可以通过调用 queryGroupMemberInfo 接口,查询该成员的个人信息。

查询成功后,用户可以通过 ZIMGroupMemberInfoQueriedResult 收到查询结果。

queryGroupMemberInfo 说明

queryGroupMemberInfo(userID: string, groupID: string): Promise<ZIMGroupMemberInfoQueriedResult>
参数/回调 类型 是否必填 说明
userID string 是 需要获取信息的群成员 userID。
groupID string 是 获取群成员信息的群组 ID。
Promise ZIMGroupMemberInfoQueriedResult 是 获取群成员信息操作的结果回调通知。

示例代码

// 群内成员 查询群组内某个成员的信息
var groupID = '';
var userID = '';
zim.queryGroupMemberInfo(userID, groupID)
    .then(function ({ groupID, userInfo }) {
        // 查询成功
    })
    .catch(function (err) {
        // 查询失败
    });

设置群成员昵称

用户登录 ZIM SDK、并加入某个群组后,如果想要设置自己在群组中的昵称,可以通过调用 setGroupMemberNickname 接口,设置昵称。

在群组中,群主可以设置自己和其他群内成员在该群中的昵称;其他群内成员仅可以设置自己在该群中的昵称。

设置成功后,用户可以通过 ZIMGroupMemberNicknameUpdatedResult 收到通知。

setGroupMemberNickname 说明

setGroupMemberNickname(
    nickname: string,
    forUserID: string,
    groupID: string,
): Promise<ZIMGroupMemberNicknameUpdatedResult> 
参数 or 回调 类型 是否必填 说明
nickname string 是 设置的昵称。
forUserID string 是 设置昵称的群成员 ID。
groupID string 是 设置昵称的群组 ID。
Promise ZIMGroupMemberNicknameUpdatedResult 是 设置群成员昵称操作的结果回调通知。

示例代码

// 群内成员设置昵称。
// 注意:群主可以设置自己和其他群内成员在该群中的昵称;其他群内成员仅可以设置自己在该群中的昵称。
var groupID = '';
var forUserID = '';
var nickname = '';
zim.setGroupMemberNickname(nickname, forUserID, groupID)
    .then(function ({ groupID, forUserID, nickname }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

// 注册监听“群成员信息变更”的回调
zim.on('groupMemberInfoUpdated', function (zim, { groupID, userList, operatedInfo }) {
    console.log('groupMemberInfoUpdated', groupID, userList, operatedInfo);
});

设置群成员角色

群主登录 ZIM SDK 后,可以通过调用 setGroupMemberRole 接口,设置其他群内成员的角色,比如设置某个群成员为普通成员或者为管理员。

设置成功后,群主可以通过 ZIMGroupMemberRoleUpdatedResult 类型收到设置结果。

群内成员可以通过 groupMemberInfoUpdated 收到用户角色变更的通知。

群成员角色与权限说明

ZIM SDK 默认支持将用户设置为群主、管理员、普通成员。在群组中,群主拥有所有客户端权限,可以实现所有群组功能。管理员拥有大部分客户端权限。普通成员拥有的客户端权限最少,具体如下表所示:

客户端权限 群主(对应枚举值为 1) 管理员(对应枚举值为 2) 普通成员(对应枚举值为 3)
修改群头像、群名称、群公告
支持
支持
支持
修改群属性
修改群成员昵称
支持,可对所有群角色用户使用此功能
支持,可对所有普通成员使用此功能
支持,仅可对自己使用此功能
撤回群成员消息
踢人
不支持。
对单独群成员禁言
对特定群角色禁言
设置群成员角色
不支持
转让群主
解散群组
全员禁言

setGroupMemberRole 说明

setGroupMemberRole(role: number, forUserID: string, groupID: string): Promise<ZIMGroupMemberRoleUpdatedResult>
参数/回调 类型 是否必填 说明
role number 是 设置群成员角色。
  • 1:群主。
  • 2:管理员。
  • 3:普通成员。
  • 其他值:如需自定义群角色,取值范围建议为 [100, 255],其权限与普通成员相同。
forUserID string 是 设置群成员角色的群成员 ID。
groupID string 是 设置群成员角色的群组 ID。
Promise ZIMGroupMemberRoleUpdatedResult 是 设置群成员角色操作的结果回调通知。

示例代码

//  群主设置普通成员用户为管理员
var groupID = '';
var forUserID = '';
var role = 2;
zim.setGroupMemberRole(role, forUserID, groupID)
    .then(function ({ groupID, forUserID, role }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

// 注册监听“群成员信息变更”的回调
zim.on('groupMemberInfoUpdated', function (zim, { groupID, userList, operatedInfo }) {
    console.log('groupMemberInfoUpdated', groupID, userList, operatedInfo);
});

转让群主

用户登录 ZIM SDK、并加入某个群组后,如果自己是某个群组中的群主,可以通过调用 transferGroupOwner 接口,传入 toUserID(被转让群主的群成员 ID),将自己的群主角色,转让给其他群内成员。

  • 群组中,只有群主向其他群内成员转让群主的角色。
  • 群主转让时,toUserID(被转让群主的用户 ID) 必须是本群组内的成员,否则会操作失败。

转让成功后,群内成员可以通过 groupMemberInfoUpdated 收到群主变更的通知。

transferGroupOwner 说明

transferGroupOwner(toUserID: string, groupID: string): Promise<ZIMGroupOwnerTransferredResult>
参数/回调 类型 是否必填 说明
toUserID string 是 被转让群主的群成员 ID。
groupID string 是 转让群主的群组 ID。
Promise ZIMGroupOwnerTransferredResult 是 群主转让操作的结果回调通知。

示例代码

// 转让群主身份给其他群内成员
var groupID = '';
var toUserID = '';
zim.transferGroupOwner(toUserID, groupID)
    .then(function ({ groupID, toUserID }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

// 注册监听“群成员状态变更”的回调
zim.on('groupMemberStateChanged', function (zim, { groupID, state, event, userList, operatedInfo }) {
    console.log('groupMemberStateChanged', groupID, state, event, userList, operatedInfo);
});

// 注册监听“群成员信息变更”的回调
zim.on('groupMemberInfoUpdated', function (zim, { groupID, userList, operatedInfo }) {
    console.log('groupMemberInfoUpdated', groupID, userList, operatedInfo);
});

查询群内成员数量

用户登录 ZIM SDK、并加入某个群组后,如果想要了解自己所在群组的成员数量,可以通过调用 queryGroupMemberCount 接口,查询该群成员的数量。

查询成功后,用户可以通过 ZIMGroupMemberCountQueriedResult 收到查询结果。

queryGroupMemberCount 说明

queryGroupMemberCount(groupID: string): Promise<ZIMGroupMemberCountQueriedResult> 
参数/回调 类型 是否必填 说明
groupID string 是 需要查询的群组 ID。
Promise ZIMGroupMemberCountQueriedResult 是 获取群成员数量操作的结果回调。

示例代码

// 查询群内成员数量
var groupID = '';
zim.queryGroupMemberCount(groupID)
    .then(function ({ groupID, count }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

搜索群成员

用户登录 ZIM SDK、并加入群组后,如果想要根据条件在群成员中搜索用户,可以通过调用 searchLocalGroupMembers 接口,传入 groupID、config 搜索符合条件的群成员。

搜索结果将通过 ZIMGroupMembersSearchedResult 回调接口返回。

ZIM 小程序 SDK 不支持此 API 。

searchLocalGroupMembers 说明

searchLocalGroupMembers(
    groupID: string,
    config: ZIMGroupMemberSearchConfig,
): Promise<ZIMGroupMembersSearchedResult>
参数/回调 类型 是否必填 说明
groupID string 是 需要搜索的群组 ID(必须为已加入的群)。
config ZIMGroupMemberSearchConfig 是 群成员搜索配置。
Promise ZIMGroupMembersSearchedResult 是 可通过该回调获取搜索到的群成员信息。

ZIMGroupMemberSearchConfig 参数说明

参数 类型 是否必填 说明
nextFlag number 否 查询的 flag ,第一次调用接口时填 0。后续再次调用接口时填从 Promise 回调里返回的 nextFlag,以便获取剩余数据。
count number 是 搜索一次,可获取的群成员数量,上限为 30。建议小于 20,以降低性能开销。
keywords string[] 是 搜索关键字,最多支持 5 个,否则会报错。例如:传入 "你" 和 "好",则搜索结果只会展示名称同时包含 "你" 和 "好" 这两个关键字的群成员。
isAlsoMatchGroupMemberNickname boolean 否 搜索范围是否包括群成员昵称,默认为 false。

示例代码

// 在某个群组中搜索名称中包含 “zego” 的群成员

var config = {
    count: 10, // 搜索结果数量
    nextFlag: 0,
    keywords: ['zego'], // 设置关键词为 “zego”,最多支持 5 个。当设置多个关键词后,搜索结果只展示同时包含所有关键词的本地消息
    isAlsoMatchGroupMemberNickname: true, // 如果群成员用户昵称包含 zego,搜索结果将包含该群成员
};

zim.searchLocalGroupMembers('groupID', config)
    .then(function ({ groupID, userList, nextFlag }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

设置群成员禁言状态

登录 ZIM SDK 后,用户可以禁言或解禁自己管理的群组内的特定成员。调用 muteGroupMembers 接口,批量修改 100 名群成员的禁言状态。禁言期限可为永久(ZIMGroupMemberMuteConfig > duration 为 -1)或最长为 7 天(ZIMGroupMemberMuteConfig > duration 为 604800)。当 ZIMGroupMemberMuteConfig > duration 为 0 时,表示取消禁言。

  • 群主可以禁止所有群成员发言,包括自己。
  • 如需上调单次操作数量或最长禁言期限,请联系 ZEGO 技术支持。

设置成功后,操作用户可以通过 muteGroupMembers 收到结果。

禁言或解禁成功后,全体群成员会收到 groupMemberInfoUpdated,得知哪些群成员无法在该群组发言或解除禁言状态。

如果您希望禁止特定群成员角色发言,请参考 群组管理 - 禁言或解禁群组。

var isMute = true;
var userIDs = ["user_1", "user_2", "user_3"];
var groupID = "group_id";
var config = {
    duration: 30,  // 设置禁言时间为 30 秒
};

zim.muteGroupMembers(isMute, userIDs, groupID, config)
    .then(function ({ groupID, isMute, duration, mutedUserIDs, errorUserList }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

查询群内禁言成员列表

登录 ZIM SDK 后,群成员如需了解所在群组的被禁言成员列表,可调用 queryGroupMemberMutedList 接口进行查询。

查询成功后,操作用户可通过 ZIMGroupMemberMutedListQueriedResult 获取具体信息。

// 群内成员查询群组的成员列表
var groupID = "group_id";
var config = {
    count: 100,
    nextFlag: 0,
}

zim.queryGroupMemberMutedList(groupID, config)
    .then(function ({ groupID, userList, nextFlag }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

获取当前群成员禁言状态

如需主动获取当前用户在群组的禁言状态,请通过以下任意方法:

  • 参考 会话管理 - 拉取会话列表 主动拉取会话列表。
  • 参考 会话管理 - 更新会话列表,监听会话变更回调,更新会话列表。

当会话类型是群类型时,从返回结果中的 ZIMGroupConversation 获取 mutedExpiredTime,即群禁言时间,单位为秒。

mutedExpiredTime 值说明如下:

  • 为 -1 时,表示当前用户永久无法在该群组发言。
  • 为 0 时,表示当前用户可以在该群组发言。
  • 为其他值时,表示当前用户于该数值时间内无法在该群组发言。

如果当前用户既因群角色被禁言(详见 群组管理 - 禁言或解禁群组,又被单独禁言(详见本文 设置群成员禁言状态),则 mutedExpiredTime 值以“群禁言时间”与“单独被禁言时间”中的最大值为准。

本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈