mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
357 lines
9.1 KiB
TypeScript
357 lines
9.1 KiB
TypeScript
export interface User {
|
||
uid: string; // 加密的字符串
|
||
uin: string; // QQ号
|
||
nick: string;
|
||
avatarUrl?: string;
|
||
longNick?: string; // 签名
|
||
remark?: string
|
||
}
|
||
|
||
export interface SelfInfo extends User {
|
||
|
||
}
|
||
|
||
export interface Friend extends User {
|
||
}
|
||
|
||
export interface Group {
|
||
groupCode: string,
|
||
maxMember: number,
|
||
memberCount: number,
|
||
groupName: string,
|
||
groupStatus: 0,
|
||
memberRole: 2,
|
||
isTop: boolean,
|
||
toppedTimestamp: "0",
|
||
privilegeFlag: number, //65760
|
||
isConf: boolean,
|
||
hasModifyConfGroupFace: boolean,
|
||
hasModifyConfGroupName: boolean,
|
||
remarkName: string,
|
||
hasMemo: boolean,
|
||
groupShutupExpireTime: string, //"0",
|
||
personShutupExpireTime: string, //"0",
|
||
discussToGroupUin: string, //"0",
|
||
discussToGroupMaxMsgSeq: number,
|
||
discussToGroupTime: number,
|
||
groupFlagExt: number, //1073938496,
|
||
authGroupType: number, //0,
|
||
groupCreditLevel: number, //0,
|
||
groupFlagExt3: number, //0,
|
||
groupOwnerId: {
|
||
"memberUin": string, //"0",
|
||
"memberUid": string, //"u_fbf8N7aeuZEnUiJAbQ9R8Q"
|
||
},
|
||
members: GroupMember[] // 原始数据是没有这个的,为了方便自己加了这个字段
|
||
}
|
||
|
||
export enum GroupMemberRole {
|
||
normal = 2,
|
||
admin = 3,
|
||
owner = 4
|
||
}
|
||
|
||
export interface GroupMember {
|
||
avatarPath: string;
|
||
cardName: string;
|
||
cardType: number;
|
||
isDelete: boolean;
|
||
nick: string;
|
||
qid: string;
|
||
remark: string;
|
||
role: GroupMemberRole; // 群主:4, 管理员:3,群员:2
|
||
shutUpTime: number; // 禁言时间,单位是什么暂时不清楚
|
||
uid: string; // 加密的字符串
|
||
uin: string; // QQ号
|
||
}
|
||
|
||
export enum ElementType {
|
||
TEXT = 1,
|
||
PIC = 2,
|
||
FILE = 3,
|
||
PTT = 4,
|
||
FACE = 6,
|
||
REPLY = 7,
|
||
}
|
||
|
||
export interface SendTextElement {
|
||
elementType: ElementType.TEXT,
|
||
elementId: "",
|
||
textElement: {
|
||
content: string,
|
||
atType: number,
|
||
atUid: string,
|
||
atTinyId: string,
|
||
atNtUid: string,
|
||
}
|
||
}
|
||
|
||
export interface SendPttElement {
|
||
elementType: ElementType.PTT,
|
||
elementId: "",
|
||
pttElement: {
|
||
fileName: string,
|
||
filePath: string,
|
||
md5HexStr: string,
|
||
fileSize: number,
|
||
duration: number,
|
||
formatType: number,
|
||
voiceType: number,
|
||
voiceChangeType: number,
|
||
canConvert2Text: boolean,
|
||
waveAmplitudes: number[],
|
||
fileSubId: "",
|
||
playState: number,
|
||
autoConvertText: number,
|
||
}
|
||
}
|
||
|
||
export interface SendPicElement {
|
||
elementType: ElementType.PIC,
|
||
elementId: "",
|
||
picElement: {
|
||
md5HexStr: string,
|
||
fileSize: number,
|
||
picWidth: number,
|
||
picHeight: number,
|
||
fileName: string,
|
||
sourcePath: string,
|
||
original: boolean,
|
||
picType: number,
|
||
picSubType: number,
|
||
fileUuid: string,
|
||
fileSubId: string,
|
||
thumbFileSize: number,
|
||
summary: string,
|
||
}
|
||
}
|
||
|
||
export interface SendReplyElement {
|
||
elementType: ElementType.REPLY,
|
||
elementId: "",
|
||
replyElement: {
|
||
replayMsgSeq: string,
|
||
replayMsgId: string,
|
||
senderUin: string,
|
||
senderUinStr: string,
|
||
}
|
||
}
|
||
|
||
export interface SendFaceElement {
|
||
elementType: ElementType.FACE,
|
||
elementId: "",
|
||
faceElement: FaceElement
|
||
}
|
||
|
||
export interface FileElement {
|
||
"fileMd5"?: "",
|
||
"fileName": string,
|
||
"filePath": string,
|
||
"fileSize": string,
|
||
"picHeight"?: number,
|
||
"picWidth"?: number,
|
||
"picThumbPath"?: {},
|
||
"file10MMd5"?: "",
|
||
"fileSha"?: "",
|
||
"fileSha3"?: "",
|
||
"fileUuid"?: "",
|
||
"fileSubId"?: "",
|
||
"thumbFileSize"?: number
|
||
}
|
||
|
||
export interface SendFileElement {
|
||
"elementType": ElementType.FILE,
|
||
"elementId": "",
|
||
"fileElement": FileElement
|
||
}
|
||
|
||
export type SendMessageElement = SendTextElement | SendPttElement |
|
||
SendPicElement | SendReplyElement | SendFaceElement | SendFileElement
|
||
|
||
export enum AtType {
|
||
notAt = 0,
|
||
atAll = 1,
|
||
atUser = 2
|
||
}
|
||
|
||
export enum ChatType {
|
||
friend = 1,
|
||
group = 2,
|
||
temp = 100
|
||
}
|
||
|
||
export interface PttElement {
|
||
canConvert2Text: boolean;
|
||
duration: number; // 秒数
|
||
fileBizId: null;
|
||
fileId: number; // 0
|
||
fileName: string; // "e4d09c784d5a2abcb2f9980bdc7acfe6.amr"
|
||
filePath: string; // "/Users//Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/nt_qq_a6b15c9820595d25a56c1633ce19ad40/nt_data/Ptt/2023-11/Ori/e4d09c784d5a2abcb2f9980bdc7acfe6.amr"
|
||
fileSize: string; // "4261"
|
||
fileSubId: string; // "0"
|
||
fileUuid: string; // "90j3z7rmRphDPrdVgP9udFBaYar#oK0TWZIV"
|
||
formatType: string; // 1
|
||
invalidState: number; // 0
|
||
md5HexStr: string; // "e4d09c784d5a2abcb2f9980bdc7acfe6"
|
||
playState: number; // 0
|
||
progress: number; // 0
|
||
text: string; // ""
|
||
transferStatus: number; // 0
|
||
translateStatus: number; // 0
|
||
voiceChangeType: number; // 0
|
||
voiceType: number; // 0
|
||
waveAmplitudes: number[];
|
||
}
|
||
|
||
export interface ArkElement {
|
||
bytesData: string;
|
||
}
|
||
|
||
export const IMAGE_HTTP_HOST = "https://gchat.qpic.cn"
|
||
|
||
export interface PicElement {
|
||
originImageUrl: string; // http url, 没有host,host是https://gchat.qpic.cn/
|
||
sourcePath: string; // 图片本地路径
|
||
thumbPath: Map<number, string>;
|
||
picWidth: number;
|
||
picHeight: number;
|
||
fileSize: number;
|
||
fileName: string;
|
||
fileUuid: string;
|
||
}
|
||
|
||
export interface GrayTipElement {
|
||
revokeElement: {
|
||
operatorRole: string;
|
||
operatorUid: string;
|
||
operatorNick: string;
|
||
operatorRemark: string;
|
||
operatorMemRemark?: string;
|
||
wording: string; // 自定义的撤回提示语
|
||
}
|
||
}
|
||
|
||
export interface FaceElement {
|
||
faceIndex: number,
|
||
faceType: 1
|
||
}
|
||
|
||
export interface VideoElement {
|
||
"filePath": string,
|
||
"fileName": string,
|
||
"videoMd5": string,
|
||
"thumbMd5": string
|
||
"fileTime": 87, // second
|
||
"thumbSize": 314235, // byte
|
||
"fileFormat": 2, // 2表示mp4?
|
||
"fileSize": string, // byte
|
||
"thumbWidth": number,
|
||
"thumbHeight": number,
|
||
"busiType": 0, // 未知
|
||
"subBusiType": 0, // 未知
|
||
"thumbPath": {},
|
||
"transferStatus": 0, // 未知
|
||
"progress": 0, // 下载进度?
|
||
"invalidState": 0, // 未知
|
||
"fileUuid": string, // 可以用于下载链接?
|
||
"fileSubId": "",
|
||
"fileBizId": null,
|
||
"originVideoMd5": "",
|
||
"import_rich_media_context": null,
|
||
"sourceVideoCodecFormat": 0
|
||
}
|
||
|
||
export interface RawMessage {
|
||
msgId: string;
|
||
msgShortId?: number; // 自己维护的消息id
|
||
msgTime: string;
|
||
msgSeq: string;
|
||
senderUid: string;
|
||
senderUin?: string; // 发送者QQ号
|
||
peerUid: string; // 群号 或者 QQ uid
|
||
peerUin: string; // 群号 或者 发送者QQ号
|
||
sendNickName: string;
|
||
sendMemberName?: string; // 发送者群名片
|
||
chatType: ChatType;
|
||
sendStatus?: number; // 消息状态,别人发的2是已撤回,自己发的2是已发送
|
||
recallTime: string; // 撤回时间, "0"是没有撤回
|
||
elements: {
|
||
elementId: string,
|
||
replyElement: {
|
||
senderUid: string; // 原消息发送者QQ号
|
||
sourceMsgIsIncPic: boolean; // 原消息是否有图片
|
||
sourceMsgText: string;
|
||
replayMsgSeq: string; // 源消息的msgSeq,可以通过这个找到源消息的msgId
|
||
};
|
||
textElement: {
|
||
atType: AtType;
|
||
atUid: string; // QQ号
|
||
content: string;
|
||
atNtUid: string; // uid号
|
||
};
|
||
picElement: PicElement;
|
||
pttElement: PttElement;
|
||
arkElement: ArkElement;
|
||
grayTipElement: GrayTipElement;
|
||
faceElement: FaceElement;
|
||
videoElement: VideoElement;
|
||
fileElement: FileElement;
|
||
}[];
|
||
}
|
||
|
||
export enum GroupNotifyTypes {
|
||
INVITE_ME = 1,
|
||
INVITED_JOIN = 4, // 有人接受了邀请入群
|
||
JOIN_REQUEST = 7,
|
||
ADMIN_SET = 8,
|
||
ADMIN_UNSET = 12,
|
||
MEMBER_EXIT = 11, // 主动退出?
|
||
|
||
}
|
||
|
||
export interface GroupNotifies {
|
||
doubt: boolean,
|
||
nextStartSeq: string,
|
||
notifies: GroupNotify[],
|
||
}
|
||
|
||
export interface GroupNotify {
|
||
time: number; // 自己添加的字段,时间戳,毫秒, 用于判断收到短时间内收到重复的notify
|
||
seq: string, // 转成数字,再除以1000应该就是时间戳?
|
||
type: GroupNotifyTypes,
|
||
status: 0, // 未知
|
||
group: { groupCode: string, groupName: string },
|
||
user1: { uid: string, nickName: string }, // 被设置管理员的人
|
||
user2: { uid: string, nickName: string }, // 操作者
|
||
actionUser: { uid: string, nickName: string }, //未知
|
||
actionTime: string,
|
||
invitationExt: {
|
||
srcType: number, // 0?未知
|
||
groupCode: string, waitStatus: number
|
||
},
|
||
postscript: string, // 加群用户填写的验证信息
|
||
repeatSeqs: [],
|
||
warningTips: string
|
||
}
|
||
|
||
export enum GroupRequestOperateTypes {
|
||
approve = 1,
|
||
reject = 2
|
||
}
|
||
|
||
export interface FriendRequest {
|
||
friendUid: string,
|
||
reqTime: string, // 时间戳,秒
|
||
extWords: string, // 申请人填写的验证消息
|
||
isUnread: boolean,
|
||
friendNick: string,
|
||
sourceId: number,
|
||
groupCode: string
|
||
}
|
||
|
||
export interface FriendRequestNotify {
|
||
data: {
|
||
unreadNums: number,
|
||
buddyReqs: FriendRequest[]
|
||
}
|
||
} |