diff --git a/src/onebot/main.ts b/src/onebot/main.ts index 1156c0fe..14e4a648 100644 --- a/src/onebot/main.ts +++ b/src/onebot/main.ts @@ -3,7 +3,7 @@ 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'; @@ -50,6 +50,9 @@ export class NapCatOneBot11Adapter { this.context.logger.setLogSelfInfo(selfInfo); }).catch(this.context.logger.logError); this.context.logger.log(`[Notice] [OneBot11] ${serviceInfo}`); + let OB11NetworkManagerWrap = new OB11NetworkManager(); + OB11NetworkManagerWrap.registerAdapter(new OB11PassiveHttpAdapter(ob11Config.http.port, ob11Config.token, this.core, this)); + OB11NetworkManagerWrap.openAllAdapters(); // Todo 开始启动NetWork await this.initMsgListener(); diff --git a/src/onebot/network/index.ts b/src/onebot/network/index.ts index d056c5c3..49accd94 100644 --- a/src/onebot/network/index.ts +++ b/src/onebot/network/index.ts @@ -20,7 +20,9 @@ export class OB11NetworkManager { async getAllAdapters() { return this.adapters; } - + async openAllAdapters() { + return Promise.all(this.adapters.map(adapter => adapter.open())); + } async emitEvent(event: OB11EmitEventContent) { // Mlikiowa V2.0.0 Refactor Todo return Promise.all(this.adapters.map(adapter => adapter.onEvent(event))); diff --git a/src/onebot/network/passive-http.ts b/src/onebot/network/passive-http.ts index feecbfe9..425e538c 100644 --- a/src/onebot/network/passive-http.ts +++ b/src/onebot/network/passive-http.ts @@ -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,10 +14,14 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter { private actionMap: Map> = 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, P, R>(action: T) { @@ -32,7 +38,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(); @@ -49,7 +55,7 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter { 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}`); }); }