From 6ce58f6f681769c10c423a81ae9f90c78987f7b7 Mon Sep 17 00:00:00 2001 From: Clansty Date: Fri, 12 Jul 2024 20:03:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20napcat=20=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/prisma/schema.prisma | 6 ++-- main/src/client/NapCatClient/client.ts | 4 +-- main/src/client/OicqClient.ts | 2 +- main/src/controllers/SetupController.ts | 3 +- main/src/models/Instance.ts | 37 +++++++++++++------------ 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/main/prisma/schema.prisma b/main/prisma/schema.prisma index 9314746..e384d16 100644 --- a/main/prisma/schema.prisma +++ b/main/prisma/schema.prisma @@ -54,9 +54,9 @@ enum QqBotType { model QqBot { id Int @id @default(autoincrement()) - uin BigInt @default(0) - password String @default("") - platform Int @default(0) + uin BigInt? @default(0) + password String? @default("") + platform Int? @default(0) Instance Instance[] signApi String? signVer String? diff --git a/main/src/client/NapCatClient/client.ts b/main/src/client/NapCatClient/client.ts index bafa2c5..0285045 100644 --- a/main/src/client/NapCatClient/client.ts +++ b/main/src/client/NapCatClient/client.ts @@ -47,12 +47,12 @@ export class NapCatClient extends QQClient { const echo = `${new Date().getTime()}${random.int(100000, 999999)}`; this.echoMap[echo] = { resolve, reject }; this.ws.send(JSON.stringify({ action, params, echo })); - this.logger.trace('send', JSON.stringify({ action, params, echo })); + this.logger.debug('send', JSON.stringify({ action, params, echo })); }); } private async handleWebSocketMessage(message: string) { - this.logger.trace('receive', message); + this.logger.debug('receive', message); const data = JSON.parse(message) as WSReceiveHandler[keyof WSReceiveHandler] & { echo: string; status: 'ok' | 'error'; data: any; message: string }; if (data.echo) { const promise = this.echoMap[data.echo]; diff --git a/main/src/client/OicqClient.ts b/main/src/client/OicqClient.ts index 5731b69..5659686 100644 --- a/main/src/client/OicqClient.ts +++ b/main/src/client/OicqClient.ts @@ -26,7 +26,7 @@ import { escapeXml, gzip, timestamp } from '@icqqjs/icqq/lib/common'; import { pb } from '@icqqjs/icqq/lib/core'; import env from '../models/env'; import { - CreateQQClientParamsBase, Friend, FriendIncreaseEvent, + CreateQQClientParamsBase, Friend, FriendIncreaseEvent, Group, GroupMemberDecreaseEvent, GroupMemberIncreaseEvent, MessageEvent, MessageRecallEvent, PokeEvent, diff --git a/main/src/controllers/SetupController.ts b/main/src/controllers/SetupController.ts index 3f72bd2..70ab641 100644 --- a/main/src/controllers/SetupController.ts +++ b/main/src/controllers/SetupController.ts @@ -78,7 +78,7 @@ export default class SetupController { if (this.instance.qq) { await this.setupService.informOwner('正在登录已设置好的 QQ'); this.oicq = await QQClient.create({ - type: 'oicq', + type: this.instance.qq.type, id: this.instance.qq.id, uin: Number(this.instance.qq.uin), password: this.instance.qq.password, @@ -94,6 +94,7 @@ export default class SetupController { '请使用此软件验证并输入 Ticket', ); }, + wsUrl: this.instance.qq.wsUrl, }); } else diff --git a/main/src/models/Instance.ts b/main/src/models/Instance.ts index 3b176e3..43b56fc 100644 --- a/main/src/models/Instance.ts +++ b/main/src/models/Instance.ts @@ -91,23 +91,23 @@ export default class Instance { this._flags = dbEntry.flags; } - private async init(botToken?: string) { - this.log.debug('正在登录 TG Bot'); - if (this.botSessionId) { - this.tgBot = await Telegram.connect(this._botSessionId); - } - else { - const token = this.id === 0 ? env.TG_BOT_TOKEN : botToken; - if (!token) { - throw new Error('botToken 未指定'); - } - this.tgBot = await Telegram.create({ - botAuthToken: token, - }); - this.botSessionId = this.tgBot.sessionId; - } - this.log.info('TG Bot 登录完成'); + private init(botToken?: string) { (async () => { + this.log.debug('正在登录 TG Bot'); + if (this.botSessionId) { + this.tgBot = await Telegram.connect(this._botSessionId); + } + else { + const token = this.id === 0 ? env.TG_BOT_TOKEN : botToken; + if (!token) { + throw new Error('botToken 未指定'); + } + this.tgBot = await Telegram.create({ + botAuthToken: token, + }); + this.botSessionId = this.tgBot.sessionId; + } + this.log.info('TG Bot 登录完成'); if (!this.isSetup || !this._owner) { this.log.info('当前服务器未配置,请向 Bot 发送 /setup 来设置'); this.setupController = new SetupController(this, this.tgBot); @@ -122,7 +122,7 @@ export default class Instance { this._ownerChat = await this.tgBot.getChat(this.owner); this.log.debug('正在登录 OICQ'); this.oicq = await QQClient.create({ - type: 'oicq', + type: this.qq.type, id: this.qq.id, uin: Number(this.qq.uin), password: this.qq.password, @@ -138,6 +138,7 @@ export default class Instance { '请使用此软件验证并输入 Ticket', ); }, + wsUrl: this.qq.wsUrl, }); this.log.info('OICQ 登录完成'); } @@ -170,7 +171,7 @@ export default class Instance { public async login(botToken?: string) { await this.load(); - await this.init(botToken); + this.init(botToken); } public static async start(instanceId: number, botToken?: string) {