feat: initBuddyListener

This commit is contained in:
Wesley F. Young 2024-08-11 18:11:27 +08:00
parent f25fdcdc3d
commit 4e7595d8d1

View File

@ -1,4 +1,4 @@
import { ChatType, InstanceContext, MsgListener, NapCatCore, RawMessage } from '@/core';
import { BuddyListener, BuddyReqType, ChatType, InstanceContext, MsgListener, NapCatCore, RawMessage } from '@/core';
import { OB11Config } from './helper/config';
import { NapCatPathWrapper } from '@/common/framework/napcat';
import { OneBotApiContextType } from '@/onebot/types';
@ -14,6 +14,7 @@ import { InitWebUi } from '@/webui';
import { WebUiDataRuntime } from '@/webui/src/helper/Data';
import { OB11FriendRecallNoticeEvent } from '@/onebot/event/notice/OB11FriendRecallNoticeEvent';
import { OB11GroupRecallNoticeEvent } from '@/onebot/event/notice/OB11GroupRecallNoticeEvent';
import { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest';
//OneBot实现类
export class NapCatOneBot11Adapter {
@ -86,7 +87,10 @@ export class NapCatOneBot11Adapter {
await this.networkManager.registerAllActions(actions);
await this.networkManager.openAllAdapters();
await this.initMsgListener();
this.initMsgListener();
this.initBuddyListener();
// 未对shell版本兼容
// Mlikiowa V2.0.0 Refactor Todo
WebUiDataRuntime.setQQLoginUin(selfInfo.uin.toString());
@ -97,7 +101,7 @@ export class NapCatOneBot11Adapter {
InitWebUi(this.context.logger, this.context.pathWrapper).then().catch(this.context.logger.logError);
}
async initMsgListener() {
private initMsgListener() {
const msgListener = new MsgListener();
msgListener.onInputStatusPush = async data => {
@ -155,6 +159,33 @@ export class NapCatOneBot11Adapter {
);
}
private initBuddyListener() {
const buddyListener = new BuddyListener();
buddyListener.onBuddyReqChange = reqs => {
reqs.buddyReqs.forEach(async req => {
if (!!req.isInitiator || (req.isDecide && req.reqType !== BuddyReqType.KMEINITIATORWAITPEERCONFIRM)) {
return;
}
try {
const requesterUin = await this.core.ApiContext.UserApi.getUinByUidV2(req.friendUid);
await this.networkManager.emitEvent(new OB11FriendRequestEvent(
this.core,
parseInt(requesterUin!),
req.friendUid + '|' + req.reqTime,
req.extWords
));
} catch (e) {
this.context.logger.logDebug('获取加好友者QQ号失败', e);
}
});
};
this.context.session.getBuddyService().addKernelBuddyListener(
new this.context.wrapper.NodeIBuddyListener(proxiedListenerOf(buddyListener, this.context.logger)),
);
}
private async emitMsg(message: RawMessage) {
const { debug, reportSelfMessage } = this.config;
this.context.logger.logDebug('收到新消息', message);