import { GroupMemberRole } from '@/core'; import { ActionBarElement, ArkElement, AvRecordElement, CalendarElement, FaceBubbleElement, FaceElement, FileElement, GiphyElement, GrayTipElement, MarketFaceElement, PicElement, PttElement, RecommendedMsgElement, ReplyElement, ShareLocationElement, StructLongMsgElement, TaskTopMsgElement, TextElement, TofuRecordElement, VideoElement, YoloGameResultElement } from './element'; /** * 表示对等方的信息 */ export interface Peer { chatType: ChatType; // 聊天类型 peerUid: string; // 对等方的唯一标识符 guildId?: string; // 可选的频道ID } /** * 表示被踢下线的信息 */ export interface KickedOffLineInfo { appId: number; // 应用ID instanceId: number; // 实例ID sameDevice: boolean; // 是否为同一设备 tipsDesc: string; // 提示描述 tipsTitle: string; // 提示标题 kickedType: number; // 被踢类型 securityKickedType: number; // 安全踢出类型 } /** * 获取文件列表的参数 */ export interface GetFileListParam { sortType: number; fileCount: number; startIndex: number; sortOrder: number; showOnlinedocFolder: number; folderId?: string; } /** * 消息元素类型枚举 */ export enum ElementType { UNKNOWN = 0, TEXT = 1, PIC = 2, FILE = 3, PTT = 4, VIDEO = 5, FACE = 6, REPLY = 7, GreyTip = 8, // “小灰条”,包括拍一拍 (Poke)、撤回提示等 WALLET = 9, ARK = 10, MFACE = 11, LIVEGIFT = 12, STRUCTLONGMSG = 13, MARKDOWN = 14, GIPHY = 15, MULTIFORWARD = 16, INLINEKEYBOARD = 17, INTEXTGIFT = 18, CALENDAR = 19, YOLOGAMERESULT = 20, AVRECORD = 21, FEED = 22, TOFURECORD = 23, ACEBUBBLE = 24, ACTIVITY = 25, TOFU = 26, FACEBUBBLE = 27, SHARELOCATION = 28, TASKTOPMSG = 29, RECOMMENDEDMSG = 43, ACTIONBAR = 44 } /** * 消息类型枚举 */ export enum NTMsgType { KMSGTYPEARKSTRUCT = 11, KMSGTYPEFACEBUBBLE = 24, KMSGTYPEFILE = 3, KMSGTYPEGIFT = 14, KMSGTYPEGIPHY = 13, KMSGTYPEGRAYTIPS = 5, KMSGTYPEMIX = 2, KMSGTYPEMULTIMSGFORWARD = 8, KMSGTYPENULL = 1, KMSGTYPEONLINEFILE = 21, KMSGTYPEONLINEFOLDER = 27, KMSGTYPEPROLOGUE = 29, KMSGTYPEPTT = 6, KMSGTYPEREPLY = 9, KMSGTYPESHARELOCATION = 25, KMSGTYPESTRUCT = 4, KMSGTYPESTRUCTLONGMSG = 12, KMSGTYPETEXTGIFT = 15, KMSGTYPEUNKNOWN = 0, KMSGTYPEVIDEO = 7, KMSGTYPEWALLET = 10 } /** * 图片类型枚举 */ export enum PicType { NEWPIC_APNG = 2001, NEWPIC_BMP = 1005, NEWPIC_GIF = 2000, NEWPIC_JPEG = 1000, NEWPIC_PNG = 1001, NEWPIC_PROGERSSIV_JPEG = 1003, NEWPIC_SHARPP = 1004, NEWPIC_WEBP = 1002 } /** * 图片子类型枚举 */ export enum PicSubType { KNORMAL = 0, KCUSTOM = 1, KHOT = 2, KDIPPERCHART = 3, KSMART = 4, KSPACE = 5, KUNKNOW = 6, KRELATED = 7 } /** * 消息@类型枚举 */ export enum NTMsgAtType { ATTYPEALL = 1, ATTYPECATEGORY = 512, ATTYPECHANNEL = 16, ATTYPEME = 4, ATTYPEONE = 2, ATTYPEONLINE = 64, ATTYPEROLE = 8, ATTYPESUMMON = 32, ATTYPESUMMONONLINE = 128, ATTYPESUMMONROLE = 256, ATTYPEUNKNOWN = 0 } /** * 消息元素接口 */ export interface MessageElement { elementType: ElementType, elementId: string, extBufForUI?: string, //"0x", textElement?: TextElement; faceElement?: FaceElement, marketFaceElement?: MarketFaceElement, replyElement?: ReplyElement, picElement?: PicElement, pttElement?: PttElement, videoElement?: VideoElement, grayTipElement?: GrayTipElement, arkElement?: ArkElement, fileElement?: FileElement, liveGiftElement?: null, markdownElement?: MarkdownElement, structLongMsgElement?: StructLongMsgElement, multiForwardMsgElement?: MultiForwardMsgElement, giphyElement?: GiphyElement, walletElement?: null, inlineKeyboardElement?: InlineKeyboardElement, textGiftElement?: null,//???? calendarElement?: CalendarElement, yoloGameResultElement?: YoloGameResultElement, avRecordElement?: AvRecordElement, structMsgElement?: null, faceBubbleElement?: FaceBubbleElement, shareLocationElement?: ShareLocationElement, tofuRecordElement?: TofuRecordElement, taskTopMsgElement?: TaskTopMsgElement, recommendedMsgElement?: RecommendedMsgElement, actionBarElement?: ActionBarElement } /** * 消息来源类型枚举 */ export enum MsgSourceType { K_DOWN_SOURCETYPE_AIOINNER = 1, K_DOWN_SOURCETYPE_BIGSCREEN = 2, K_DOWN_SOURCETYPE_HISTORY = 3, K_DOWN_SOURCETYPE_UNKNOWN = 0 } /** * 聊天类型枚举 */ export enum ChatType { KCHATTYPEADELIE = 42, KCHATTYPEBUDDYNOTIFY = 5, KCHATTYPEC2C = 1, KCHATTYPECIRCLE = 113, KCHATTYPEDATALINE = 8, KCHATTYPEDATALINEMQQ = 134, KCHATTYPEDISC = 3, KCHATTYPEFAV = 41, KCHATTYPEGAMEMESSAGE = 105, KCHATTYPEGAMEMESSAGEFOLDER = 116, KCHATTYPEGROUP = 2, KCHATTYPEGROUPBLESS = 133, KCHATTYPEGROUPGUILD = 9, KCHATTYPEGROUPHELPER = 7, KCHATTYPEGROUPNOTIFY = 6, KCHATTYPEGUILD = 4, KCHATTYPEGUILDMETA = 16, KCHATTYPEMATCHFRIEND = 104, KCHATTYPEMATCHFRIENDFOLDER = 109, KCHATTYPENEARBY = 106, KCHATTYPENEARBYASSISTANT = 107, KCHATTYPENEARBYFOLDER = 110, KCHATTYPENEARBYHELLOFOLDER = 112, KCHATTYPENEARBYINTERACT = 108, KCHATTYPEQQNOTIFY = 132, KCHATTYPERELATEACCOUNT = 131, KCHATTYPESERVICEASSISTANT = 118, KCHATTYPESERVICEASSISTANTSUB = 201, KCHATTYPESQUAREPUBLIC = 115, KCHATTYPESUBSCRIBEFOLDER = 30, KCHATTYPETEMPADDRESSBOOK = 111, KCHATTYPETEMPBUSSINESSCRM = 102, KCHATTYPETEMPC2CFROMGROUP = 100, KCHATTYPETEMPC2CFROMUNKNOWN = 99, KCHATTYPETEMPFRIENDVERIFY = 101, KCHATTYPETEMPNEARBYPRO = 119, KCHATTYPETEMPPUBLICACCOUNT = 103, KCHATTYPETEMPWPA = 117, KCHATTYPEUNKNOWN = 0, KCHATTYPEWEIYUN = 40, } /** * 灰色提示元素子类型枚举 */ export enum NTGrayTipElementSubTypeV2 { GRAYTIP_ELEMENT_SUBTYPE_AIOOP = 15, GRAYTIP_ELEMENT_SUBTYPE_BLOCK = 14, GRAYTIP_ELEMENT_SUBTYPE_BUDDY = 5, GRAYTIP_ELEMENT_SUBTYPE_BUDDYNOTIFY = 9, GRAYTIP_ELEMENT_SUBTYPE_EMOJIREPLY = 3, GRAYTIP_ELEMENT_SUBTYPE_ESSENCE = 7, GRAYTIP_ELEMENT_SUBTYPE_FEED = 6, GRAYTIP_ELEMENT_SUBTYPE_FEEDCHANNELMSG = 11, GRAYTIP_ELEMENT_SUBTYPE_FILE = 10, GRAYTIP_ELEMENT_SUBTYPE_GROUP = 4, GRAYTIP_ELEMENT_SUBTYPE_GROUPNOTIFY = 8, GRAYTIP_ELEMENT_SUBTYPE_JSON = 17, GRAYTIP_ELEMENT_SUBTYPE_LOCALMSG = 13, GRAYTIP_ELEMENT_SUBTYPE_PROCLAMATION = 2, GRAYTIP_ELEMENT_SUBTYPE_REVOKE = 1, GRAYTIP_ELEMENT_SUBTYPE_UNKNOWN = 0, GRAYTIP_ELEMENT_SUBTYPE_WALLET = 16, GRAYTIP_ELEMENT_SUBTYPE_XMLMSG = 12, } /** * 表情类型枚举 */ export enum FaceType { normal = 1, // 小黄脸 normal2 = 2, // 新小黄脸 dice = 3, // 骰子 poke = 5 // 拍一拍 } /** * Poke 类型枚举 */ export enum PokeType { POKE_TYPE_APPROVE = 3, POKE_TYPE_GIVING_HEART = 2, POKE_TYPE_GREAT_MOVE = 6, POKE_TYPE_HEART_BREAK = 4, POKE_TYPE_HI_TOGETHER = 5, POKE_TYPE_POKE = 1, POKE_TYPE_POKE_OLD = 0, POKE_TYPE_VAS_POKE = 126, } /** * 表情索引枚举 */ export enum FaceIndex { dice = 358, rps = 359 } /** * 视频类型枚举 */ export enum NTVideoType { VIDEO_FORMAT_AFS = 7, VIDEO_FORMAT_AVI = 1, VIDEO_FORMAT_MKV = 4, VIDEO_FORMAT_MOD = 9, VIDEO_FORMAT_MOV = 8, VIDEO_FORMAT_MP4 = 2, VIDEO_FORMAT_MTS = 11, VIDEO_FORMAT_RM = 6, VIDEO_FORMAT_RMVB = 5, VIDEO_FORMAT_TS = 10, VIDEO_FORMAT_WMV = 3, } /** * Markdown元素接口 */ export interface MarkdownElement { content: string; } /** * 内联键盘按钮接口 */ export interface InlineKeyboardElementRowButton { id: string; label: string; visitedLabel: string; style: 1; // 未知 type: 2; // 未知 clickLimit: 0; // 未知 unsupportTips: string; data: string; atBotShowChannelList: boolean; permissionType: number; specifyRoleIds: []; specifyTinyids: []; isReply: false; anchor: 0; enter: false; subscribeDataTemplateIds: []; } /** * 内联键盘元素接口 */ export interface InlineKeyboardElement { rows: [{ buttons: InlineKeyboardElementRowButton[] }], botAppid: string; } /** * Aio操作灰色提示元素接口 */ export interface TipAioOpGrayTipElement { operateType: number; peerUid: string; fromGrpCodeOfTmpChat: string; } /** * 群提示元素类型枚举 */ export enum TipGroupElementType { memberIncrease = 1, kicked = 3, // 被移出群 ban = 8 } /** * 群加入ShowType */ export enum MemberAddShowType { K_OTHER_ADD = 0, K_OTHER_ADD_BY_OTHER_QRCODE = 2, K_OTHER_ADD_BY_YOUR_QRCODE = 3, K_OTHER_INVITE_OTHER = 5, K_OTHER_INVITE_YOU = 6, K_YOU_ADD = 1, K_YOU_ADD_BY_OTHER_QRCODE = 4, K_YOU_ALREADY_MEMBER = 8, K_YOU_INVITE_OTHER = 7, } /** * 群提示元素接口 */ export interface TipGroupElement { type: TipGroupElementType; // 1表示有人加入群; 自己加入群也会收到这个 role: 0; groupName: string; memberUid: string; memberNick: string; memberRemark: string; adminUid: string; adminNick: string; adminRemark: string; createGroup: null; memberAdd?: { showType: MemberAddShowType; otherAdd: null; otherAddByOtherQRCode: null; otherAddByYourQRCode: null; youAddByOtherQRCode: null; otherInviteOther: null; otherInviteYou: null; youInviteOther: null }; shutUp?: { curTime: string; duration: string; // 禁言时间,秒 admin: { uid: string; card: string; name: string; role: GroupMemberRole }; member: { uid: string card: string; name: string; role: GroupMemberRole } }; } /** * 多条转发消息元素接口 */ export interface MultiForwardMsgElement { xmlContent: string; // xml格式的消息内容 resId: string; fileName: string; } /** * 发送状态类型枚举 */ export enum SendStatusType { KSEND_STATUS_FAILED = 0, KSEND_STATUS_SENDING = 1, KSEND_STATUS_SUCCESS = 2, KSEND_STATUS_SUCCESS_NOSEQ = 3 } /** * 原始消息接口 */ export interface RawMessage { parentMsgPeer: Peer; // 父消息的Peer parentMsgIdList: string[];// 父消息 ID 列表 id?: number;// 扩展字段,与 Ob11 msg ID 有关 guildId: string;// 频道ID msgRandom: string;// 消息ID相关 msgId: string;// 雪花ID msgTime: string;// 消息时间戳 msgSeq: string;// 消息序列号 msgType: NTMsgType;// 消息类型 subMsgType: number;// 子消息类型 senderUid: string;// 发送者 UID senderUin: string;// 发送者 QQ 号 peerUid: string;// 群号 / 用户 UID peerUin: string;// 群号 / 用户 QQ 号 remark?: string;// 备注 peerName: string;// Peer名称 sendNickName: string;// 发送者昵称 sendRemarkName: string;// 发送者好友备注 sendMemberName?: string;// 发送者群名片(如果是群消息) chatType: ChatType;// 会话类型 sendStatus?: SendStatusType;// 消息状态 recallTime: string;// 撤回时间,"0" 是没有撤回 records: RawMessage[];// 消息记录 elements: MessageElement[];// 消息元素 sourceType: MsgSourceType;// 消息来源类型 isOnlineMsg: boolean;// 是否为在线消息 } /** * 查询消息参数接口 */ export interface QueryMsgsParams { chatInfo: Peer; filterMsgType: []; filterSendersUid: string[]; filterMsgFromTime: string; filterMsgToTime: string; pageLimit: number; isReverseOrder: boolean; isIncludeCurrent: boolean; } /** * 临时聊天信息API接口 */ export interface TmpChatInfoApi { errMsg: string; result: number; tmpChatInfo?: TmpChatInfo; } /** * 临时聊天信息接口 */ export interface TmpChatInfo { chatType: number; fromNick: string; groupCode: string; peerUid: string; sessionType: number; sig: string; } /** * 消息请求类型接口 */ export interface MsgReqType { peer: Peer, byType: number, msgId: string, msgSeq: string, msgTime: string, clientSeq: string, cnt: number, queryOrder: boolean, includeSelf: boolean, includeDeleteMsg: boolean, extraCnt: number }