Merge pull request #300 from cnxysoft/upmain

fix: 多处修复
This commit is contained in:
Alen 2024-08-25 09:47:07 +08:00 committed by GitHub
commit 684a702638
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 52 additions and 6 deletions

View File

@ -318,7 +318,7 @@ export class NTQQGroupApi {
throw ('获取群成员列表出错,' + result.errMsg); throw ('获取群成员列表出错,' + result.errMsg);
} }
//logDebug(`获取群(${groupQQ})成员列表结果:`, `finish: ${result.result.finish}`); //, Array.from(result.result.infos.values())); this.context.logger.logDebug(`获取群(${groupQQ})成员列表结果:`, `members: ${result.result.infos.size}`); //, Array.from(result.result.infos.values()));
return result.result.infos; return result.result.infos;
/* /*
console.log(sceneId); console.log(sceneId);

View File

@ -197,12 +197,12 @@ export class NapCatCore {
} }
}; };
this.context.session.getGroupService().addKernelGroupListener( this.context.session.getGroupService().addKernelGroupListener(
proxiedListenerOf(profileListener, this.context.logger) as any proxiedListenerOf(groupListener, this.context.logger) as any
); );
} }
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) {
this.context.logger.log(`${groupCode} ${memberNew.nick} 角色变更为 ${memberNew.role === 3 ? '管理员' : '群员'}`); this.context.logger.logDebug(`${groupCode} ${memberNew.nick} 角色变更为 ${memberNew.role === 3 ? '管理员' : '群员'}`);
return true; return true;
} }
return false; return false;

View File

@ -43,4 +43,48 @@ export class ProfileListener implements IProfileListener {
onStrangerRemarkChanged(...args: unknown[]) { onStrangerRemarkChanged(...args: unknown[]) {
} }
onMemberListChange(...args: unknown[]){
}
onMemberInfoChange(...args: unknown[]){
}
onGroupListUpdate(...args: unknown[]){
}
onGroupAllInfoChange(...args: unknown[]){
}
onGroupDetailInfoChange(...args: unknown[]){
}
onGroupConfMemberChange(...args: unknown[]){
}
onGroupExtListUpdate(...args: unknown[]){
}
onGroupNotifiesUpdated(...args: unknown[]){
}
onGroupNotifiesUnreadCountUpdated(...args: unknown[]){
}
onGroupMemberLevelInfoChange(...args: unknown[]){
}
onGroupBulletinChange(...args: unknown[]){
}
} }

View File

@ -249,8 +249,9 @@ export class NapCatOneBot11Adapter {
} }
}; };
const msgIdSend = new LRUCache<string, boolean>(100); const msgIdSend = new LRUCache<string, boolean>(100);
const recallMsgs = new LRUCache<string, boolean>(100);
msgListener.onMsgInfoListUpdate = async msgList => { msgListener.onMsgInfoListUpdate = async msgList => {
this.emitRecallMsg(msgList) this.emitRecallMsg(msgList, recallMsgs)
.catch(e => this.context.logger.logError('处理消息失败', e)); .catch(e => this.context.logger.logError('处理消息失败', e));
for (const msg of msgList.filter(e => e.senderUin == this.core.selfInfo.uin)) { for (const msg of msgList.filter(e => e.senderUin == this.core.selfInfo.uin)) {
@ -492,10 +493,11 @@ export class NapCatOneBot11Adapter {
}).catch(e => this.context.logger.logError('constructPrivateEvent error: ', e)); }).catch(e => this.context.logger.logError('constructPrivateEvent error: ', e));
} }
private async emitRecallMsg(msgList: RawMessage[]) { private async emitRecallMsg(msgList: RawMessage[], cache: LRUCache<string, boolean>) {
for (const message of msgList) { for (const message of msgList) {
// log("message update", message.sendStatus, message.msgId, message.msgSeq) // log("message update", message.sendStatus, message.msgId, message.msgSeq)
if (message.recallTime != '0') { //todo: 这个判断方法不太好,应该使用灰色消息元素来判断? if (message.recallTime != '0' && !cache.get(message.msgId)) { //todo: 这个判断方法不太好,应该使用灰色消息元素来判断?
cache.put(message.msgId, true)
// 撤回消息上报 // 撤回消息上报
const oriMessageId = MessageUnique.getShortIdByMsgId(message.msgId); const oriMessageId = MessageUnique.getShortIdByMsgId(message.msgId);
if (!oriMessageId) { if (!oriMessageId) {