群成员管理
更新时间: 2024/03/14 19:21:10
网易云信 NIM SDK 支持用户查询、添加、移除群组成员,管理成员角色等功能,拥有完善的成员权限体系及管理功能,群组内所有用户根据权限分为群主、管理员、以及普通成员。
技术原理
网易云信 NIM SDK 的 TeamServiceInterface
提供管理群组成员的相关方法,帮助您快速实现和使用群组的成员权限体系及管理功能。
群组中有三种角色,群主(owner
),群组管理员(manager
)以及群组普通成员(normal
),具体请参见 TeamMemberType
。
- 群主默认为群组创建者,后续可通过
transferTeam
转让群主身份。 - 群组管理员由群主分配,群主通过
addTeamManagers
添加群组管理员。 - 用户进入群组后,默认为群组的普通成员,后续可联系群主修改角色。
TeamMemberType
中还包含apply
和applyReject
两种类型,分别表示待审核的申请入群用户和已拒绝的申请入群用户。
前提条件
管理群组管理员
添加群组管理员
只有群主才拥有添加群组管理员的权限。
通过调用addTeamManagers
方法添加群组管理员。
群主添加管理员后,所有群成员都会收到群通知消息,其类型为updateTeamManagers
。
接口原型:
jsaddTeamManagers(options: AddTeamManagersOptions): Promise<void>
参数 | 类型 | 说明 |
---|---|---|
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>
参数 | 类型 | 说明 |
---|---|---|
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
方法来禁言群组全体成员或解除全体成员的禁言。
群组全员禁言分为两种模式。
- 若群组的禁言模式
muteType
为all
,那么调用该接口禁言的对象是包含群主和管理员的所有成员。 - 若群组的禁言模式
muteType
为normal
,那么调用该接口禁言的对象是全体普通成员,不包括群主和管理员。
接口原型:
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>
参数 | 类型 | 说明 |
---|---|---|
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[]>
参数 | 类型 | 说明 |
---|---|---|
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 |
查询被禁言的群组成员 |