mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
chore: 临时会话
This commit is contained in:
parent
427889f8ca
commit
7a88786685
@ -1,4 +1,4 @@
|
|||||||
import { GetFileListParam, Peer, RawMessage, SendMessageElement } from '@/core/entities';
|
import { ChatType, GetFileListParam, Peer, RawMessage, SendMessageElement } from '@/core/entities';
|
||||||
import { InstanceContext, NapCatCore } from '@/core';
|
import { InstanceContext, NapCatCore } from '@/core';
|
||||||
import { onGroupFileInfoUpdateParamType } from '@/core/listeners';
|
import { onGroupFileInfoUpdateParamType } from '@/core/listeners';
|
||||||
import { GeneralCallResult } from '@/core/services/common';
|
import { GeneralCallResult } from '@/core/services/common';
|
||||||
@ -103,18 +103,18 @@ export class NTQQMsgApi {
|
|||||||
const data = await this.core.eventWrapper.CallNormalEvent<
|
const data = await this.core.eventWrapper.CallNormalEvent<
|
||||||
(GroupCode: string, params: GetFileListParam) => Promise<unknown>,
|
(GroupCode: string, params: GetFileListParam) => Promise<unknown>,
|
||||||
(groupFileListResult: onGroupFileInfoUpdateParamType) => void
|
(groupFileListResult: onGroupFileInfoUpdateParamType) => void
|
||||||
>(
|
>(
|
||||||
'NodeIKernelRichMediaService/getGroupFileList',
|
'NodeIKernelRichMediaService/getGroupFileList',
|
||||||
'NodeIKernelMsgListener/onGroupFileInfoUpdate',
|
'NodeIKernelMsgListener/onGroupFileInfoUpdate',
|
||||||
1,
|
1,
|
||||||
5000,
|
5000,
|
||||||
(groupFileListResult: onGroupFileInfoUpdateParamType) => {
|
(groupFileListResult: onGroupFileInfoUpdateParamType) => {
|
||||||
//Developer Mlikiowa Todo: 此处有问题 无法判断是否成功
|
//Developer Mlikiowa Todo: 此处有问题 无法判断是否成功
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
GroupCode,
|
GroupCode,
|
||||||
params,
|
params,
|
||||||
);
|
);
|
||||||
return data[1].item;
|
return data[1].item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,24 +155,24 @@ export class NTQQMsgApi {
|
|||||||
const data = await this.core.eventWrapper.CallNormalEvent<
|
const data = await this.core.eventWrapper.CallNormalEvent<
|
||||||
(msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>,
|
(msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>,
|
||||||
(msgList: RawMessage[]) => void
|
(msgList: RawMessage[]) => void
|
||||||
>(
|
>(
|
||||||
'NodeIKernelMsgService/sendMsg',
|
'NodeIKernelMsgService/sendMsg',
|
||||||
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
||||||
1,
|
1,
|
||||||
timeout,
|
timeout,
|
||||||
(msgRecords: RawMessage[]) => {
|
(msgRecords: RawMessage[]) => {
|
||||||
for (const msgRecord of msgRecords) {
|
for (const msgRecord of msgRecords) {
|
||||||
if (msgRecord.msgId === msgId && msgRecord.sendStatus === 2) {
|
if (msgRecord.msgId === msgId && msgRecord.sendStatus === 2) {
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
}
|
||||||
},
|
return false;
|
||||||
msgId,
|
},
|
||||||
peer,
|
msgId,
|
||||||
msgElements,
|
peer,
|
||||||
new Map(),
|
msgElements,
|
||||||
);
|
new Map(),
|
||||||
|
);
|
||||||
const retMsg = data[1].find(msgRecord => {
|
const retMsg = data[1].find(msgRecord => {
|
||||||
if (msgRecord.msgId === msgId) {
|
if (msgRecord.msgId === msgId) {
|
||||||
return true;
|
return true;
|
||||||
@ -184,32 +184,60 @@ export class NTQQMsgApi {
|
|||||||
sendMsgEx(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
|
sendMsgEx(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
|
||||||
//return NTQQMsgApi.sendMsgV1(peer, msgElements, waitComplete, timeout);
|
//return NTQQMsgApi.sendMsgV1(peer, msgElements, waitComplete, timeout);
|
||||||
}
|
}
|
||||||
|
async PrepareTempChat(toUserUid: string, GroupCode: string, nickname: string) {
|
||||||
|
//By Jadx/Ida Mlikiowa
|
||||||
|
let TempGameSession = {
|
||||||
|
nickname: "",
|
||||||
|
gameAppId: "",
|
||||||
|
selfTinyId: "",
|
||||||
|
peerRoleId: "",
|
||||||
|
peerOpenId: "",
|
||||||
|
};
|
||||||
|
return this.context.session.getMsgService().prepareTempChat({
|
||||||
|
chatType: ChatType.temp,
|
||||||
|
peerUid: toUserUid,
|
||||||
|
peerNickname: nickname,
|
||||||
|
fromGroupCode: GroupCode,
|
||||||
|
sig: "",
|
||||||
|
selfPhone: "",
|
||||||
|
selfUid: this.core.selfInfo.uid,
|
||||||
|
gameSession: TempGameSession
|
||||||
|
});
|
||||||
|
}
|
||||||
|
async getTempChatInfo(chatType: ChatType, peerUid: string) {
|
||||||
|
return this.context.session.getMsgService().getTempChatInfo(chatType, peerUid);
|
||||||
|
}
|
||||||
async sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
|
async sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
|
||||||
//唉? !我有个想法
|
//唉? !我有个想法
|
||||||
|
if (peer.chatType === ChatType.temp && peer.guildId && peer.guildId !== '') {
|
||||||
|
let member = await this.core.ApiContext.GroupApi.getGroupMember(peer.guildId, peer.peerUid!);
|
||||||
|
if (member) {
|
||||||
|
await this.PrepareTempChat(peer.peerUid, peer.guildId, member.nick);
|
||||||
|
}
|
||||||
|
}
|
||||||
const msgId = await this.getMsgUnique(peer.chatType, await this.getServerTime());
|
const msgId = await this.getMsgUnique(peer.chatType, await this.getServerTime());
|
||||||
peer.guildId = msgId;
|
peer.guildId = msgId;
|
||||||
const data = await this.core.eventWrapper.CallNormalEvent<
|
const data = await this.core.eventWrapper.CallNormalEvent<
|
||||||
(msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>,
|
(msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>,
|
||||||
(msgList: RawMessage[]) => void
|
(msgList: RawMessage[]) => void
|
||||||
>(
|
>(
|
||||||
'NodeIKernelMsgService/sendMsg',
|
'NodeIKernelMsgService/sendMsg',
|
||||||
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
||||||
1,
|
1,
|
||||||
timeout,
|
timeout,
|
||||||
(msgRecords: RawMessage[]) => {
|
(msgRecords: RawMessage[]) => {
|
||||||
for (const msgRecord of msgRecords) {
|
for (const msgRecord of msgRecords) {
|
||||||
if (msgRecord.guildId === msgId && msgRecord.sendStatus === 2) {
|
if (msgRecord.guildId === msgId && msgRecord.sendStatus === 2) {
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
}
|
||||||
},
|
return false;
|
||||||
'0',
|
},
|
||||||
peer,
|
'0',
|
||||||
msgElements,
|
peer,
|
||||||
new Map(),
|
msgElements,
|
||||||
);
|
new Map(),
|
||||||
|
);
|
||||||
const retMsg = data[1].find(msgRecord => {
|
const retMsg = data[1].find(msgRecord => {
|
||||||
if (msgRecord.guildId === msgId) {
|
if (msgRecord.guildId === msgId) {
|
||||||
return true;
|
return true;
|
||||||
@ -244,25 +272,25 @@ export class NTQQMsgApi {
|
|||||||
const data = await this.core.eventWrapper.CallNormalEvent<
|
const data = await this.core.eventWrapper.CallNormalEvent<
|
||||||
(msgInfo: typeof msgInfos, srcPeer: Peer, destPeer: Peer, comment: Array<any>, attr: Map<any, any>) => Promise<unknown>,
|
(msgInfo: typeof msgInfos, srcPeer: Peer, destPeer: Peer, comment: Array<any>, attr: Map<any, any>) => Promise<unknown>,
|
||||||
(msgList: RawMessage[]) => void
|
(msgList: RawMessage[]) => void
|
||||||
>(
|
>(
|
||||||
'NodeIKernelMsgService/multiForwardMsgWithComment',
|
'NodeIKernelMsgService/multiForwardMsgWithComment',
|
||||||
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
||||||
1,
|
1,
|
||||||
5000,
|
5000,
|
||||||
(msgRecords: RawMessage[]) => {
|
(msgRecords: RawMessage[]) => {
|
||||||
for (const msgRecord of msgRecords) {
|
for (const msgRecord of msgRecords) {
|
||||||
if (msgRecord.peerUid == destPeer.peerUid && msgRecord.senderUid == this.core.selfInfo.uid) {
|
if (msgRecord.peerUid == destPeer.peerUid && msgRecord.senderUid == this.core.selfInfo.uid) {
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
}
|
||||||
},
|
return false;
|
||||||
msgInfos,
|
},
|
||||||
srcPeer,
|
msgInfos,
|
||||||
destPeer,
|
srcPeer,
|
||||||
[],
|
destPeer,
|
||||||
new Map(),
|
[],
|
||||||
);
|
new Map(),
|
||||||
|
);
|
||||||
for (const msg of data[1]) {
|
for (const msg of data[1]) {
|
||||||
const arkElement = msg.elements.find(ele => ele.arkElement);
|
const arkElement = msg.elements.find(ele => ele.arkElement);
|
||||||
if (!arkElement) {
|
if (!arkElement) {
|
||||||
|
@ -12,6 +12,20 @@ export interface QueryMsgsParams {
|
|||||||
isReverseOrder: boolean,
|
isReverseOrder: boolean,
|
||||||
isIncludeCurrent: boolean
|
isIncludeCurrent: boolean
|
||||||
}
|
}
|
||||||
|
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 NodeIKernelMsgService {
|
export interface NodeIKernelMsgService {
|
||||||
|
|
||||||
@ -497,11 +511,11 @@ export interface NodeIKernelMsgService {
|
|||||||
result: number,
|
result: number,
|
||||||
errMsg: string,
|
errMsg: string,
|
||||||
emojiLikesList:
|
emojiLikesList:
|
||||||
Array<{
|
Array<{
|
||||||
tinyId: string,
|
tinyId: string,
|
||||||
nickName: string,
|
nickName: string,
|
||||||
headUrl: string
|
headUrl: string
|
||||||
}>,
|
}>,
|
||||||
cookie: string,
|
cookie: string,
|
||||||
isLastPage: boolean,
|
isLastPage: boolean,
|
||||||
isFirstPage: boolean
|
isFirstPage: boolean
|
||||||
@ -624,7 +638,7 @@ export interface NodeIKernelMsgService {
|
|||||||
sendSsoCmdReqByContend(cmd: string, param: string): Promise<unknown>;
|
sendSsoCmdReqByContend(cmd: string, param: string): Promise<unknown>;
|
||||||
|
|
||||||
//chattype,uid->Promise<any>
|
//chattype,uid->Promise<any>
|
||||||
getTempChatInfo(ChatType: number, Uid: string): unknown;
|
getTempChatInfo(ChatType: number, Uid: string): Promise<TmpChatInfoApi>;
|
||||||
|
|
||||||
setContactLocalTop(...args: unknown[]): unknown;
|
setContactLocalTop(...args: unknown[]): unknown;
|
||||||
|
|
||||||
|
@ -88,6 +88,14 @@ export class OB11Constructor {
|
|||||||
//resMsg.sender.nickname = user.info.nick;
|
//resMsg.sender.nickname = user.info.nick;
|
||||||
} else if (msg.chatType == ChatType.temp) {
|
} else if (msg.chatType == ChatType.temp) {
|
||||||
resMsg.sub_type = 'group';
|
resMsg.sub_type = 'group';
|
||||||
|
let ret = await NTQQMsgApi.getTempChatInfo(ChatType.temp, msg.senderUid);
|
||||||
|
if (ret.result === 0) {
|
||||||
|
resMsg.group_id = parseInt(ret.tmpChatInfo!.groupCode);
|
||||||
|
resMsg.sender.nickname = ret.tmpChatInfo!.fromNick;
|
||||||
|
} else {
|
||||||
|
resMsg.group_id = 284840486;//兜底数据
|
||||||
|
resMsg.sender.nickname = "临时会话";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (const element of msg.elements) {
|
for (const element of msg.elements) {
|
||||||
let message_data: OB11MessageData = {
|
let message_data: OB11MessageData = {
|
||||||
@ -270,13 +278,13 @@ export class OB11Constructor {
|
|||||||
chatType: msg.chatType,
|
chatType: msg.chatType,
|
||||||
guildId: '',
|
guildId: '',
|
||||||
},
|
},
|
||||||
msg.msgId,
|
msg.msgId,
|
||||||
msg.msgSeq,
|
msg.msgSeq,
|
||||||
msg.senderUid,
|
msg.senderUid,
|
||||||
element.elementId,
|
element.elementId,
|
||||||
element.elementType.toString(),
|
element.elementType.toString(),
|
||||||
element.pttElement.fileSize || '0',
|
element.pttElement.fileSize || '0',
|
||||||
element.pttElement.fileUuid || '',
|
element.pttElement.fileUuid || '',
|
||||||
);
|
);
|
||||||
//以uuid作为文件名
|
//以uuid作为文件名
|
||||||
} else if (element.arkElement) {
|
} else if (element.arkElement) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user