fix: ForwardController 中可能的 UnhandledException

This commit is contained in:
Clansty 2022-03-05 12:27:49 +08:00
parent d3e266d80f
commit 80473dde21
No known key found for this signature in database
GPG Key ID: 05F8479BA63A8E92
1 changed files with 50 additions and 44 deletions

View File

@ -2,12 +2,14 @@ import Telegram from '../client/Telegram';
import OicqClient from '../client/OicqClient'; import OicqClient from '../client/OicqClient';
import ForwardService from '../services/ForwardService'; import ForwardService from '../services/ForwardService';
import forwardPairs from '../providers/forwardPairs'; import forwardPairs from '../providers/forwardPairs';
import { Friend, Group, GroupMessageEvent, PrivateMessageEvent } from 'oicq'; import { GroupMessageEvent, PrivateMessageEvent } from 'oicq';
import db from '../providers/db'; import db from '../providers/db';
import { Api } from 'telegram'; import { Api } from 'telegram';
import { getLogger } from 'log4js';
export default class ForwardController { export default class ForwardController {
private readonly forwardService: ForwardService; private readonly forwardService: ForwardService;
private readonly log = getLogger('ForwardController');
constructor(private readonly tgBot: Telegram, constructor(private readonly tgBot: Telegram,
private readonly tgUser: Telegram, private readonly tgUser: Telegram,
@ -19,54 +21,58 @@ export default class ForwardController {
} }
private onQqMessage = async (event: PrivateMessageEvent | GroupMessageEvent) => { private onQqMessage = async (event: PrivateMessageEvent | GroupMessageEvent) => {
let target: Friend | Group; try {
if (event.message_type === 'private') { const target = event.message_type === 'private' ? event.friend : event.group;
target = event.friend; const pair = forwardPairs.find(target);
if (!pair) return;
const tgMessage = await this.forwardService.forwardFromQq(event, pair);
if (tgMessage) {
// 更新数据库
await db.message.create({
data: {
qqRoomId: pair.qqRoomId,
qqSenderId: event.user_id,
time: event.time,
brief: event.raw_message,
seq: event.seq,
rand: event.rand,
pktnum: event.pktnum,
tgChatId: Number(pair.tg.id),
tgMsgId: tgMessage.id,
},
});
}
} }
else { catch (e) {
target = event.group; this.log.error('处理 QQ 消息时遇到问题', e);
}
const pair = forwardPairs.find(target);
if (!pair) return;
const tgMessage = await this.forwardService.forwardFromQq(event, pair);
if (tgMessage) {
// 更新数据库
await db.message.create({
data: {
qqRoomId: pair.qqRoomId,
qqSenderId: event.user_id,
time: event.time,
brief: event.raw_message,
seq: event.seq,
rand: event.rand,
pktnum: event.pktnum,
tgChatId: Number(pair.tg.id),
tgMsgId: tgMessage.id,
},
});
} }
}; };
private onTelegramMessage = async (message: Api.Message) => { private onTelegramMessage = async (message: Api.Message) => {
const pair = forwardPairs.find(message.chat); try{
if (!pair) return; const pair = forwardPairs.find(message.chat);
const qqMessageSent = await this.forwardService.forwardFromTelegram(message, pair); if (!pair) return;
// 返回的信息不太够 const qqMessageSent = await this.forwardService.forwardFromTelegram(message, pair);
if (qqMessageSent) { // 返回的信息不太够
// 更新数据库 if (qqMessageSent) {
await db.message.create({ // 更新数据库
data: { await db.message.create({
qqRoomId: pair.qqRoomId, data: {
qqSenderId: this.oicq.uin, qqRoomId: pair.qqRoomId,
time: qqMessageSent.time, qqSenderId: this.oicq.uin,
brief: qqMessageSent.brief, time: qqMessageSent.time,
seq: qqMessageSent.seq, brief: qqMessageSent.brief,
rand: qqMessageSent.rand, seq: qqMessageSent.seq,
pktnum: 1, rand: qqMessageSent.rand,
tgChatId: Number(pair.tg.id), pktnum: 1,
tgMsgId: message.id, tgChatId: Number(pair.tg.id),
}, tgMsgId: message.id,
}); },
});
}
}
catch (e) {
this.log.error('处理 Telegram 消息时遇到问题', e);
} }
}; };
} }