Web

群成员管理

更新时间: 2024/03/14 19:21:10

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

技术原理

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

群组中有三种角色,群主(owner),群组管理员(manager)以及群组普通成员(normal),具体请参见 TeamMemberType

  • 群主默认为群组创建者,后续可通过 transferTeam 转让群主身份。
  • 群组管理员由群主分配,群主通过 addTeamManagers 添加群组管理员。
  • 用户进入群组后,默认为群组的普通成员,后续可联系群主修改角色。
  • TeamMemberType 中还包含 applyapplyReject 两种类型,分别表示待审核的申请入群用户和已拒绝的申请入群用户。

前提条件

管理群组管理员

添加群组管理员

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

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

群主添加管理员后,所有群成员都会收到群通知消息,其类型为updateTeamManagers

接口原型:

jsaddTeamManagers(options: AddTeamManagersOptions): Promise<void>

AddTeamManagersOptions 参数说明

参数 类型 说明
teamId String 群ID
accounts Array 添加的群管理员账号

示例代码:

jsawait nim.team.addTeamManagers({
  accounts: ['cs1', 'cs2'],
  teamId:  '{{TARGET_TEAM_ID}}',
});

移除群组管理员

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

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

群主移除群管理员后, 所有群成员都会收到群通知消息,其类型为 updateTeamManagers

接口原型:

jsremoveTeamManagers(options: RemmoveTeamManagersOptions): Promise<void>

RemmoveTeamManagersOptions 参数说明

参数 类型 说明
teamId String 群ID
accounts Array 移除的群管理员账号

示例代码:

jsawait nim.team.removeTeamManagers({
  accounts: ['cs1', 'cs2'],
  teamId:  '{{TARGET_TEAM_ID}}',
});

修改群成员信息

修改群组成员的群昵称

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

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

群主修改群成员昵称后,所有其他在线的群成员会收到群通知消息,其类型为 updateTeamMember

接口原型:

jsupdateMemberNick(options: UpdateMemberNickOptions): Promise<TeamMember>

UpdateMemberNickOptions 参数说明

参数 类型 说明
teamId String 群ID
account String 被修改群昵称的用户账号
nickInTeam String 群昵称

示例代码:

jsawait nim.team.updateMemberNick({
  account: 'cs1'
  teamId:  '{{TARGET_TEAM_ID}}',
  nickInTeam: '张三',
});

修改自己在群组中信息

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

目前支持修改的属性包括以下三种:

  • nickInTeam: 自己在群组中的群昵称。更新昵称后, 所有其他在线的群成员会收到群通知消息,其类型为 updateTeamMember
  • bitConfigMask: 修改群组的消息提醒策略。0:开启提醒;1:关闭消息提醒;3:只接收群主和管理员的提醒。
  • ext: 第三方扩展字段, 开发者可以自行扩展, 建议封装成 JSON 格式字符串。

接口原型:

jsupdateMyMemberInfo(options: UpdateMyMemberInfoOptions): Promise<TeamMember>

UpdateMyMemberInfoOptions 参数说明

参数 类型 说明
teamId String 群ID
bitConfigMask number 提醒策略
0:开启提醒
1:关闭消息提醒
2:只接受管理员的消息的提醒
nickInTeam String 群昵称
ext String 第三方扩展字段, 开发者可以自行扩展, 建议封装成 JSON 格式字符串

示例代码:

jsawait nim.team.updateMyMemberInfo({
  teamId:  '{{TARGET_TEAM_ID}}',
  nickInTeam: '张三',
  bitConfigMask: '2',
  ext: '扩展字段, 建议封装成 JSON 格式字符串',
});

禁言群组成员

群组全体禁言

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

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

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

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

接口原型:

jsmuteTeam(options: MuteTeamOptions): Promise<void>

MuteTeamOptions 参数说明

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

示例代码:

jsawait nim.team.muteTeam({
  mute: 'true',
  teamId:  '{{TARGET_TEAM_ID}}',
});

禁言指定群成员

只有群主才能禁言指定群成员。

通过调用 muteTeamMember 来禁言某些群组成员或解除某些群成员的禁言。

修改群成员禁言状态后, 所有群成员都会收到群通知消息,其类型为 updateTeamMembersMute

接口原型:

jsmuteTeamMember(options: MuteTeamMemberOptions): Promise<void>

MuteTeamMemberOptions 参数说明

参数 类型 说明
teamId String 群ID
account String 被禁言的用户账号
mute number 是否禁言。
true:表示禁言
false:表示解除禁言

示例代码:

jsawait nim.team.muteTeamMember({
  account: 'cs1'
  mute: 'true',//true表示禁言,false表示解除禁言
  teamId:  '{{TARGET_TEAM_ID}}',
});

attach 中的 team 为对应的群对象,account 为被禁言的用户账号, members 为被禁言的群成员列表。

查询群组成员

查询群组成员信息

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

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

接口原型:

jsgetTeamMembers(options: GetTeamMembersOptions): Promise<TeamMember[]>

GetTeamMembersOptions 参数说明

参数 类型 说明
teamId String 群ID
accounts Array 需要查询的成员账号

示例代码:

jsawait nim.team.getTeamMembers({
  accounts: ['cs1', 'cs2'],
  teamId:  '{{TARGET_TEAM_ID}}',
});

查询群成员的邀请者

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

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

接口原型:

jsgetTeamMemberInvitorAccid(options: GetTeamMemberInvitorAccidOptions): Promise<GetTeamMemberInvitorAccidResult>

GetTeamMemberInvitorAccidOptions 参数说明

参数 类型 说明
teamId String 群ID
accounts Array 需要查询邀请者的群成员账号列表,一次最多查询 200 个
当群成员数量小于等于 200 时为可选参数,不填默认查全部成员; 群成员数量大于 200 时,需要将成员列表分批多次调用查询。

示例代码:

jsawait nim.team.getTeamMemberInvitorAccid({
  accounts: ['cs1', 'cs2'],
  teamId:  '{{TARGET_TEAM_ID}}',
});

查询被禁言的群成员

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

接口原型:

jsgetMutedTeamMembers(options: { teamId: string }): Promise<TeamMember[]>

示例代码:

jsawait nim.team.getMutedTeamMembers({
  teamId:  '{{TARGET_TEAM_ID}}',
});

API 参考

API
说明
addTeamManagers 添加群组管理员
updateMyMemberInfo 修改自己在群组中的信息
getTeamMemberInvitorAccid 查询群组成员的邀请者
getTeamMembers 查询群组成员
updateMemberNick 修改群组成员的昵称
removeTeamManagers 移除群组管理员
muteTeamMember 禁言群组成员
muteTeam 禁言群组全体成员
getMutedTeamMembers 查询被禁言的群组成员
此文档是否对你有帮助?
有帮助
去反馈
  • 技术原理
  • 前提条件
  • 管理群组管理员
  • 添加群组管理员
  • 移除群组管理员
  • 修改群成员信息
  • 修改群组成员的群昵称
  • 修改自己在群组中信息
  • 禁言群组成员
  • 群组全体禁言
  • 禁言指定群成员
  • 查询群组成员
  • 查询群组成员信息
  • 查询群成员的邀请者
  • 查询被禁言的群成员
  • API 参考