Merge remote-tracking branch 'origin/v2' into v2

# Conflicts:
#	src/onebot/action/extends/GetFriendWithCategory.ts
This commit is contained in:
Wesley F. Young 2024-08-11 00:46:17 +08:00
commit 40362590c8
7 changed files with 37 additions and 12 deletions

View File

@ -1,6 +1,6 @@
import { OB11Constructor } from '@/onebot/helper/data';
import BaseAction from '../BaseAction';
import { ActionName } from '../types';
import { OB11Constructor } from '@/onebot/helper/data';
export class GetFriendWithCategory extends BaseAction<void, any> {
actionName = ActionName.GetFriendsWithCategory;

View File

@ -3,12 +3,13 @@ import { OB11Config } from './helper/config';
import { NapCatPathWrapper } from '@/common/framework/napcat';
import { OneBotApiContextType } from './types/adapter';
import { OneBotFriendApi, OneBotGroupApi, OneBotUserApi } from './api';
import { OB11NetworkManager } from '@/onebot/network';
import { OB11NetworkManager, OB11PassiveHttpAdapter } from '@/onebot/network';
import { OB11InputStatusEvent } from '@/onebot/event/notice/OB11InputStatusEvent';
import { MessageUnique } from '@/common/utils/MessageUnique';
import { OB11Constructor } from '@/onebot/helper/data';
import { logOB11Message } from '@/onebot/helper/log';
import { proxiedListenerOf } from '@/common/utils/proxy-handler';
import { createActionMap } from './action';
//OneBot实现类
export class NapCatOneBot11Adapter {
@ -50,6 +51,11 @@ export class NapCatOneBot11Adapter {
this.context.logger.setLogSelfInfo(selfInfo);
}).catch(this.context.logger.logError);
this.context.logger.log(`[Notice] [OneBot11] ${serviceInfo}`);
let actions = createActionMap(this, this.core);
let OB11NetworkManagerWrap = new OB11NetworkManager();
OB11NetworkManagerWrap.registerAdapter(new OB11PassiveHttpAdapter(ob11Config.http.port, ob11Config.token, this.core, this));
OB11NetworkManagerWrap.registerAllActions(actions);
OB11NetworkManagerWrap.openAllAdapters();
// Todo 开始启动NetWork
await this.initMsgListener();

View File

@ -28,7 +28,8 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter {
registerHeartBeat() {
// HttpPost 心跳
}
registerActionMap(actionMap: Map<string, BaseAction<any, any>>) {
}
registerAction<T extends BaseAction<P, R>, P, R>(action: T) {
// Passive http adapter does not need to register actions
}

View File

@ -24,7 +24,9 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
this.coreContext = coreContext;
this.onebotContext = onebotContext;
}
registerActionMap(actionMap: Map<string, BaseAction<any, any>>) {
this.actionMap = actionMap;
}
registerHeartBeat() {
if (this.connection) {
this.heartbeatTimer = setInterval(() => {

View File

@ -7,6 +7,8 @@ export type OB11EmitEventContent = OB11BaseEvent | OB11Message;
export interface IOB11NetworkAdapter {
registerAction<T extends BaseAction<P, R>, P, R>(action: T): void;
registerActionMap(actionMap: Map<string, BaseAction<any, any>>): void;
onEvent<T extends OB11EmitEventContent>(event: T): void;
open(): void | Promise<void>;
@ -16,11 +18,15 @@ export interface IOB11NetworkAdapter {
export class OB11NetworkManager {
adapters: IOB11NetworkAdapter[] = [];
async getAllAdapters() {
return this.adapters;
}
async openAllAdapters() {
return Promise.all(this.adapters.map(adapter => adapter.open()));
}
async registerAllActions(actions: Map<string,BaseAction<any, any>>) {
return Promise.all(this.adapters.map(adapter => adapter.registerActionMap(actions)));
}
async emitEvent(event: OB11EmitEventContent) {
// Mlikiowa V2.0.0 Refactor Todo
return Promise.all(this.adapters.map(adapter => adapter.onEvent(event)));

View File

@ -3,6 +3,8 @@ import { OB11BaseEvent } from '@/onebot/event/OB11BaseEvent';
import BaseAction from '@/onebot/action/BaseAction';
import express, { Express, Request, Response } from 'express';
import http from 'http';
import { NapCatCore } from '@/core';
import { NapCatOneBot11Adapter } from '../main';
export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter {
private app: Express | undefined;
@ -12,16 +14,22 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter {
private actionMap: Map<string, BaseAction<any, any>> = new Map();
private port: number;
token: string;
coreContext: NapCatCore;
onebotContext: NapCatOneBot11Adapter;
constructor(port: number, token: string) {
constructor(port: number, token: string, coreContext: NapCatCore, onebotContext: NapCatOneBot11Adapter) {
this.port = port;
this.token = token;
this.coreContext = coreContext;
this.onebotContext = onebotContext;
}
registerAction<T extends BaseAction<P, R>, P, R>(action: T) {
this.actionMap.set(action.actionName, action);
}
registerActionMap(actionMap: Map<string, BaseAction<any, any>>) {
this.actionMap = actionMap;
}
registerHeartBeat() {
//空心跳
}
@ -32,7 +40,7 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter {
open() {
if (this.hasBeenClosed) {
throw new Error('Cannot open a closed HTTP server');
this.coreContext.context.logger.logError('Cannot open a closed HTTP server');
}
if (!this.isOpen) {
this.initializeServer();
@ -46,10 +54,10 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter {
this.app.use(express.json());
this.app.all('*', this.handleRequest.bind(this));
this.app.all('/*', this.handleRequest.bind(this));
this.server.listen(this.port, () => {
console.log(`HTTP server listening on port ${this.port}`);
this.coreContext.context.logger.log(`HTTP server listening on port ${this.port}`);
});
}

View File

@ -44,7 +44,9 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter {
});
});
}
registerActionMap(actionMap: Map<string, BaseAction<any, any>>) {
this.actionMap = actionMap;
}
registerAction<T extends BaseAction<P, R>, P, R>(action: T) {
this.actionMap.set(action.actionName, action);
}