超大群成员管理
更新时间: 2024/03/14 19:21:10
云信 IM Web Elite SDK 支持用户查询、添加、移除超大群成员,管理成员角色等功能,拥有完善的成员权限体系及管理功能,群内所有用户根据权限分为群主、管理员、以及群成员。
技术原理
网易云信 IM Web Elite SDK 的 SuperTeamServiceInterface
提供管理超大群成员的相关方法,帮助您快速实现和使用超大群的成员权限体系及管理功能。
超大群中有三种角色,群主(owner),群管理员(manager)以及群普通成员(normal),具体请参见 SuperTeamMemberType
。
- 群主默认为超大群创建者,后续可通过
transferSuperTeam
转让群主身份。(超大群需要用户在服务端创建,客户端不支持创建和解散超大群。) - 群管理员由群主分配,群主通过
addSuperTeamManagers
将普通成员设置为管理员。 - 用户进入超大群后,默认为超大群的普通成员,后续可联系群主修改角色。
TeamMemberType
中还包含apply
和applyReject
两种类型,分别表示待审核的申请加入用户和已拒绝的申请加入用户。
超大群相关 API 都挂载在 superTeam
模块中,使用 nim.superTeam
进行访问,具体请参见 SuperTeamServiceInterface
。
前提条件
管理超大群管理员
添加超大群管理员
只有超大群群主才拥有添加管理员的权限。
通过调用addSuperTeamManagers
方法添加超大群管理员。
群主添加管理员后,所有群成员会收到超大群通知消息,其类型为 updateSuperTeamManagers
。
接口原型:
jsaddSuperTeamManagers(options: AddSuperTeamManagersOptions): Promise<void>
示例代码:
jsawait nim.superTeam.addSuperTeamManagers({
accounts: ['cs1', 'cs2'],
teamId: '{{TARGET_SUPERTEAM_ID}}',
});
撤销超大群管理员
只有群主拥有撤销超大群管理员的权限。
通过调用 removeSuperTeamManagers
方法来撤销超大群管理员。
群主撤销管理员后,所有群成员会收到超大群通知消息,其类型为 updateSuperTeamManagers
。
接口原型:
jsremoveSuperTeamManagers(options: RemmoveSuperTeamManagersOptions): Promise<void>
示例代码:
jsawait nim.superTeam.removeSuperTeamManagers({
accounts: ['cs1', 'cs2'],
teamId: '{{TARGET_SUPERTEAM_ID}}',
});
修改超大群成员信息
修改超大群成员的群昵称
只有超大群群主和管理员才有修改超大群成员群昵称的权限。其中,群主可以修改超大群中所有人的群昵称,管理员只能修改普通成员的群昵称。
通过调用 updateMemberNick
方法来修改超大群成员的群昵称。
修改昵称后,所有其他在线的群成员会收到超大群通知消息 updateSuperTeamMember
。
接口原型:
jsupdateMemberNick(options: UpdateMemberNickOptions): Promise<SuperTeamMember>
示例代码:
jsawait nim.superTeam.updateMemberNick({
account: 'cs1'
teamId: '{{TARGET_SUPERTEAM_ID}}',
nickInTeam: '张三',
});
修改自己在超大群中的信息
通过调用 updateMyMemberInfo
来修改自己在超大群中的信息。
目前支持修改的属性包括以下三种:
- nickInTeam: 自己在超大群中的群昵称。更新昵称后,所有其他在线的群成员会收到超大群通知消息
updateSuperTeamMember
。 - bitConfigMask: 超大群消息提醒策略,0 表示开启提醒; 1 表示关闭消息提醒; 2 表示只接收群主和管理员的消息的提醒。
- ext: 第三方扩展字段, 开发者可以自行扩展, 建议封装成 JSON 格式字符串。
接口原型:
jsupdateMyMemberInfo(options: UpdateMyMemberInfoOptions): Promise<SuperTeamMember>
示例代码:
jsawait nim.superTeam.updateMyMemberInfo({
teamId: '{{TARGET_SUPERTEAM_ID}}',
nickInTeam: '张三',
bitConfigMask: '2',
ext: '扩展字段, 建议封装成 JSON 格式字符串',
});
超大群禁言
超大群全员禁言
只有群主才有禁言全体成员或取消全员禁言的权限。
通过调用 muteSuperTeam
方法来禁言超大群全体成员或解除全体成员的禁言。
超大群全员禁言分为两种模式。
- 若超大群的禁言模式
muteType
为all
,那么调用该接口禁言的对象是包含群主和管理员的所有成员。 - 若超大群的禁言模式
muteType
为normal
,那么调用该接口禁言的对象是全体普通成员,不包括群主和管理员。
接口原型:
jsmuteSuperTeam(options: MuteSuperTeamOptions): Promise<void>
示例代码:
jsawait nim.superTeam.muteSuperTeam({
mute: 'true',//true表示禁言,false表示解除禁言
teamId: '{{TARGET_SUPERTEAM_ID}}',
});
禁言指定成员
只有群主和管理员才能禁言指定成员。其中群主可以禁言任何成员,管理员只能禁言普通成员。
通过调用 muteSuperTeamMembers
来禁言指定超大群成员或解除群成员的禁言。
更新群成员禁言状态后, 所有群成员会收到超大群通知消息,其类型为 updateSuperTeamMembersMute
。
接口原型:
jsmuteSuperTeamMembers(options: MuteSuperTeamMembersOptions): Promise<void>
示例代码:
jsawait nim.superTeam.muteSuperTeamMembers({
accounts: ['cs1', 'cs2'],
mute: 'true',//true表示禁言,false表示解除禁言
teamId: '{{TARGET_SUPERTEAM_ID}}',
});
查询超大群成员
查询超大群成员信息
- 通过调用
getSuperTeamMembers
方法来获取超大群成员信息。
该操作有可能只是从本地数据库读取缓存数据,也有可能会从服务器同步新的数据, 因此耗时可能会比较长。
接口原型:
jsgetSuperTeamMembers(options: GetSuperTeamMembersOptions): Promise<SuperTeamMember[]>
其中,GetSuperTeamMembersOptions
是获取超大群成员的入参。
GetSuperTeamMembersOptions
的 reverse
字段用来决定排序规则,默认为 false
,表示获取 joinTime
之后进入超大群的群成员,按时间升序排列;true
表示获取 joinTime
之前进入超大群的群成员,按时间降序排列。
- SDK 通过根据账号查询超大群成员,参见
getSuperTeamMembersByAccounts
。
接口原型:
jsgetSuperTeamMembersByAccounts(options: GetSuperTeamMembersByAccountsOptions): Promise<SuperTeamMember[]>
示例代码:
jsawait nim.superTeam.getSuperTeamMembers({
joinTime: '1506652312445',//成员加入时间,获取在该时间之后/之前进群的群成员
limit: '500',//本次获取的群成员数量。默认 100,最多 1000
reverse: 'false',
teamId: '{{TARGET_SUPERTEAM_ID}}',
});
await nim.superTeam.getSuperTeamMembersByAccounts({
accounts: ['cs1', 'cs2'],//成员账号 id,最大 20 个
teamId: '{{TARGET_SUPERTEAM_ID}}',
});
查询被禁言的群成员
SDK 通过调用 queryMuteMembers
方法来查询被禁言的群成员。
接口原型:
jsqueryMuteMembers(options: QueryMuteMembersOptions): Promise<SuperTeamMember[]>
其中,QueryMuteMembersOptions
是查询被禁言的群成员的入参。
QueryMuteMembersOptions
的 reverse
字段默认为 false
,表示获取 joinTime
之后进入超大群的群成员;true
表示获取 joinTime
之前进入超大群的群成员。
示例代码:
jsawait nim.superTeam.queryMuteMembers({
joinTime: '1506652312445',//筛选条件:加入的时间,获取在该时间之后/之前进群的群成员
limit: '50',//分页大小。一页默认 100
reverse: 'false',
teamId: '{{TARGET_SUPERTEAM_ID}}',
});
API 参考
API |
说明 |
---|---|
addSuperTeamManagers |
添加超大群管理员 |
updateMyMemberInfo |
修改自己在超大群中的信息 |
getSuperTeamMembers |
查询超大群成员 |
getSuperTeamMembersByAccounts |
根据账号查询超大群成员 |
updateMemberNick |
修改超大群成员的昵称 |
removeSuperTeamManagers |
移除超大群管理员 |
muteSuperTeam |
禁言超大群全体成员 |
muteSuperTeamMembers |
修改超大群成员的禁言状态 |
queryMuteMembers |
查询被禁言的超大群成员 |