功能描述
群成员管理指的是对成员进行列表拉取、禁言、踢人、授权、转让群主等操作。
获取群成员列表
注意:
1. 该接口支持拉取群成员禁言截止时间戳(muteUntil),接入侧可根据此值判断群成员是否被禁言,以及禁言的剩余时间。
2. 该接口是分页拉取群成员,不能直接用于获取群的总人数。获取群的总人数(memberCount)请使用 getGroupProfile。
3. 当接口返回的 offset 为 0 时说明群成员已经拉取完成。
4. 对直播群(AVChatRoom)增加以下特殊限制:
旗舰版支持拉取最近入群群成员最多 1000 人,新进来的成员排在前面。需要您购买旗舰版套餐且前往 控制台 开启开关。
旗舰版使用该接口时 SDK 会忽略 count 参数,单次查询默认最多返回 500 个群成员。
旗舰版接口调用默认限制 3 秒 1 次请求,如果需要定时查询群成员列表,建议每 10 秒请求一次。
群成员资料信息仅支持 userID | nick | avatar | joinTime 字段,设置 nick 和 avatar 信息请调用:updateMyProfile。
5. 旗舰版支持直播群(AVChatRoom)根据 filter 参数拉取指定标记的群成员列表。标记群成员请参考:markGroupMemberList。
接口
chat.getGroupMemberList(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
参数 | 类型 | 描述 |
groupID | String | 群组 ID |
role | String | 群成员角色。默认 SDK 拉取所有的群成员,您可以通过设置此字段拉取指定角色的群成员列表(v3.1.3起支持),支持的值如下: TencentCloudChat.TYPES.GRP_MBR_ROLE_OWNER - 群主 TencentCloudChat.TYPES.GRP_MBR_ROLE_ADMIN - 群管理员 TencentCloudChat.TYPES.GRP_MBR_ROLE_MEMBER - 普通群成员 |
count | Number | 需要拉取的数量。默认值:15,最大值:100,避免回包过大导致请求失败。若传入超过 100,则只拉取前 100 个(旗舰版套餐直播群使用该接口时忽略 count 参数)。 |
offset | Number | 偏移量,默认从0开始拉取。 |
返回值
Promise
示例
let promise = chat.getGroupMemberList({groupID: 'group1',count: 30,offset:0,}); // 从0开始拉取30个群成员promise.then(function(imResponse) {console.log(imResponse.data.memberList); // 群成员列表}).catch(function(imError) {console.warn('getGroupMemberList error:', imError);});
// 该接口支持拉取群成员禁言截止时间戳。let promise = tim.getGroupMemberList({groupID: 'group1',count: 30,offset:0,}); // 从 0 开始拉取30个群成员promise.then(function(imResponse) {console.log(imResponse.data.memberList); // 群成员列表for (let groupMember of imResponse.data.memberList) {if (groupMember.muteUntil * 1000 > Date.now()) {console.log(`${groupMember.userID} 禁言中`);} else {console.log(`${groupMember.userID} 未被禁言`);}}}).catch(function(imError) {console.warn('getGroupMemberProfile error:', imError);});
// 旗舰版套餐支持获取直播群在线成员列表let promise = chat.getGroupMemberList({groupID: 'group1',offset:0, // 默认从 0 开始拉取});promise.then(function(imResponse) {console.log(imResponse.data.memberList); // 群成员列表}).catch(function(imError) {console.warn('getGroupMemberList error:', imError);});
禁言
禁言指定群成员
注意:
1.
TencentCloudChat.TYPES.GRP_WORK
类型的群组(即好友工作群)不支持此操作。2.
TencentCloudChat.TYPES.GRP_AVCHATROOM
类型的群组(即直播群)不支持此操作。3. 直播群【封禁】或者【踢出】群成员,需要您购买旗舰版套餐,并调用 deleteGroupMember 接口实现。
4. 如果需要【全体禁言】,请参考 updateGroupProfile。
5. 支持设置社群成员在话题中的禁言时间,groupID 传入 topicID 即可。
6. 只有群主和管理员拥有该操作权限:
群主可以禁言/取消禁言管理员和普通群成员。
管理员可以禁言/取消禁言普通群成员。
接口
chat.setGroupMemberMuteTime(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
参数 | 类型 | 描述 |
groupID | String | 群组 ID 或 话题 ID |
userID | String | 用户 ID |
muteTime | Number | 禁言时长,单位秒。如设为1000,则表示从现在起禁言该用户 1000 秒;设为0,则表示取消禁言。 |
返回值
Promise
示例
let promise = chat.setGroupMemberMuteTime({groupID: 'group1',userID: 'user1',muteTime: 600 // 禁言10分钟;设为0,则表示取消禁言});promise.then(function(imResponse) {console.log(imResponse.data.group); // 修改后的群资料console.log(imResponse.data.member); // 修改后的群成员资料}).catch(function(imError) {console.warn('setGroupMemberMuteTime error:', imError); // 禁言失败的相关信息});
// 设置群成员在话题中的禁言时间let promise = chat.setGroupMemberMuteTime({groupID: 'topicID',userID: 'user1',muteTime: 600 // 禁言10分钟;设为0,则表示取消禁言});promise.then(function(imResponse) {console.log(imResponse.data.group); // 修改后的群资料console.log(imResponse.data.member); // 修改后的群成员资料}).catch(function(imError) {console.warn('setGroupMemberMuteTime error:', imError); // 禁言失败的相关信息});
禁言整个群
// 全体禁言let promise = chat.updateGroupProfile({groupID: 'group1',muteAllMembers: true, // true 表示全体禁言,false表示取消全体禁言});promise.then(function(imResponse) {console.log(imResponse.data.group) // 修改成功后的群组详细资料}).catch(function(imError) {console.warn('updateGroupProfile error:', imError); // 修改群组资料失败的相关信息});
踢人
注意:
1. 旗舰版套餐包支持删除直播群群成员。您可以通过调用此接口实现直播群【封禁群成员】的效果。
2. 踢出时长字段仅直播群(AVChatRoom)支持。
3. 群成员被移除出直播群后,在踢出时长内如果用户想再次进群,需要 App 管理员调用 RESTAPI 解封。过了踢出时长,用户可再次主动加入直播群。
接口
chat.deleteGroupMember(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
参数 | 类型 | 描述 |
groupID | String | 群组 ID 或 话题 ID |
userIDList | Array | 待删除的群成员的 ID 列表 |
reason | String | undefined | 踢人的原因 |
duration | Number | 踢出时长,必须大于 0(仅直播群支持) |
返回值
Promise
示例
// 非直播群踢出群成员let promise = chat.deleteGroupMember({groupID: 'group1',userIDList:['user1'],reason: '你违规了,我要踢你!',});promise.then(function(imResponse) {console.log(imResponse.data.group); // 删除后的群组信息console.log(imResponse.data.userIDList); // 被删除的群成员的 userID 列表}).catch(function(imError) {console.warn('deleteGroupMember error:', imError); // 错误信息});
// 直播群踢出群成员let promise = chat.deleteGroupMember({groupID: 'group1',userIDList:['user1'],reason: '你违规了,我要踢你!',duration: 60,});promise.then(function(imResponse) {console.log(imResponse.data.group); // 删除后的群组信息console.log(imResponse.data.userIDList); // 被删除的群成员的 userID 列表}).catch(function(imError) {console.warn('deleteGroupMember error:', imError); // 错误信息});
修改群成员角色
注意:
1.
TencentCloudChat.TYPES.GRP_WORK
类型的群组(即好友工作群)不支持此操作。2.
TencentCloudChat.TYPES.GRP_AVCHATROOM
类型的群组(即直播群)不支持此操作。接口
chat.setGroupMemberRole(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
参数 | 类型 | 描述 |
groupID | String | 群组 ID 或 话题 ID |
userID | String | 用户 ID |
role | String | 可选值: TencentCloudChat.TYPES.GRP_MBR_ROLE_ADMIN (群管理员),TencentCloudChat.TYPES.GRP_MBR_ROLE_MEMBER (群普通成员),TencentCloudChat.TYPES.GRP_MBR_ROLE_CUSTOM (自定义群成员角色,仅社群支持) |
返回值
Promise
示例
let promise = chat.setGroupMemberRole({groupID: 'group1',userID: 'user1',role: TencentCloudChat.TYPES.GRP_MBR_ROLE_ADMIN // 将群 ID: group1 中的用户:user1 设为管理员});promise.then(function(imResponse) {console.log(imResponse.data.group); // 修改后的群资料console.log(imResponse.data.member); // 修改后的群成员资料}).catch(function(imError) {console.warn('setGroupMemberRole error:', imError); // 错误信息});
获取群在线人数
注意:
1. v3.2.0起,此接口可获取所有类型的群的在线人数。
2. 调用此接口查询直播群人数的频率建议控制在5~10秒一次;查询其它类型的群的在线人数限频60秒一次。
接口
chat.getGroupOnlineMemberCount(groupID);
参数
参数 | 类型 | 描述 |
groupID | String | 群组 ID |
返回值
Promise
示例
// 查询直播群在线人数let promise = chat.getGroupOnlineMemberCount('group1');promise.then(function(imResponse) {console.log(imResponse.data.memberCount);}).catch(function(imError) {console.warn('getGroupOnlineMemberCount error:', imError); // 获取直播群在线人数失败的相关信息});