mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-01-16 13:20:33 +00:00
commit
b4c0068637
@ -127,13 +127,16 @@ export class NTQQUserApi {
|
|||||||
return RetUser;
|
return RetUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
async getUserDetailInfo(uid: string) {
|
async getUserDetailInfo(uid: string): Promise<User> {
|
||||||
const ret = await this.fetchUserDetailInfo(uid, UserDetailSource.KDB);
|
try {
|
||||||
if (ret.uin === '0') {
|
let retUser = await this.fetchUserDetailInfo(uid, UserDetailSource.KDB);
|
||||||
this.context.logger.logDebug('[NapCat] [Mark] getUserDetailInfo Mode1 Failed.')
|
if (retUser.uin !== '0') {
|
||||||
return await this.fetchUserDetailInfo(uid, UserDetailSource.KSERVER);
|
return retUser;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
}
|
}
|
||||||
return ret;
|
this.context.logger.logDebug('[NapCat] [Mark] getUserDetailInfo Mode1 Failed.');
|
||||||
|
return this.fetchUserDetailInfo(uid, UserDetailSource.KSERVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
async modifySelfProfile(param: ModifyProfileParams) {
|
async modifySelfProfile(param: ModifyProfileParams) {
|
||||||
|
|||||||
@ -196,6 +196,9 @@ export class NapCatCore {
|
|||||||
this.apis.GroupApi.groupMemberCache.set(groupCode, members);
|
this.apis.GroupApi.groupMemberCache.set(groupCode, members);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
this.context.session.getGroupService().addKernelGroupListener(
|
||||||
|
new this.context.wrapper.NodeIKernelGroupListener(proxiedListenerOf(groupListener, this.context.logger)),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
checkAdminEvent(groupCode: string, memberNew: GroupMember, memberOld: GroupMember | undefined): boolean {
|
checkAdminEvent(groupCode: string, memberNew: GroupMember, memberOld: GroupMember | undefined): boolean {
|
||||||
if (memberNew.role !== memberOld?.role) {
|
if (memberNew.role !== memberOld?.role) {
|
||||||
|
|||||||
@ -30,6 +30,7 @@ import { EventType } from '../event/OB11BaseEvent';
|
|||||||
import { encodeCQCode } from './cqcode';
|
import { encodeCQCode } from './cqcode';
|
||||||
import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent';
|
import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent';
|
||||||
import { OB11GroupBanEvent } from '../event/notice/OB11GroupBanEvent';
|
import { OB11GroupBanEvent } from '../event/notice/OB11GroupBanEvent';
|
||||||
|
import { OB11GroupCardEvent } from '../event/notice/OB11GroupCardEvent';
|
||||||
import { OB11GroupUploadNoticeEvent } from '../event/notice/OB11GroupUploadNoticeEvent';
|
import { OB11GroupUploadNoticeEvent } from '../event/notice/OB11GroupUploadNoticeEvent';
|
||||||
import { OB11GroupNoticeEvent } from '../event/notice/OB11GroupNoticeEvent';
|
import { OB11GroupNoticeEvent } from '../event/notice/OB11GroupNoticeEvent';
|
||||||
import { calcQQLevel, sleep, UUIDConverter } from '@/common/utils/helper';
|
import { calcQQLevel, sleep, UUIDConverter } from '@/common/utils/helper';
|
||||||
@ -149,7 +150,6 @@ export class OB11Constructor {
|
|||||||
message_data['type'] = OB11MessageDataType.reply;
|
message_data['type'] = OB11MessageDataType.reply;
|
||||||
//log("收到回复消息", element.replyElement);
|
//log("收到回复消息", element.replyElement);
|
||||||
try {
|
try {
|
||||||
let oldMsgFlag = false;
|
|
||||||
const records = msg.records.find(msgRecord => msgRecord.msgId === element?.replyElement?.sourceMsgIdInRecords);
|
const records = msg.records.find(msgRecord => msgRecord.msgId === element?.replyElement?.sourceMsgIdInRecords);
|
||||||
const peer = {
|
const peer = {
|
||||||
chatType: msg.chatType,
|
chatType: msg.chatType,
|
||||||
@ -164,14 +164,17 @@ export class OB11Constructor {
|
|||||||
chatType: msg.chatType,
|
chatType: msg.chatType,
|
||||||
}, element.replyElement.replayMsgSeq, 1, true, true)).msgList.find(msg => msg.msgRandom === records.msgRandom);
|
}, element.replyElement.replayMsgSeq, 1, true, true)).msgList.find(msg => msg.msgRandom === records.msgRandom);
|
||||||
if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) {
|
if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) {
|
||||||
if (!replyMsg && records.msgRandom === '0') oldMsgFlag = true;
|
|
||||||
replyMsg = (await NTQQMsgApi.getSingleMsg(peer, element.replyElement.replayMsgSeq)).msgList[0];
|
replyMsg = (await NTQQMsgApi.getSingleMsg(peer, element.replyElement.replayMsgSeq)).msgList[0];
|
||||||
}
|
}
|
||||||
if (msg.peerUin == '284840486') {
|
if (msg.peerUin == '284840486') {
|
||||||
//合并消息内侧 消息具体定位不到
|
//合并消息内侧 消息具体定位不到
|
||||||
}
|
}
|
||||||
if ((!replyMsg || (records.msgRandom !== replyMsg.msgRandom && !oldMsgFlag || (oldMsgFlag && records.msgSeq !== replyMsg.msgSeq))) && msg.peerUin !== '284840486') {
|
if ((!replyMsg || records.msgRandom !== replyMsg.msgRandom) && msg.peerUin !== '284840486') {
|
||||||
throw new Error('回复消息消息验证失败');
|
const replyMsgList = (await NTQQMsgApi.getMsgExBySeq(peer, records.msgSeq)).msgList;
|
||||||
|
if (replyMsgList.length < 1) {
|
||||||
|
throw new Error('回复消息消息验证失败');
|
||||||
|
}
|
||||||
|
replyMsg = replyMsgList.filter(e => e.msgSeq == records.msgSeq).sort((a, b) => parseInt(a.msgTime) - parseInt(b.msgTime))[0];
|
||||||
}
|
}
|
||||||
message_data['data']['id'] = MessageUnique.createMsg({
|
message_data['data']['id'] = MessageUnique.createMsg({
|
||||||
peerUid: msg.peerUid,
|
peerUid: msg.peerUid,
|
||||||
@ -419,16 +422,15 @@ export class OB11Constructor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//log("group msg", msg);
|
//log("group msg", msg);
|
||||||
// Mlikiowa V2.0.34 Refactor Todo
|
if (msg.senderUin && msg.senderUin !== '0') {
|
||||||
// if (msg.senderUin && msg.senderUin !== '0') {
|
const member = await NTQQGroupApi.getGroupMember(msg.peerUid, msg.senderUin);
|
||||||
// const member = await getGroupMember(msg.peerUid, msg.senderUin);
|
if (member && member.cardName !== msg.sendMemberName) {
|
||||||
// if (member && member.cardName !== msg.sendMemberName) {
|
const newCardName = msg.sendMemberName || '';
|
||||||
// const newCardName = msg.sendMemberName || '';
|
const event = new OB11GroupCardEvent(core, parseInt(msg.peerUid), parseInt(msg.senderUin), newCardName, member.cardName);
|
||||||
// const event = new OB11GroupCardEvent(parseInt(msg.peerUid), parseInt(msg.senderUin), newCardName, member.cardName);
|
member.cardName = newCardName;
|
||||||
// member.cardName = newCardName;
|
return event;
|
||||||
// return event;
|
}
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
for (const element of msg.elements) {
|
for (const element of msg.elements) {
|
||||||
const grayTipElement = element.grayTipElement;
|
const grayTipElement = element.grayTipElement;
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import {
|
|||||||
NapCatCore,
|
NapCatCore,
|
||||||
RawMessage,
|
RawMessage,
|
||||||
SendStatusType,
|
SendStatusType,
|
||||||
|
GroupMemberRole,
|
||||||
} from '@/core';
|
} from '@/core';
|
||||||
import { OB11Config, OB11ConfigLoader } from '@/onebot/helper/config';
|
import { OB11Config, OB11ConfigLoader } from '@/onebot/helper/config';
|
||||||
import { OneBotApiContextType } from '@/onebot/types';
|
import { OneBotApiContextType } from '@/onebot/types';
|
||||||
@ -413,6 +414,29 @@ export class NapCatOneBot11Adapter {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
groupListener.onMemberInfoChange = async (groupCode, changeType, members) => {
|
||||||
|
//this.context.logger.logDebug('收到群成员信息变动通知', groupCode, changeType);
|
||||||
|
if (changeType === 0) {
|
||||||
|
const existMembers = this.core.apis.GroupApi.groupMemberCache.get(groupCode);
|
||||||
|
if (!existMembers) return;
|
||||||
|
members.forEach((member) => {
|
||||||
|
const existMember = existMembers.get(member.uid);
|
||||||
|
if (!existMember?.isChangeRole) return;
|
||||||
|
this.context.logger.logDebug('变动管理员获取成功');
|
||||||
|
const groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent(
|
||||||
|
this.core,
|
||||||
|
parseInt(groupCode),
|
||||||
|
parseInt(member.uin),
|
||||||
|
member.role === GroupMemberRole.admin ? 'set' : 'unset',
|
||||||
|
);
|
||||||
|
this.networkManager.emitEvent(groupAdminNoticeEvent)
|
||||||
|
.catch(e => this.context.logger.logError('处理群管理员变动失败', e));
|
||||||
|
existMember.isChangeRole = false;
|
||||||
|
this.context.logger.logDebug('群管理员变动处理完毕');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.context.session.getGroupService().addKernelGroupListener(
|
this.context.session.getGroupService().addKernelGroupListener(
|
||||||
new this.context.wrapper.NodeIKernelGroupListener(proxiedListenerOf(groupListener, this.context.logger)),
|
new this.context.wrapper.NodeIKernelGroupListener(proxiedListenerOf(groupListener, this.context.logger)),
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user