群成员管理

更新时间: 2024/08/16 17:53:39

网易云信 NIM SDK 支持用户查询、添加、移除群组成员,管理成员角色等功能,拥有完善的成员权限体系及管理功能,群组内所有用户根据权限分为群主、管理员、以及普通成员。

技术原理

网易云信 NIM SDK 的 TeamInterface 提供管理群组成员的相关方法,帮助您快速实现和使用群组的成员权限体系及管理功能。

群组中有三种角色,群主(owner),群组管理员(manager)以及群组普通成员(normal) 。

  • 群主默认为群组创建者,后续可通过 transferTeam 转让群主身份。
  • 群组管理员由群主分配,群主通过 addTeamManagers 添加群组管理员。
  • 用户进入群组后,默认为群组的普通成员,后续可联系群主修改角色。

前提条件

管理群组管理员

添加群组管理员

只有群主才拥有添加群组管理员的权限。

通过调用addTeamManagers 方法添加群组管理员。

群主添加管理员后,所有群成员都会收到群组通知消息,类型为 addTeamManagers,该群组通知消息中包含群主账号、被添加为管理员的用户账号、对应群组 ID以及群管理员列表。

参数说明:

参数 类型 说明
teamId String 群ID
accounts Array 添加的群管理员账号列表
done done 结果回调函数

示例代码:

nim.addTeamManagers({
    teamId: '123',
    accounts: ['a2', 'a3'],
    done: addTeamManagersDone
});
function addTeamManagersDone(error, obj) {
    console.log('添加群管理员' + (!error?'成功':'失败'), error, obj);
}

移除群组管理员

只有群主拥有移除群组管理员的权限。

通过调用 removeTeamManagers 方法来移除群组管理员。

群主移除群管理员后, 所有群成员都会收到群组通知消息,类型为 removeTeamManagers,该群组通知消息中包含群主账号、被移除管理员的用户账号、对应群组 ID以及被移除群管理员列表。

参数说明:

参数 类型 说明
teamId String 群ID
accounts Array 移除的群管理员账号列表
done done 结果回调函数

示例代码:

nim.removeTeamManagers({
    teamId: '123',
    accounts: ['a2', 'a3'],
    done: removeTeamManagersDone
});
function removeTeamManagersDone(error, obj) {
    console.log('移除群管理员' + (!error?'成功':'失败'), error, obj);
}

修改群成员信息

修改群组成员的群昵称

只有群主才有修改群组成员的群昵称的权限。

通过调用 updateNickInTeam 来修改群组成员的群昵称。

群主和群管理员修改群成员昵称后,所有其他在线的群成员会收到初始化 SDK 时传入的 onupdateteammember 回调。

参数说明:

参数 类型 说明
teamId String 群ID
account String 被修改群昵称的用户账号
nickInTeam String 群昵称
done done 结果回调函数

示例代码:

nim.updateNickInTeam({
    teamId: '123',
    account: 'a2',
    nickInTeam: '群昵称',
    done: updateNickInTeamDone
});
function updateNickInTeamDone(error, obj) {
    console.log('修改群成员昵称' + (!error?'成功':'失败'), error, obj);
}

修改自己在群组中信息

通过调用 updateInfoInTeam 来修改自己在群组中的信息。

目前支持修改以下属性:

  • nickInTeam: 自己在群组中的群昵称。更新昵称后, 所有其他在线的群成员会收到初始化 SDK 时传入的 onupdateteammember 回调。
  • muteNotiType: 群消息的提醒策略,0:开启提醒;1:关闭消息提醒 ;2:只接收群主和管理员的消息的提醒。
  • muteTeam: 是否关闭此群组的消息提醒。true 表示关闭提醒;false 表示不关闭。SDK 仍会收到此群的消息, SDK 只是记录这个设置。具体根据该设置要执行的操作由第三方APP 决定。
  • custom: 第三方扩展字段, 开发者可以自行扩展, 建议封装成 JSON 格式字符串。

参数说明:

参数 类型 说明
teamId String 群ID
muteNotiType String 群消息的提醒策略,"0":开启提醒;"1":关闭消息提醒
muteTeam Boolean 是否关闭此群的消息提醒
true:关闭提醒
nickInTeam String 群昵称
custom String 第三方扩展字段, 开发者可以自行扩展, 建议封装成 JSON 格式字符串
done done 结果回调函数

示例代码:

nim.updateInfoInTeam({
    teamId: '123',
    // 此参数为可选参数
    // nickInTeam: '群昵称',
    // 静音群, 此参数为可选参数
    // muteTeam: true,
    // 第三方扩展字段
    // custom: '{}'
    done: updateInfoInTeamDone
});
function updateInfoInTeamDone(error, obj) {
    console.log('修改自己的群属性' + (!error?'成功':'失败'), error, obj);
}

禁言群组成员

群组全体禁言

只有群主才有禁言全体成员或取消全员禁言的权限。

通过调用 muteTeamAll 方法来禁言群组全体成员或解除全体成员的禁言。

群组全员禁言分为两种模式。

  • 若群组的禁言模式 muteTypeall,那么调用该接口禁言的对象是包含群主和管理员的所有成员。
  • 若群组的禁言模式 muteTypenormal,那么调用该接口禁言的对象是全体普通成员,不包括群主和管理员。

参数说明:

参数 类型 说明
teamId String 群ID
mute Boolean 是否禁言全体成员。
true:表示禁言
false:表示解除禁言

示例代码:

nim.muteTeamAll({
  teamId: '1027484',
  mute: true,
  done: muteTeamAllDone
})
function muteTeamAllDone (error, obj) {
  console.log('禁言群' + (!error?'成功':'失败'));
}

禁言指定群成员

仅群主和管理员能禁言指定群成员。

通过调用 updateMuteStateInTeam 来修改群成员的的禁言状态。

修改群成员禁言状态后, 所有群成员都会收到群组通知消息,类型为 updateTeamMute,该群组通知消息中包含操作者账号、被禁言的用户账号、对应群组组信息以及被禁言的成员列表。

参数说明:

参数 类型 说明
teamId String 群ID
account String 被禁言的用户帐号
mute Boolean 是否禁言。
true:表示禁言
false:表示解除禁言
done done 结果回调函数

示例代码:

nim.updateMuteStateInTeam({
    teamId: '123',
    account: 'a',
    mute: true,
    done: updateMuteStateInTeamDone
})
function updateMuteStateInTeamDone(error, obj) {
    console.log('更新群成员禁言状态' + (!error?'成功':'失败'), error, obj);
}

查询群组成员

查询群组成员信息

通过调用 getTeamMembers 方法来获取群组成员。

该操作有可能只是从本地数据库读取缓存数据,也有可能会从服务器同步新的数据, 因此耗时可能会比较长。

参数说明:

参数 类型 说明
teamId String 群ID
done done 结果回调函数, 成功时会收到群成员列表

**示例代码: **

nim.getTeamMembers({
    teamId: '123',
    done: getTeamMembersDone
});
function getTeamMembersDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('获取群成员' + (!error?'成功':'失败'));
    if (!error) {
        // handle error
    }
}

查询指定群组成员信息

通过调用 getTeamMemberByTeamIdAndAccount 方法根据群组 ID 和成员账号来获取指定群组成员信息。

该操作有可能只是从本地数据库读取缓存数据,也有可能会从服务器同步新的数据, 因此耗时可能会比较长。

参数说明:

参数 类型 说明
teamId String 群ID
account String 群成员账号
done done 结果回调函数,成功时会收到群成员列表

示例代码:

nim.getTeamMemberByTeamIdAndAccount({
    teamId: '123',
    account: 'abc',
    done: getTeamMemberDone
});
function getTeamMemberDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('获取群成员' + (!error?'成功':'失败'));
    if (!error) {
        onTeamMember(obj);
    }
}

查询本地指定群组成员信息

通过调用 getLocalTeamMembers 方法根据群组 ID 和成员账号从本地数据库查询指定群组成员信息。

参数说明:

参数 类型 说明
teamId String 群ID
accounts String 群成员账号列表
done done 结果回调函数,成功时会收到群成员列表

示例代码:

nim.getLocalTeamMembers({
    teamIds: teamIds
    done: getLocalTeamMembers
});
function getLocalTeamMembers(error, obj) {
    console.log('获取本地群成员' + (!error?'成功':'失败'));
    console.log(error);
    console.log(obj);
}

查询群成员的邀请者

通过调用 getTeamMemberInvitorAccid 来查询群组成员的邀请者。

群成员入群邀请人为空表示主动入群,没有邀请人。

参数说明:

参数 类型 说明
teamId String 群ID
accounts Array 需要查询邀请者的群成员账号列表,一次最多查200个
当群成员数量小于等于 200 时为可选参数,不填默认查全部成员; 群成员数量大于 200 时,需要将成员列表分批多次调用查询。
done done 结果回调函数,返回数据类型为 Object,key/value 分别是群成员(accid)/邀请者(accid)

示例代码:

nim.getTeamMemberInvitorAccid({
    teamId: '123',
    account: ['abc'],
    done: getTeamMemberInvitorAccidDone
});
function getTeamMemberInvitorAccidDone(error, obj) {
    console.log(error);
    console.log(obj);
    console.log('获取群成员邀请者' + (!error?'成功':'失败'));
}

查询被禁言的群成员

通过调用 getMutedTeamMembers 方法来查询被禁言的群成员。

示例代码:

jsnim.getMutedTeamMembers({
  teamId: 'teamId',
  done: getMutedTeamMembersDone
})
function getMutedTeamMembersDone (error, obj) {
  console.log('获取群禁言成员列表' + (!error?'成功':'失败'));
}

API 参考

API
说明
addTeamManagers 添加群组管理员
removeTeamManagers 移除群组管理员
updateNickInTeam 修改群组成员的昵称
updateInfoInTeam 修改自己在群组中的信息
updateMuteStateInTeam 修改指定群组成员禁言状态
muteTeamAll 禁言群组全体成员
getTeamMemberInvitorAccid 查询群组成员的邀请者
getTeamMembers 查询群组成员
getTeamMemberByTeamIdAndAccount 根据群组 ID 和成员账号来获取指定群组成员信息
getMutedTeamMembers 查询被禁言的群组成员
getLocalTeamMembers 根据群组 ID 和成员账号从本地数据库查询指定群组成员信息
此文档是否对你有帮助?
有帮助
去反馈
  • 技术原理
  • 前提条件
  • 管理群组管理员
  • 添加群组管理员
  • 移除群组管理员
  • 修改群成员信息
  • 修改群组成员的群昵称
  • 修改自己在群组中信息
  • 禁言群组成员
  • 群组全体禁言
  • 禁言指定群成员
  • 查询群组成员
  • 查询群组成员信息
  • 查询指定群组成员信息
  • 查询本地指定群组成员信息
  • 查询群成员的邀请者
  • 查询被禁言的群成员
  • API 参考