mirror of https://github.com/Nofated095/Q2TG.git
parent
3966a003b1
commit
bd8092c311
|
@ -60,22 +60,23 @@ model QqBot {
|
||||||
}
|
}
|
||||||
|
|
||||||
model Message {
|
model Message {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
qqRoomId BigInt @db.BigInt
|
qqRoomId BigInt @db.BigInt
|
||||||
qqSenderId BigInt @db.BigInt
|
qqSenderId BigInt @db.BigInt
|
||||||
time Int
|
time Int
|
||||||
brief String?
|
brief String?
|
||||||
seq Int
|
seq Int
|
||||||
rand BigInt @db.BigInt
|
rand BigInt @db.BigInt
|
||||||
pktnum Int
|
pktnum Int
|
||||||
tgChatId BigInt @db.BigInt
|
tgChatId BigInt @db.BigInt
|
||||||
tgMsgId Int
|
tgMsgId Int
|
||||||
instanceId Int @default(0)
|
instanceId Int @default(0)
|
||||||
instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
||||||
tgFileId BigInt? @db.BigInt
|
tgFileId BigInt? @db.BigInt
|
||||||
tgMessageText String?
|
tgMessageText String?
|
||||||
nick String? // /抱 的时候会用到
|
nick String? // /抱 的时候会用到
|
||||||
tgSenderId BigInt? @db.BigInt
|
tgSenderId BigInt? @db.BigInt
|
||||||
|
richHeaderUsed Boolean @default(false)
|
||||||
|
|
||||||
@@index([qqRoomId, qqSenderId, seq, rand, pktnum, time, instanceId])
|
@@index([qqRoomId, qqSenderId, seq, rand, pktnum, time, instanceId])
|
||||||
@@index([tgChatId, tgMsgId, instanceId])
|
@@index([tgChatId, tgMsgId, instanceId])
|
||||||
|
|
|
@ -61,36 +61,32 @@ export default class ForwardController {
|
||||||
});
|
});
|
||||||
if (existed) return;
|
if (existed) return;
|
||||||
// 开始转发过程
|
// 开始转发过程
|
||||||
let tgMessages: Api.Message | Api.Message[] = await this.forwardService.forwardFromQq(event, pair);
|
let { tgMessage, richHeaderUsed } = await this.forwardService.forwardFromQq(event, pair);
|
||||||
if (!tgMessages) return;
|
if (!tgMessage) return;
|
||||||
if (!Array.isArray(tgMessages)) {
|
// 更新数据库
|
||||||
tgMessages = [tgMessages];
|
await db.message.create({
|
||||||
}
|
data: {
|
||||||
for (const tgMessage of tgMessages) {
|
qqRoomId: pair.qqRoomId,
|
||||||
// 更新数据库
|
qqSenderId: event.sender.user_id,
|
||||||
await db.message.create({
|
time: event.time,
|
||||||
data: {
|
brief: event.raw_message,
|
||||||
qqRoomId: pair.qqRoomId,
|
seq: event.seq,
|
||||||
qqSenderId: event.sender.user_id,
|
rand: event.rand,
|
||||||
time: event.time,
|
pktnum: event.pktnum,
|
||||||
brief: event.raw_message,
|
tgChatId: pair.tgId,
|
||||||
seq: event.seq,
|
tgMsgId: tgMessage.id,
|
||||||
rand: event.rand,
|
instanceId: this.instance.id,
|
||||||
pktnum: event.pktnum,
|
tgMessageText: tgMessage.message,
|
||||||
tgChatId: pair.tgId,
|
tgFileId: forwardHelper.getMessageDocumentId(tgMessage),
|
||||||
tgMsgId: tgMessage.id,
|
|
||||||
instanceId: this.instance.id,
|
|
||||||
tgMessageText: tgMessage.message,
|
|
||||||
tgFileId: forwardHelper.getMessageDocumentId(tgMessage),
|
|
||||||
nick: event.nickname,
|
|
||||||
tgSenderId: BigInt(this.tgBot.me.id.toString()),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
await this.forwardService.addToZinc(pair.dbId, tgMessage.id, {
|
|
||||||
text: event.raw_message,
|
|
||||||
nick: event.nickname,
|
nick: event.nickname,
|
||||||
});
|
tgSenderId: BigInt(this.tgBot.me.id.toString()),
|
||||||
}
|
richHeaderUsed,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await this.forwardService.addToZinc(pair.dbId, tgMessage.id, {
|
||||||
|
text: event.raw_message,
|
||||||
|
nick: event.nickname,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
this.log.error('处理 QQ 消息时遇到问题', e);
|
this.log.error('处理 QQ 消息时遇到问题', e);
|
||||||
|
|
|
@ -163,7 +163,7 @@ export default class {
|
||||||
title: message.nick,
|
title: message.nick,
|
||||||
photo: { url: getAvatarUrl(message.qqSenderId) },
|
photo: { url: getAvatarUrl(message.qqSenderId) },
|
||||||
};
|
};
|
||||||
if (message.qqRoomId > 0) {
|
if (message.qqRoomId > 0 || message.richHeaderUsed) {
|
||||||
quoteMessage.text = message.tgMessageText;
|
quoteMessage.text = message.tgMessageText;
|
||||||
}
|
}
|
||||||
else if (message.tgMessageText.includes('\n')) {
|
else if (message.tgMessageText.includes('\n')) {
|
||||||
|
|
|
@ -430,7 +430,7 @@ export default class ForwardService {
|
||||||
}
|
}
|
||||||
|
|
||||||
tempFiles.forEach(it => it.cleanup());
|
tempFiles.forEach(it => it.cleanup());
|
||||||
return tgMessage;
|
return { tgMessage, richHeaderUsed };
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
this.log.error('从 QQ 到 TG 的消息转发失败', e);
|
this.log.error('从 QQ 到 TG 的消息转发失败', e);
|
||||||
|
@ -439,7 +439,7 @@ export default class ForwardService {
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
}
|
}
|
||||||
return null;
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue