tencent-im/group/types.go
2022-09-27 11:31:23 +08:00

509 lines
26 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @Author: Echo
* @Author:1711788888@qq.com
* @Date: 2021/5/29 17:43
* @Desc: 群组管理
*/
package group
import "git.echol.cn/loser/tencent-im/internal/types"
type (
// 拉取App中的所有群组请求
fetchGroupIdsReq struct {
Limit int `json:"Limit,omitempty"` // (选填)本次获取的群组 ID 数量的上限,不得超过 10000。如果不填默认为最大值 10000
Next int `json:"Next,omitempty"` // 选填群太多时分页拉取标志第一次填0以后填上一次返回的值返回的 Next 为0代表拉完了
Type string `json:"Type,omitempty"` // (选填)如果仅需要返回特定群组形态的群组,可以通过 Type 进行过滤,但此时返回的 TotalCount 的含义就变成了 App 中属于该群组形态的群组总数。不填为获取所有类型的群组。
}
// 拉取App中的所有群组响应
fetchGroupIdsResp struct {
types.ActionBaseResp
Next int `json:"Next"` // 分页拉取的标志
TotalCount int `json:"TotalCount"` // App 当前的群组总数。
GroupIdList []groupIdItem `json:"GroupIdList"` // 获取到的群组 ID 的集合
}
// FetchGroupIdsRet 拉取App中的所有群组ID返回
FetchGroupIdsRet struct {
Total int // App 当前的群组总数
Next int // 分页拉取的标志
HasMore bool // 是否还有更多数据
List []string // 群组ID列表
}
// FetchGroupsRet 拉取APP中的所有群返回
FetchGroupsRet struct {
Total int // App 当前的群组总数
Next int // 分页拉取的标志
HasMore bool // 是否还有更多数据
List []*Group // 群组列表
}
// PullGroupsArg 续拉取群信息(参数)
PullGroupsArg struct {
Limit int // 分页限制
Type Type // 群组类型
Filter *Filter // 过滤器
}
// 群ID
groupIdItem struct {
GroupId string `json:"GroupId"` // 群ID
}
// 自定义数据
customDataItem struct {
Key string `json:"Key"`
Value interface{} `json:"Value"`
}
// 创建群(请求)
createGroupReq struct {
OwnerUserId string `json:"Owner_Account,omitempty"` // (选填)群主 ID需是 已导入 的账号)。填写后自动添加到群成员中;如果不填,群没有群主
GroupId string `json:"GroupId,omitempty"` // (选填)为了使得群组 ID 更加简单,便于记忆传播,腾讯云支持 App 在通过 REST API 创建群组时 自定义群组 ID
Type Type `json:"Type"` // (必填)群组形态,包括 Public陌生人社交群Private即 Work好友工作群ChatRoom即 Meeting会议群AVChatRoom直播群
Name string `json:"Name"` // 必填群名称最长30字节使用 UTF-8 编码1个汉字占3个字节
Introduction string `json:"Introduction,omitempty"` // 选填群简介最长240字节使用 UTF-8 编码1个汉字占3个字节
Notification string `json:"Notification,omitempty"` // 选填群公告最长300字节使用 UTF-8 编码1个汉字占3个字节
FaceUrl string `json:"FaceUrl,omitempty"` // (选填)群头像 URL最长100字节
MaxMemberNum uint `json:"MaxMemberCount,omitempty"` // 选填最大群成员数量缺省时的默认值付费套餐包上限例如体验版是20如果升级套餐包需按照修改群基础资料修改这个字段
ApplyJoinOption string `json:"ApplyJoinOption,omitempty"` // (选填)申请加群处理方式。包含 FreeAccess自由加入NeedPermission需要验证DisableApply禁止加群不填默认为 NeedPermission需要验证 仅当创建支持申请加群的 群组 时,该字段有效
AppDefinedData []*customDataItem `json:"AppDefinedData,omitempty"` // (选填)群组维度的自定义字段,默认情况是没有的,可以通过 即时通信 IM 控制台 进行配置,详情请参阅 自定义字段
MemberList []*memberItem `json:"MemberList,omitempty"` // 选填初始群成员列表最多100个成员信息字段详情请参阅 群成员资料
}
// 创建群(响应)
createGroupResp struct {
types.ActionBaseResp
GroupId string `json:"GroupId"` // 群ID
}
// 群成员信息
memberItem struct {
UserId string `json:"Member_Account"` // 群成员ID
Role string `json:"Role,omitempty"` // 群内身份
JoinTime int64 `json:"JoinTime,omitempty"` // 入群时间
MsgSeq int `json:"MsgSeq,omitempty"` // 该成员当前已读消息Seq
MsgFlag string `json:"MsgFlag,omitempty"` // 消息接收选项
LastSendMsgTime int64 `json:"LastSendMsgTime,omitempty"` // 最后发送消息的时间
NameCard string `json:"NameCard,omitempty"` // 群名片
ShutUpUntil int64 `json:"ShutUpUntil"` // 禁言截至时间
UnreadMsgNum int `json:"UnreadMsgNum,omitempty"` // 待导入群成员的未读消息计数
AppMemberDefinedData []*customDataItem `json:"AppMemberDefinedData,omitempty"` // 群成员自定义数据
}
// 解散群(请求)
destroyGroupReq struct {
GroupId string `json:"GroupId"` // (必填)操作的群 ID
}
// 响应过滤器
responseFilter struct {
GroupBaseInfoFilter []string `json:"GroupBaseInfoFilter,omitempty"`
MemberInfoFilter []string `json:"MemberInfoFilter,omitempty"`
GroupCustomDataFilter []string `json:"AppDefinedDataFilter_Group,omitempty"`
MemberCustomDataFilter []string `json:"AppDefinedDataFilter_GroupMember,omitempty"`
SelfInfoFilter []string `json:"SelfInfoFilter,omitempty"`
}
// 获取群详细资料(请求)
getGroupsReq struct {
GroupIds []string `json:"GroupIdList"`
ResponseFilter *responseFilter `json:"ResponseFilter,omitempty"`
}
// 获取群详细资料(响应)
getGroupsResp struct {
types.ActionBaseResp
GroupInfos []*groupInfo `json:"GroupInfo"`
}
groupInfo struct {
GroupId string `json:"GroupId"`
ErrorCode int `json:"ErrorCode"`
ErrorInfo string `json:"ErrorInfo"`
Type Type `json:"Type"`
Name string `json:"Name"`
AppId int `json:"Appid"`
Introduction string `json:"Introduction"`
Notification string `json:"Notification"`
FaceUrl string `json:"FaceUrl"`
OwnerUserId string `json:"Owner_Account"`
CreateTime int64 `json:"CreateTime"`
LastInfoTime int64 `json:"LastInfoTime"`
LastMsgTime int64 `json:"LastMsgTime"`
NextMsgSeq int `json:"NextMsgSeq"`
MemberNum uint `json:"MemberNum"`
MaxMemberNum uint `json:"MaxMemberNum"`
ApplyJoinOption string `json:"ApplyJoinOption"`
ShutUpAllMember string `json:"ShutUpAllMember"`
AppDefinedData []customDataItem `json:"AppDefinedData"`
MemberList []memberItem `json:"MemberList"`
MemberInfo *memberItem `json:"SelfInfo,omitempty"` // 成员在群中的信息(仅在获取用户所加入的群组接口返回)
}
// 获取群成员详细资料(请求)
fetchMembersReq struct {
GroupId string `json:"GroupId"` // (必填)需要拉取成员信息的群组的 ID
Limit int `json:"Limit"` // 选填一次最多获取多少个成员的资料不得超过6000。如果不填则获取群内全部成员的信息
Offset int `json:"Offset"` // 选填从第几个成员开始获取如果不填则默认为0表示从第一个成员开始获取
MemberInfoFilter []string `json:"MemberInfoFilter"` // (选填)需要获取哪些信息, 如果没有该字段则为群成员全部资料,成员信息字段详情请参阅 群成员资料
MemberRoleFilter []string `json:"MemberRoleFilter"` // 选填拉取指定身份的群成员资料。如没有填写该字段默认为所有身份成员资料成员身份可以为“Owner”“Admin”“Member”
MemberCustomDataFilter []string `json:"AppDefinedDataFilter_GroupMember"` // (选填)默认情况是没有的。该字段用来群成员维度的自定义字段过滤器,指定需要获取的群成员维度的自定义字段,群成员维度的自定义字段详情请参阅 自定义字段
}
// 获取群成员详细资料(响应)
fetchMembersResp struct {
types.ActionBaseResp
MemberNum int `json:"MemberNum"` // 本群组的群成员总数
MemberList []memberItem `json:"MemberList"` // 获取到的群成员列表,其中包含了全部或者指定的群成员信息,成员信息字段详情请参阅 群成员资料
}
// FetchMembersRet 拉取群成员结果
FetchMembersRet struct {
Total int // 成员数量
HasMore bool // 是否还有更多数据
List []*Member // 成员列表
}
// PullMembersArg 续拉取群成员(参数)
PullMembersArg struct {
GroupId string // (必填)需要拉取成员信息的群组的 ID
Limit int // 选填一次最多获取多少个成员的资料不得超过6000。如果不填则获取群内全部成员的信息
Filter *Filter // (选填)返回过滤器
}
// 修改群基础资料(请求)
updateGroupReq struct {
GroupId string `json:"GroupId"`
Name string `json:"Name,omitempty"`
Introduction string `json:"Introduction,omitempty"`
Notification string `json:"Notification,omitempty"`
FaceUrl string `json:"FaceUrl,omitempty"`
MaxMemberNum uint `json:"MaxMemberNum,omitempty"`
ApplyJoinOption string `json:"ApplyJoinOption,omitempty"`
ShutUpAllMember string `json:"ShutUpAllMember,omitempty"`
AppDefinedData []customDataItem `json:"AppDefinedData,omitempty"`
}
// 添加群成员(请求)
addMembersReq struct {
GroupId string `json:"GroupId"`
Silence int `json:"Silence,omitempty"`
MemberList []addMemberItem `json:"MemberList"`
}
// 添加群成员(响应)
addMembersResp struct {
types.ActionBaseResp
MemberList []AddMembersResult `json:"MemberList"`
}
addMemberItem struct {
UserId string `json:"Member_Account"`
}
// AddMembersResult 添加群成员结果
AddMembersResult struct {
UserId string `json:"Member_Account"`
Result int `json:"Result"`
}
// 删除群成员(请求)
deleteMembersReq struct {
GroupId string `json:"GroupId"` // 必填操作的群ID
Silence int `json:"Silence"` // (选填)是否静默删人
Reason string `json:"Reason"` // (选填)踢出用户原因
UserIds []string `json:"MemberToDel_Account"` // (必填)待删除的群成员
}
// 修改群成员资料(请求)
updateMemberReq struct {
GroupId string `json:"GroupId"` // 必填群ID
UserId string `json:"Member_Account"` // 必填群成员ID
Role string `json:"Role,omitempty"` // (选填)群内身份
NameCard string `json:"NameCard,omitempty"` // (选填)群名片
MsgFlag string `json:"MsgFlag,omitempty"` // (选填)消息接收选项
ShutUpUntil *int64 `json:"ShutUpUntil,omitempty"` // (选填)禁言截至时间
AppMemberDefinedData []customDataItem `json:"AppMemberDefinedData,omitempty"` // (选填)群成员自定义数据
}
// FetchMemberGroupsArg 拉取用户所加入的群组(参数)
FetchMemberGroupsArg struct {
UserId string // 必填用户ID
Limit int // (选填)单次拉取的群组数量,如果不填代表所有群组
Offset int // (选填)从第多少个群组开始拉取
Type Type // (选填)拉取哪种群组类型
Filter *Filter // (选填)过滤器
IsWithNoActiveGroups bool // (选填)是否获取用户已加入但未激活的 Private即新版本中 Work好友工作群) 群信息
IsWithLiveRoomGroups bool // (选填)是否获取用户加入的 AVChatRoom(直播群)
}
// FetchMemberGroupsRet 拉取用户所加入的群组(返回)
FetchMemberGroupsRet struct {
Total int // 群组总数
HasMore bool // 是否还有更多数据
List []*Group // 列表
}
// PullMemberGroupsArg 续拉取用户所加入的群组(参数)
PullMemberGroupsArg struct {
UserId string // 必填用户ID
Limit int // (选填)单次拉取的群组数量,如果不填代表所有群组
Type Type // (选填)拉取哪种群组类型
Filter *Filter // (选填)过滤器
IsWithNoActiveGroups bool // (选填)是否获取用户已加入但未激活的 Private即新版本中 Work好友工作群) 群信息
IsWithLiveRoomGroups bool // (选填)是否获取用户加入的 AVChatRoom(直播群)
}
// 拉取用户所加入的群组(请求)
fetchMemberGroupsReq struct {
UserId string `json:"Member_Account"` // 必填用户ID
Limit int `json:"Limit,omitempty"` // (选填)单次拉取的群组数量,如果不填代表所有群组
Offset int `json:"Offset,omitempty"` // (选填)从第多少个群组开始拉取
Type Type `json:"Type,omitempty"` // (选填)拉取哪种群组类型
WithHugeGroups int `json:"WithHugeGroups,omitempty"`
WithNoActiveGroups int `json:"WithNoActiveGroups,omitempty"`
ResponseFilter *responseFilter `json:"ResponseFilter,omitempty"` // (选填)响应过滤
}
// 拉取用户所加入的群组(响应)
fetchMemberGroupsResp struct {
types.ActionBaseResp
TotalCount int `json:"TotalCount"`
GroupList []groupInfo `json:"GroupIdList"`
}
// 获取
getRolesInGroupReq struct {
GroupId string `json:"GroupId"`
UserIds []string `json:"User_Account"`
}
getRolesInGroupResp struct {
types.ActionBaseResp
MemberRoleList []memberRole `json:"UserIdList"`
}
memberRole struct {
UserId string `json:"Member_Account"`
Role string `json:"Role"`
}
// 批量禁言(请求)
forbidSendMessageReq struct {
GroupId string `json:"GroupId"` // (必填)需要查询的群组 ID
UserIds []string `json:"Members_Account"` // 必填需要禁言的用户帐号最多支持500个帐号
ShutUpTime int64 `json:"ShutUpTime"` // 必填需禁言时间单位为秒为0时表示取消禁言4294967295为永久禁言。
}
// 获取被禁言群成员列表(请求)
getShuttedUpMembersReq struct {
GroupId string `json:"GroupId"` // (必填)需要获取被禁言成员列表的群组 ID
}
// 获取被禁言群成员列表(响应)
getShuttedUpMembersResp struct {
types.ActionBaseResp
ShuttedUpList []shuttedUp `json:"ShuttedUinList"`
}
// 被禁言信息
shuttedUp struct {
UserId string `json:"Member_Account"` // 用户ID
ShuttedUntil int64 `json:"ShuttedUntil"` // 禁言到的时间(使用 UTC 时间,即世界协调时间)
}
// 在群组中发送普通消息(请求)
sendMessageReq struct {
GroupId string `json:"GroupId"` // (必填)向哪个群组发送消息
Random uint32 `json:"Random"` // 必填无符号32位整数
MsgPriority string `json:"MsgPriority,omitempty"` // (选填)消息的优先级
FromUserId string `json:"From_Account,omitempty"` // (选填)消息来源帐号
MsgBody []*types.MsgBody `json:"MsgBody"` // (必填)消息体
OnlineOnlyFlag int `json:"MsgOnlineOnlyFlag,omitempty"` // 选填1表示消息仅发送在线成员默认0表示发送所有成员AVChatRoom(直播群)不支持该参数
SendMsgControl []string `json:"SendMsgControl,omitempty"` // 选填消息发送权限NoLastMsg 只对单条消息有效表示不更新最近联系人会话NoUnread 不计未读,只对单条消息有效。(如果该消息 MsgOnlineOnlyFlag 设置为1则不允许使用该字段。
ForbidCallbackControl []string `json:"ForbidCallbackControl,omitempty"` // (选填)消息回调禁止开关,只对单条消息有效
OfflinePushInfo *types.OfflinePushInfo `json:"OfflinePushInfo,omitempty"` // (选填)离线推送信息配置
CloudCustomData string `json:"CloudCustomData,omitempty"` // (选填)消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
GroupAtInfo []atInfo `json:"GroupAtInfo,omitempty"` // (选填)@某个用户或者所有人
}
// 在群组中发送普通消息(响应)
sendMessageResp struct {
types.ActionBaseResp
MsgTime int `json:"MsgTime"`
MsgSeq int `json:"MsgSeq"`
}
// SendMessageRet 发送消息结果
SendMessageRet struct {
MsgSeq int // 消息唯一标识用于撤回。长度不超过50个字符
MsgTime int // 消息时间戳UNIX 时间戳
}
atInfo struct {
GroupAtAllFlag int `json:"GroupAtAllFlag"`
GroupAtUserId string `json:"GroupAt_Account,omitempty"`
}
// 在群组中发送系统通知(请求)
sendNotificationReq struct {
GroupId string `json:"GroupId"` // (必填)向哪个群组发送系统通知
Content string `json:"Content"` // (必填)系统通知的内容
UserIds []string `json:"ToMembers_Account,omitempty"` // (选填)接收者群成员列表,请填写接收者 UserID不填或为空表示全员下发
}
// 转让群主(请求)
changeGroupOwnerReq struct {
GroupId string `json:"GroupId"`
OwnerUserId string `json:"NewOwner_Account"`
}
msgSeqItem struct {
MsgSeq int `json:"MsgSeq"` // 请求撤回的消息seq
}
// 撤销消息(请求)
revokeMessagesReq struct {
GroupId string `json:"GroupId"` // 必填操作的群ID
MsgSeqList []msgSeqItem `json:"MsgSeqList"` // (必填)被撤回的消息 seq 列表
}
// 撤销消息(响应)
revokeMessagesResp struct {
types.ActionBaseResp
Results []revokeMessageResult `json:"Results"` // 撤销结果列表
}
// 撤销消息结果
revokeMessageResult struct {
MsgSeq int `json:"MsgSeq"` // 单个被撤回消息的 seq
RetCode int `json:"RetCode"` // 单个消息的被撤回结果0表示成功其它表示失败
}
// 导入群基础资料(请求)
importGroupReq struct {
OwnerUserId string `json:"Owner_Account,omitempty"` // (选填)群主 ID需是 已导入 的账号)。填写后自动添加到群成员中;如果不填,群没有群主
GroupId string `json:"GroupId,omitempty"` // (选填)为了使得群组 ID 更加简单,便于记忆传播,腾讯云支持 App 在通过 REST API 创建群组时 自定义群组 ID
Type Type `json:"Type"` // (必填)群组形态,包括 Public陌生人社交群Private即 Work好友工作群ChatRoom即 Meeting会议群AVChatRoom直播群
Name string `json:"Name"` // 必填群名称最长30字节使用 UTF-8 编码1个汉字占3个字节
Introduction string `json:"Introduction,omitempty"` // 选填群简介最长240字节使用 UTF-8 编码1个汉字占3个字节
Notification string `json:"Notification,omitempty"` // 选填群公告最长300字节使用 UTF-8 编码1个汉字占3个字节
FaceUrl string `json:"FaceUrl,omitempty"` // (选填)群头像 URL最长100字节
MaxMemberNum uint `json:"MaxMemberCount,omitempty"` // 选填最大群成员数量缺省时的默认值付费套餐包上限例如体验版是20如果升级套餐包需按照修改群基础资料修改这个字段
ApplyJoinOption string `json:"ApplyJoinOption,omitempty"` // (选填)申请加群处理方式。包含 FreeAccess自由加入NeedPermission需要验证DisableApply禁止加群不填默认为 NeedPermission需要验证 仅当创建支持申请加群的 群组 时,该字段有效
AppDefinedData []*customDataItem `json:"AppDefinedData,omitempty"` // (选填)群组维度的自定义字段,默认情况是没有的,可以通过 即时通信 IM 控制台 进行配置,详情请参阅 自定义字段
CreateTime int64 `json:"CreateTime"` // (选填)群组的创建时间
}
// 导入群基础资料(响应)
importGroupResp struct {
types.ActionBaseResp
GroupId string `json:"GroupId"` // 群ID
}
// 消息信息
messageItem struct {
FromUserId string `json:"From_Account"` // (必填)消息来源帐号
MsgBody []*types.MsgBody `json:"MsgBody"` // (必填)消息体
SendTime int64 `json:"SendTime"` // (必填)消息发送时间
Random uint32 `json:"Random,omitempty"` // 选填无符号32位整数
}
// 导入群消息(请求)
importMessagesReq struct {
GroupId string `json:"GroupId"` // 必填要导入消息的群ID
Messages []messageItem `json:"MsgList"` // (必填)导入的消息列表
}
// 导入群消息(响应)
importMessagesResp struct {
types.ActionBaseResp
Results []ImportMessagesResult `json:"ImportMsgResult"` // 导入群消息结果
}
// ImportMessagesResult 导入群消息结果
ImportMessagesResult struct {
MsgSeq int `json:"MsgSeq"` // 消息序列号,唯一标示一条消息
MsgTime int `json:"MsgTime"` // 消息的时间戳
Result int `json:"Result"` // 单条消息导入结果 0表示单条消息成功 10004表示单条消息发送时间无效 80001表示单条消息包含脏字拒绝存储此消息 80002表示为消息内容过长目前支持8000字节的消息请调整消息长度
}
// 导入群成员(请求)
importMembersReq struct {
GroupId string `json:"GroupId"` // 必填操作的群ID
Members []*memberItem `json:"MemberList"` // (必填)添加的群成员数组
}
// 导入群成员(响应)
importMembersResp struct {
types.ActionBaseResp
Results []ImportMemberResult `json:"MemberList"` // 添加的群成员结果
}
// ImportMemberResult 导入成员结果
ImportMemberResult struct {
UserId string `json:"Member_Account"` // 群成员帐号
Result int `json:"Result"` // 导入结果0表示失败1表示成功2表示已经是群成员
}
// 设置成员未读消息计数(请求)
setMemberUnreadMsgNumReq struct {
GroupId string `json:"GroupId"` // (必填)操作的群 ID
UserId string `json:"Member_Account"` // (必填)要操作的群成员
UnreadMsgNum int `json:"UnreadMsgNum"` // (必填)成员未读消息数
}
// 撤回指定用户发送的消息(请求)
revokeMemberMessagesReq struct {
GroupId string `json:"GroupId"` // (必填)要撤回消息的群 ID
UserId string `json:"Sender_Account"` // (必填)被撤回消息的发送者 ID
}
// 拉取群历史消息(请求)
fetchMessagesReq struct {
GroupId string `json:"GroupId"` // (必填)要拉取历史消息的群组 ID
ReqMsgSeq int `json:"ReqMsgSeq"` // 选填拉取消息的最大seq
ReqMsgNumber int `json:"ReqMsgNumber,omitempty"` // 必填拉取的历史消息的条数目前一次请求最多返回20条历史消息所以这里最好小于等于20
}
// 拉取群历史消息(响应)
fetchMessagesResp struct {
types.ActionBaseResp
GroupId string `json:"GroupId"`
IsFinished int `json:"IsFinished"`
RspMsgList []rspMsgItem `json:"RspMsgList"`
}
FetchMessagesRet struct {
IsFinished int // 是否返回了请求区间的全部消息 当成功返回了请求区间的全部消息时值为1; 当消息长度太长或者区间太大超过20导致无法返回全部消息时值为0; 当消息长度太长或者区间太大超过20且所有消息都过期时值为2
HasMore bool // 是否还有更多数据
NextSeq int // 下一个消息Seq
List []*Message // 列表
}
rspMsgItem struct {
FromUserId string `json:"From_Account"`
IsPlaceMsg int `json:"IsPlaceMsg"`
MsgBody []types.MsgBody `json:"MsgBody"`
MsgPriority int `json:"MsgPriority"`
MsgRandom uint32 `json:"MsgRandom"`
MsgSeq int `json:"MsgSeq"`
MsgTimeStamp int64 `json:"MsgTimeStamp"`
}
// 获取直播群在线人数(请求)
getOnlineMemberNumReq struct {
GroupId string `json:"GroupId"` // 必填操作的群ID
}
// 获取直播群在线人数(响应)
getOnlineMemberNumResp struct {
types.ActionBaseResp
OnlineMemberNum int `json:"OnlineMemberNum"` // 该群组的在线人数
}
)