群成员管理指的是对成员进行列表拉取、禁言、踢人、授权、转让群主等操作。
注意:
- 从 v2.6.2 起,该接口支持拉取群成员禁言截止时间戳(muteUntil),接入侧可根据此值判断群成员是否被禁言,以及禁言的剩余时间。在低于v2.6.2的版本,该接口获取的群成员列表中的资料是不完整的(仅包括头像、昵称等,能够满足群成员列表的渲染需求),若要查询群成员禁言截止时间戳(muteUntil)等详细资料,请使用 getGroupMemberProfile。
- 该接口是分页拉取群成员,不能直接用于获取群的总人数。获取群的总人数(memberCount)请使用 getGroupProfile。
- 从 v2.22.0 起,对直播群(AVChatRoom)增加以下特殊限制:
- 旗舰版支持拉取最近入群群成员最多 1000 人,新进来的成员排在前面。需要您购买旗舰版套餐且前往 控制台 开启开关。
- 旗舰版使用该接口时 SDK 会忽略 count 参数,单次查询默认最多返回 500 个群成员。
- 旗舰版接口调用默认限制 3 秒 1 次请求,如果需要定时查询群成员列表,建议每 10 秒请求一次。
- 群成员资料信息仅支持 userID | nick | avatar | joinTime 字段,设置 nick 和 avatar 信息请调用:updateMyProfile。
旗舰版如需户开启直播群在线成员列表功能,请登录 即时通信 IM 控制台 修改相关配置,配置页面如下图所示:
接口
tim.getGroupMemberList(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Description |
---|---|---|
groupID | String | 群组 ID |
count | Number | 需要拉取的数量。默认值:15,最大值:100,避免回包过大导致请求失败。若传入超过100,则只拉取前100个 |
offset | Number | 偏移量,默认从0开始拉取 |
返回值
Promise
对象。
示例
let promise = tim.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);
});
// 从 v2.6.2 起,该接口支持拉取群成员禁言截止时间戳。
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);
});
// 从 v2.22.0 起,旗舰版套餐支持获取直播群在线成员列表
let promise = tim.getGroupMemberList({ groupID: 'group1', offset:0 }); // 默认从0开始拉取
promise.then(function(imResponse) {
console.log(imResponse.data.memberList); // 群成员列表
}).catch(function(imError) {
console.warn('getGroupMemberList error:', imError);
});
注意:
- 只有群主和管理员拥有该操作权限:群主可以禁言/取消禁言管理员和普通群成员。管理员可以禁言/取消禁言普通群成员。
- v2.19.1 起,支持设置社群成员在话题中的禁言时间,groupID 传入 topicID 即可。
接口
tim.setGroupMemberMuteTime(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Description |
---|---|---|
groupID | String | 群组 ID 或 话题 ID |
userID | String | 用户 ID |
muteTime | Number | 禁言时长,单位秒。如设为1000,则表示从现在起禁言该用户1000秒;设为0,则表示取消禁言。 |
返回值
Promise
对象。
示例
let promise = tim.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 = tim.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); // 禁言失败的相关信息
});
// v2.6.2 起,提供了全体禁言和取消禁言的功能。目前群全体禁言后,不支持下发群提示消息。
let promise = tim.updateGroupProfile({
groupID: 'group1',
muteAllMembers: true, // true 表示全体禁言,false表示取消全体禁言
});
promise.then(function(imResponse) {
console.log(imResponse.data.group) // 修改成功后的群组详细资料
}).catch(function(imError) {
console.warn('updateGroupProfile error:', imError); // 修改群组资料失败的相关信息
});
注意:
- 从 v2.22.0 起,旗舰版支持直播群(AVChatRoom)踢人。
- 踢出时长字段(duration)仅直播群(AVChatRoom)支持,单位:秒。
- 成员被踢出直播群后,App 管理员可以通过 RESTAPI 解封群成员,解封之后该成员可以再次加群。
接口
tim.deleteGroupMember(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Description |
---|---|---|
groupID | String | 群组 ID 或 话题 ID |
userIDList | Array | 待删除的群成员的 ID 列表 |
reason | String | undefined | 踢人的原因 |
duration | Number | 踢出时长,必须大于 0(仅直播群支持) |
返回值
Promise
对象。
示例
// 非直播群踢出群成员
let promise = tim.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); // 错误信息
});
// 从v2.22.0 起,支持直播群踢出群成员
let promise = tim.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); // 错误信息
});
接口
tim.setGroupMemberRole(options);
参数
参数 options 为 Object 类型,包含的属性值如下:
Name | Type | Description |
---|---|---|
groupID | String | 群组 ID 或 话题 ID |
userID | String | 用户 ID |
role | String | 可选值:TIM.TYPES.GRP_MBR_ROLE_ADMIN(群管理员),TIM.TYPES.GRP_MBR_ROLE_MEMBER(群普通成员),TIM.TYPES.GRP_MBR_ROLE_CUSTOM(自定义群成员角色,仅社群支持) |
返回值
Promise
对象。
示例
let promise = tim.setGroupMemberRole({
groupID: 'group1',
userID: 'user1',
role: TIM.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); // 错误信息
});
注意:
- 目前该接口仅支持直播群(AVChatRoom)。
- 当不在直播群内或非直播群使用此API查询人数时,SDK 返回的 memberCount 为0。调用此接口查询直播群人数的频率建议控制在5~10秒一次。
接口
tim.getGroupOnlineMemberCount(groupID);
参数
Name | Type | Description |
---|---|---|
groupID | String | 群组 ID |
返回值
Promise
对象。
示例
// v2.8.0 起,支持查询直播群在线人数
let promise = tim.getGroupOnlineMemberCount('group1');
promise.then(function(imResponse) {
console.log(imResponse.data.memberCount);
}).catch(function(imError) {
console.warn('getGroupOnlineMemberCount error:', imError); // 获取直播群在线人数失败的相关信息
});
本页内容是否解决了您的问题?