mirror of https://github.com/Nofated095/Q2TG.git
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import { Friend, Group } from 'oicq';
|
|
import TelegramChat from '../client/TelegramChat';
|
|
import OicqClient from '../client/OicqClient';
|
|
import Telegram from '../client/Telegram';
|
|
import db from './db';
|
|
import { Entity } from 'telegram/define';
|
|
|
|
export type Pair = {
|
|
qq: Friend | Group;
|
|
tg: TelegramChat;
|
|
}
|
|
|
|
class ForwardPairsInternal {
|
|
private pairs: Pair[] = [];
|
|
|
|
// 在 forwardController 创建时初始化
|
|
public async init(oicq: OicqClient, tgBot: Telegram) {
|
|
const dbValues = await db.forwardPair.findMany();
|
|
for (const i of dbValues) {
|
|
this.pairs.push({
|
|
qq: oicq.getChat(i.qqRoomId),
|
|
tg: await tgBot.getChat(i.tgChatId),
|
|
});
|
|
}
|
|
}
|
|
|
|
public async add(qq: Friend | Group, tg: TelegramChat) {
|
|
this.pairs.push({ qq, tg });
|
|
return await db.forwardPair.create({
|
|
data: {
|
|
qqRoomId: qq instanceof Friend ? qq.user_id : -qq.group_id,
|
|
tgChatId: Number(tg.id),
|
|
},
|
|
});
|
|
}
|
|
|
|
public find(target: Friend | Group | TelegramChat | Entity | number) {
|
|
if (target instanceof Friend) {
|
|
return this.pairs.find(e => e.qq instanceof Friend && e.qq.user_id === target.user_id);
|
|
}
|
|
else if (target instanceof Group) {
|
|
return this.pairs.find(e => e.qq instanceof Group && e.qq.group_id === target.group_id);
|
|
}
|
|
else if (typeof target === 'number') {
|
|
return this.pairs.find(e => e.qq instanceof Friend && e.qq.user_id === target ||
|
|
e.qq instanceof Group && e.qq.group_id === -target);
|
|
}
|
|
else {
|
|
return this.pairs.find(e => e.tg.id.eq(target.id));
|
|
}
|
|
}
|
|
}
|
|
|
|
export default new ForwardPairsInternal();
|