Skip to content

Commit

Permalink
fix: 使用 richHeader 之后无法 /q 来自 QQ 的消息
Browse files Browse the repository at this point in the history
只对新的消息有效
  • Loading branch information
clansty committed Feb 1, 2024
1 parent 3966a00 commit bd8092c
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 48 deletions.
33 changes: 17 additions & 16 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -60,22 +60,23 @@ model QqBot {
}

model Message {
id Int @id @default(autoincrement())
qqRoomId BigInt @db.BigInt
qqSenderId BigInt @db.BigInt
time Int
brief String?
seq Int
rand BigInt @db.BigInt
pktnum Int
tgChatId BigInt @db.BigInt
tgMsgId Int
instanceId Int @default(0)
instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
tgFileId BigInt? @db.BigInt
tgMessageText String?
nick String? // /抱 的时候会用到
tgSenderId BigInt? @db.BigInt
id Int @id @default(autoincrement())
qqRoomId BigInt @db.BigInt
qqSenderId BigInt @db.BigInt
time Int
brief String?
seq Int
rand BigInt @db.BigInt
pktnum Int
tgChatId BigInt @db.BigInt
tgMsgId Int
instanceId Int @default(0)
instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
tgFileId BigInt? @db.BigInt
tgMessageText String?
nick String? // /抱 的时候会用到
tgSenderId BigInt? @db.BigInt
richHeaderUsed Boolean @default(false)
@@index([qqRoomId, qqSenderId, seq, rand, pktnum, time, instanceId])
@@index([tgChatId, tgMsgId, instanceId])
Expand Down
54 changes: 25 additions & 29 deletions src/controllers/ForwardController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,36 +61,32 @@ export default class ForwardController {
});
if (existed) return;
// 开始转发过程
let tgMessages: Api.Message | Api.Message[] = await this.forwardService.forwardFromQq(event, pair);
if (!tgMessages) return;
if (!Array.isArray(tgMessages)) {
tgMessages = [tgMessages];
}
for (const tgMessage of tgMessages) {
// 更新数据库
await db.message.create({
data: {
qqRoomId: pair.qqRoomId,
qqSenderId: event.sender.user_id,
time: event.time,
brief: event.raw_message,
seq: event.seq,
rand: event.rand,
pktnum: event.pktnum,
tgChatId: pair.tgId,
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,
let { tgMessage, richHeaderUsed } = await this.forwardService.forwardFromQq(event, pair);
if (!tgMessage) return;
// 更新数据库
await db.message.create({
data: {
qqRoomId: pair.qqRoomId,
qqSenderId: event.sender.user_id,
time: event.time,
brief: event.raw_message,
seq: event.seq,
rand: event.rand,
pktnum: event.pktnum,
tgChatId: pair.tgId,
tgMsgId: tgMessage.id,
instanceId: this.instance.id,
tgMessageText: tgMessage.message,
tgFileId: forwardHelper.getMessageDocumentId(tgMessage),
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) {
this.log.error('处理 QQ 消息时遇到问题', e);
Expand Down
2 changes: 1 addition & 1 deletion src/controllers/QuotLyController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ export default class {
title: message.nick,
photo: { url: getAvatarUrl(message.qqSenderId) },
};
if (message.qqRoomId > 0) {
if (message.qqRoomId > 0 || message.richHeaderUsed) {
quoteMessage.text = message.tgMessageText;
}
else if (message.tgMessageText.includes('\n')) {
Expand Down
4 changes: 2 additions & 2 deletions src/services/ForwardService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ export default class ForwardService {
}

tempFiles.forEach(it => it.cleanup());
return tgMessage;
return { tgMessage, richHeaderUsed };
}
catch (e) {
this.log.error('从 QQ 到 TG 的消息转发失败', e);
Expand All @@ -439,7 +439,7 @@ export default class ForwardService {
}
catch {
}
return null;
return {};
}
}

Expand Down

0 comments on commit bd8092c

Please sign in to comment.