圈组服务器成员管理
更新时间: 2022/12/21 15:55:40
创建 Server 后,可以选择邀请他人成为 Server 的成员或者申请成为某个 Server 的成员,也可以通过邀请码的形式加入某个 Server。
SDK 中用于表示 Server 成员的结构为 MemberInfo
,MemberInfo
参数说明如下:
字段名 | 类型 | 说明 |
---|---|---|
serverId | string | 服务器ID |
accid | string | 用户accid |
nick | string | 昵称 |
avatar | string | 头像 |
ext | string | 自定义扩展 |
type | 0 | 1 | 类型:0-普通成员,1-所有者 |
joinTime | number | 加入时间 |
inviter | string | 邀请人 |
validFlag | 0|1 | 有效标志:0-无效,1-有效 |
createTime | number | 创建时间的时间戳 |
updateTime | number | 更新时间的时间戳 |
成员邀请
- 拥有申请邀请管理权限(
manageInviteApply
,具体权限类型请参见QChatRoleAuth
)的人可以向他人发起邀请,邀请别人加入圈组服务器。收到邀请通知的人可以接受或者拒绝邀请。 - 拥有申请邀请管理权限的人也可以提前生成邀请码,其他用户可以直接使用邀请码加入圈组服务器。
邀请加入圈组服务器
接口
通过 inviteServerMembers
方法邀请他人加入圈组服务器,可以一个accid列表向多人发起加入某个圈组服务器的邀请。
type InviteServerMembersOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 用户账号列表
*/
accids: string[]
/**
* 附言(最长5000)
*/
ps: string
/**
* 本邀请记录的额外参数
*/
params?: {
/**
* 有效时长,单位: 毫秒
*/
ttl: number
}
}
type InviteServerMembersResult = {
/**
* 因为用户服务器数量超限导致失败的accid列表
*/
failByOverAccids: string[]
/**
* 因为用户被服务器封禁导致失败的accid列表
*/
failByBanAccids: string[]
/**
* 邀请记录的信息
*/
recordInfo: {
/**
* 邀请记录唯一标识
*/
requestId: string
/**
* 时间戳,表示邀请过期的截止日期
*/
expireTime: number
}
}
/**
* 邀请用户进入服务器
*/
inviteServerMembers(options: InviteServerMembersOptions): Promise<InviteServerMembersResult>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.inviteServerMembers({
"serverId": '123456',
"accids":["123"]
})
接受加入圈组服务器
通过 acceptServerInvite
方法接收邀请,加入圈组服务器。
邀请方发送邀请请求成功后,被邀请方会收到serverMemberInvite(邀请服务器成员)系统通知。 收到该系统通知后,被邀请方可以调用以下接口接受加入Server邀请。
接口
type AcceptServerInviteOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 用户账号
*/
accid: string
/**
* 申请/邀请记录的信息
*/
recordInfo: {
/**
* 申请/邀请记录的唯一标识
*/
requestId: string
}
}
/**
* 接受邀请
*/
acceptServerInvite(options: AcceptServerInviteOptions): Promise<void>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.acceptServerInvite({
"serverId": '123456',
"accid":"123",
"recordInfo":{
"requestId":'123456'
}
})
拒绝加入圈组服务器
通过 rejectServerApply
方法拒绝加入服务器的邀请。
邀请方发送邀请请求成功后,被邀请方会收到serverMemberInvite(邀请服务器成员)系统通知。 收到该系统通知后,被邀请方可以调用以下接口拒绝加入Server邀请。 调用成功后,邀请方会收到serverMemberInviteReject系统通知。
接口
type RejectServerInviteOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 用户账号
*/
accid: string
/**
* 附言(最长5000)
*/
ps: string
/**
* 申请/邀请记录的信息
*/
recordInfo: {
/**
* 申请/邀请记录的唯一标识
*/
requestId: string
}
}
/**
* 拒绝邀请
*/
rejectInviteServer(options: RejectServerInviteOptions): Promise<void>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.rejectInviteServer({
"serverId": "123456",
"accid":"123",
"ps":"",
"recordInfo":{
"requestId":"123456"
}
})
生成邀请码
通过 generateInviteCode
方法生成加入圈组服务器的邀请码,其他用户可以根据邀请码加入服务器。
拥有申请邀请管理权限(manageInviteApply
,具体权限类型请参见QChatRoleAuth
)的人可以提前生成邀请码,其他用户可以直接使用提供的邀请码加入圈组服务器。
接口
type QChatServerGenerateInviteCodeOptions = {
/**
* 服务器 id
*/
serverId: string
/**
* 有效时长,单位: 毫秒
*/
ttl: number
}
type QChatServerInviteCode = {
/**
* 服务器 id
*/
serverId: string
/**
* 唯一标识
*/
requestId: string
/**
* 邀请码
*/
inviteCode: string
/**
* 时间戳,表示邀请过期的截止日期
*/
expireTime: number
}
/**
* 生成一个邀请码
*/
generateInviteCode(options: QChatServerGenerateInviteCodeOptions): Promise<QChatServerInviteCode>
示例代码
const qchat = new QChat(options);
const {serverId,requestId,inviteCode,expireTime} = await qchat.qchatServer.generateInviteCode({serverId:"123456",ttl:24 * 60 * 60 * 1000})
人员申请加入
用户可以主动申请加入指定的Server。
主动申请加入
通过 applyServerJoin
方法申请加入某圈组服务器。
接口
type ApplyServerJoinOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 附言(最长5000)
*/
ps: string
/**
* 本申请记录的额外参数
*/
params: {
/**
* 有效时长,单位: 毫秒
*/
ttl: number
}
}
type QChatServerApplyRecordInfo = {
/**
* 申请记录的唯一标识
*/
requestId: string
/**
* 时间戳,表示邀请过期的截止日期
*/
expireTime: number
}
/**
* 申请加入服务器
*/
applyServerJoin(options: ApplyServerJoinOptions): Promise<QChatServerApplyRecordInfo>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.applyServerJoin({
"serverId": "123456",
"ps":""
})
接受加入申请
有人申请加入某Server后,具有该Server管理权限的人会收到serverMemberApply的通知,收到该系统通知后,管理者可以调用 acceptServerApply
接受加入Server申请。
接口
type AcceptServerApplyOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 用户账号
*/
accid: string
/**
* 申请/邀请记录的信息
*/
recordInfo: {
/**
* 申请/邀请记录的唯一标识
*/
requestId: string
}
}
/**
* 同意加入服务器申请
*/
acceptServerApply(options: AcceptServerApplyOptions): Promise<void>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.acceptServerApply({
"serverId": "123456",
"accid":"123",
"recordInfo":{
"requestId":"123456"
}
})
拒绝加入申请
有人申请加入某Server后,具有该Server管理权限的人会收到serverMemberApply(申请加入服务器)的通知,收到该系统通知后,管理者可以调用 rejectServerApply
拒绝加入Server申请。
接口
type RejectServerApplyOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 用户账号
*/
accid: string
/**
* 附言(最长5000)
*/
ps: string
/**
* 申请/邀请记录的信息
*/
recordInfo: {
/**
* 申请/邀请记录的唯一标识
*/
requestId: string
}
}
/**
* 拒绝加入服务器申请
*/
rejectServerApply(options: RejectServerApplyOptions): Promise<void>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.rejectServerApply({
"serverId": "123456",
"accid":"123",
"ps":"",
"recordInfo":{
"requestId":"123456"
}
})
通过邀请码加入服务器
用户可以通过 joinByInviteCode
方法根据收到的邀请码加入圈组服务器。
接口
type QChatServerJoinByInviteCodeOptions = {
/**
* 服务器 id
*/
serverId: string
/**
* 邀请码
*/
inviteCode: string
/**
* 附言
*/
ps?: string
}
/**
* 根据邀请码加入服务器
*/
joinByInviteCode(options: QChatServerJoinByInviteCodeOptions): Promise<void>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.joinByInviteCode({
"serverId": "123456",
"inviteCode":"123456",
"ps":""
})
踢出圈组服务器成员
具有踢除他人的权限的人可以通过 kickServerMembers
方法将其他人踢出Server。
接口
type KickServerMembersOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 用户账号列表
*/
accids: string[]
}
/**
* 踢除服务器成员
*/
kickServerMembers(options: KickServerMembersOptions): Promise<void>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.kickServerMembers({
"serverId": "123456",
"accids":["123"]
})
主动离开圈组服务器
用户可以通过 kickServerMembers
方法主动离开圈组服务器。
接口
type KickServerMembersOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 用户账号列表
*/
accids: string[]
}
/**
* 踢除服务器成员
*/
kickServerMembers(options: KickServerMembersOptions): Promise<void>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.kickServerMembers({
"serverId": "123456",
"accids":["123"]
})
修改成员信息
可修改自己或者他人的圈组服务器成员信息。前提是您需要拥有相应的权限,权限相关详情请参见身份组系统
修改本人成员信息
通过 updateMyMemberInfo
方法修改本人在圈组服务器中的信息。
接口
UpdateMyMemberInfoOptions = {
/**
* 服务器ID
*/
serverId: string;
/**
* 用户accid
*/
accid: string;
/**
* 昵称
*/
nick: string;
/**
* 头像
*/
avatar: string;
/**
* 自定义扩展
*/
ext: string;
/**
* 反垃圾相关字段
*/
antispamTag?: AntispamTag
}
/**
* 反垃圾相关字段
*/
export type AntispamTag = {
/**
* 用户配置的对某些资料内容另外的反垃圾的业务ID, Json结构, {"textbid":"","picbid":""}
*/
antiSpamBusinessId: {
textbid: string
picbid: string
}
}
/**
* 修改自己服务器成员信息
*/
updateMyMemberInfo(options: UpdateMyMemberInfoOptions): Promise<MemberInfo>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.updateMyMemberInfo({
"serverId": "123456",
...
})
修改自己服务器成员信息参数中如果带上 antiSpamBusinessId
则会对参数信息进行安全通检查。antiSpamBusinessId
代表安全通自定义业务 ID;如需新增安全通自定义业务,请联系商务经理进行相关配置,然后前往云信控制台的安全通配置界面获取该业务 ID。
修改他人成员信息
通过 updateServerMemberInfo
方法修改他人在圈组服务器中的信息。
只有拥有修改他人在该server的成员信息权限时,才能进行修改。
接口
type UpdateServerMemberInfoOptions = {
/**
* 服务器ID
*/
serverId: string;
/**
* 用户accid
*/
accid: string;
/**
* 昵称
*/
nick: string;
/**
* 头像
*/
avatar: string;
/**
* 反垃圾相关字段
*/
antispamTag?: AntispamTag
}
/**
* 反垃圾相关字段
*/
export type AntispamTag = {
/**
* 用户配置的对某些资料内容另外的反垃圾的业务ID, Json结构, {"textbid":"","picbid":""}
*/
antiSpamBusinessId: {
textbid: string
picbid: string
}
}
/**
* 修改他人服务器成员信息
*/
updateServerMemberInfo(options: UpdateServerMemberInfoOptions): Promise<MemberInfo>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.updateServerMemberInfo({
"serverId": "123456",
...
})
修改他人服务器成员信息参数中如果带上 antiSpamBusinessId
则会对参数信息进行安全通检查。 antiSpamBusinessId
代表安全通自定义业务 ID;如需新增安全通自定义业务,请联系商务经理进行相关配置,然后前往云信控制台的安全通配置界面获取该业务 ID。
查询成员信息
SDK提供两种方式查询Server成员信息,分别是按ServerId+Accid查询和按时间分页查询Server成员信息。
按ServerId+Accid查询Server成员信息
通过 getServerMembers
方法按ServerId+Accid查询Server成员信息。
接口
export type GetServerMembersOptions = {
accids: { accid: string, serverId: string }[]
}
/**
* 查询服务器成员列表
*/
getServerMembers(options: GetServerMembersOptions): Promise<MemberInfo[]>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.getServerMembers({
"accids": [
{
"accid": "",
"serverId": ""
}
]
})
按时间分页查询成员信息
可以通过 getServerMembersByPage
方法按照时间戳和查询数量分页查询指定Server的成员信息。
接口
export type GetServerMembersByPageOptions = {
/**
* 服务器ID
*/
serverId: string
/**
* 时间戳 传0取当前时间
*/
timetag: number
/**
* 数量
*/
limit: number
}
export type GetServerMembersByPageResult = {
/**
* 分页便捷选项
*/
listQueryTag: {
/**
* 是否还有下一页
*/
hasMore: boolean;
/**
* 下一次翻页时的起始时间戳
*/
nextTimetag: number;
}
datas: MemberInfo[]
}
/**
* 查询服务器成员列表(分页)
*/
getServerMembersByPage(options: GetServerMembersByPageOptions): Promise<GetServerMembersByPageResult>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.getServerMembersByPage({
"serverId": "934978",
"timetag": 0,
"limit": 10
})
查询申请/邀请的历史记录
查询服务器下的申请/邀请记录
通过 getInviteApplyRecordOfServer
方法查询服务器下的申请/邀请记录。
查询服务器下的申请/邀请记录,需要拥有申请邀请历史查看权限(manageInviteApplyHistory
),具体权限类型请参见QChatRoleAuth
。
接口
type QChatServerGetInviteApplyRecordOfServerOptions = {
/**
* 服务器 id
*/
serverId: string
/**
* 开始时间戳
*/
fromTime: number
/**
* 结束时间戳
*/
toTime: number
/**
* 排列顺序。默认为 false
*
* 为 true 则代表按时间戳升序查询,从 fromTime 开始查询到 toTime 之间的 limit 条记录
*
* 为 false 则代表按时间戳降序查询,从 toTime 开始查询到 fromTime 之间的 limit 条记录
*/
reverse?: boolean
/**
* 分页大小
*/
limit?: number
/**
* 游标 id,id 的来源参照 {@link QChatServerInviteApplyRecord.recordId | recordId}
*
* 注:若有多条记录有相同的时间,需要借助这个参数才能精准的分页。
*/
cursor: string
}
type QChatServerInviteApplyRecord = {
/**
* 这条数据的唯一标识,仅用于分页查询使用。
*/
recordId: string
/**
* account ID,操作者/申请者的账号 id
*/
accid: string
/**
* 邀请/申请的类型:
*
* 1 表示申请
*
* 2 表示邀请
*
* 3 表示邀请码生成,仅查询服务器下的记录能查到这种类型, 接口为 {@link QChatServerServiceInterface.getInviteAndApplyRecord | getInviteAndApplyRecord}
*
* 4 表示通过邀请码加入
*/
type: number
/**
* 服务器 id
*/
serverId: string
/**
* 状态。0表示初始状态
*
* 1 表示同意
*
* 2 表示拒绝
*
* 3 表示通过其他 申请/邀请 同意了,
*
* 4 表示通过其他 申请/邀请 拒绝了
*
* 5 表示邀请/申请时自动加入
*
* 6 表示过期
*/
status: number
/**
* 申请/邀请的唯一标识
*/
requestId: string
/**
* 创建时间
*/
createTime: number
/**
* 修改时间
*/
updateTime: number
/**
* 过期时间
*/
expireTime: number
/**
* 内容数据,对应上文 type 的类型有以下四种定义
*/
data: QChatServerInviteAndApplyDataWithType1 &
QChatServerInviteAndApplyDataWithType2 &
QChatServerInviteAndApplyDataWithType3 &
QChatServerInviteAndApplyDataWithType4
}
/**
* 查询某服务器下的申请和邀请的历史记录
*/
getInviteApplyRecordOfServer(options: QChatServerGetInviteApplyRecordOfServerOptions): Promise<QChatServerInviteApplyRecord[]>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.getInviteApplyRecordOfServer({
"serverId": "123456",
"fromTime": 0,
"toTime": 100000
})
查询本人的申请/邀请记录
通过 getInviteApplyRecordOfSelf
方法查询本人的申请/邀请记录。
查询本人的申请/邀请记录,需要拥有申请邀请历史查看权限(manageInviteApplyHistory
),具体权限类型请参见QChatRoleAuth
。
接口
type QChatServerGetInviteApplyRecordOfSelfOptions = {
/**
* 开始时间戳
*/
fromTime: number
/**
* 结束时间戳
*/
toTime: number
/**
* 排列顺序。默认为 false
*
* 为 true 则代表按时间戳升序查询,从 fromTime 开始查询到 toTime 之间的 limit 条记录
*
* 为 false 则代表按时间戳降序查询,从 toTime 开始查询到 fromTime 之间的 limit 条记录
*/
reverse?: boolean
/**
* 分页大小
*/
limit?: number
/**
* 游标 id,id 的来源参照 {@link QChatServerInviteApplyRecord.recordId | recordId}
*
* 注:若有多条记录有相同的时间,需要借助这个参数才能精准的分页。
*/
cursor?: string
}
type QChatServerInviteApplyRecord = {
/**
* 这条数据的唯一标识,仅用于分页查询使用。
*/
recordId: string
/**
* account ID,操作者/申请者的账号 id
*/
accid: string
/**
* 邀请/申请的类型:
*
* 1 表示申请
*
* 2 表示邀请
*
* 3 表示邀请码生成,仅查询服务器下的记录能查到这种类型, 接口为 {@link QChatServerServiceInterface.getInviteAndApplyRecord | getInviteAndApplyRecord}
*
* 4 表示通过邀请码加入
*/
type: number
/**
* 服务器 id
*/
serverId: string
/**
* 状态。0表示初始状态
*
* 1 表示同意
*
* 2 表示拒绝
*
* 3 表示通过其他 申请/邀请 同意了,
*
* 4 表示通过其他 申请/邀请 拒绝了
*
* 5 表示邀请/申请时自动加入
*
* 6 表示过期
*/
status: number
/**
* 申请/邀请的唯一标识
*/
requestId: string
/**
* 创建时间
*/
createTime: number
/**
* 修改时间
*/
updateTime: number
/**
* 过期时间
*/
expireTime: number
/**
* 内容数据,对应上文 type 的类型有以下四种定义
*/
data: QChatServerInviteAndApplyDataWithType1 &
QChatServerInviteAndApplyDataWithType2 &
QChatServerInviteAndApplyDataWithType3 &
QChatServerInviteAndApplyDataWithType4
}
/**
* 查询我的申请和邀请的历史记录
*/
getInviteApplyRecordOfSelf(options: QChatServerGetInviteApplyRecordOfSelfOptions): Promise<QChatServerInviteApplyRecord[]>
示例代码
const qchat = new QChat(options);
await qchat.qchatServer.getInviteApplyRecordOfSelf({
"fromTime": 0,
"toTime": 100000
})
封禁服务器成员
调用 banServerMember
方法可封禁服务器能的其他成员。
API 原型
export type BanServerMemberOptions = {
/**
* 目标用户账号
*/
accid: string
/**
* (可选)自定义扩展
*/
ext: string
/**
* 服务器 ID
*/
serverId: string
}
banServerMember(options: BanServerMemberOptions): Promise<void>
调用示例代码
const qchat = new QChat (options);
await qchat.qchatServer.banServerMember({
"serverId": "2049548",
"accid": "ctt1",
"ext": ""
})
如您并非服务器所有者,请确保您登录的账号拥有 QChatRoleAuth
下的banServerMember
权限。
解封服务器成员
调用 unbanServerMember
方法可解封服务器成员。
接口原型
export type UnbanServerMemberOptions = {
/**
* 目标用户账号
*/
accid: string
/**
* (可选)自定义扩展
*/
ext: string
/**
* 服务器 ID
*/
serverId: string
}
unbanServerMember(options: UnbanServerMemberOptions): Promise<void>
调用示例
const qchat = new QChat (options);
await qchat.qchatServer.unbanServerMember({
"serverId": "2049548",
"accid": "ctt1",
"ext": ""
})
如您并非服务器所有者,请确保您登录的账号拥有 QChatRoleAuth
下的banServerMember
权限。