2022-03-06 12:24:19 +00:00
|
|
|
import DeleteMessageService from '../services/DeleteMessageService';
|
|
|
|
import Telegram from '../client/Telegram';
|
|
|
|
import OicqClient from '../client/OicqClient';
|
|
|
|
import { Api } from 'telegram';
|
2022-12-23 02:58:01 +00:00
|
|
|
import { FriendRecallEvent, GroupRecallEvent } from 'oicq';
|
2022-03-07 08:36:13 +00:00
|
|
|
import Instance from '../models/Instance';
|
2022-03-06 12:24:19 +00:00
|
|
|
|
|
|
|
export default class DeleteMessageController {
|
|
|
|
private readonly deleteMessageService: DeleteMessageService;
|
|
|
|
|
2022-03-07 08:36:13 +00:00
|
|
|
constructor(private readonly instance: Instance,
|
|
|
|
private readonly tgBot: Telegram,
|
2022-03-06 12:24:19 +00:00
|
|
|
private readonly oicq: OicqClient) {
|
2022-03-07 10:14:45 +00:00
|
|
|
this.deleteMessageService = new DeleteMessageService(this.instance, tgBot);
|
2022-03-06 12:24:19 +00:00
|
|
|
tgBot.addNewMessageEventHandler(this.onTelegramMessage);
|
|
|
|
tgBot.addEditedMessageEventHandler(this.onTelegramEditMessage);
|
2022-03-06 13:07:08 +00:00
|
|
|
oicq.on('notice.friend.recall', this.onQqFriendRecall);
|
|
|
|
oicq.on('notice.group.recall', this.onQqGroupRecall);
|
2022-03-06 12:24:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private onTelegramMessage = async (message: Api.Message) => {
|
2022-03-07 10:05:14 +00:00
|
|
|
const pair = this.instance.forwardPairs.find(message.chat);
|
2022-03-06 12:24:19 +00:00
|
|
|
if (!pair) return false;
|
|
|
|
// TODO: 可以做成 DeleteMessageController 之类
|
|
|
|
if (message.message?.startsWith('/rm')) {
|
|
|
|
// 撤回消息
|
|
|
|
await this.deleteMessageService.handleTelegramMessageRm(message, pair);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
private onTelegramEditMessage = async (message: Api.Message) => {
|
2022-03-17 03:24:02 +00:00
|
|
|
if (message.senderId?.eq(this.instance.botMe.id)) return true;
|
2022-03-07 10:05:14 +00:00
|
|
|
const pair = this.instance.forwardPairs.find(message.chat);
|
2022-03-06 12:24:19 +00:00
|
|
|
if (!pair) return;
|
2022-12-23 12:00:04 +00:00
|
|
|
if (await this.deleteMessageService.isInvalidEdit(message, pair)) {
|
|
|
|
console.log('invalid edit');
|
|
|
|
return true;
|
|
|
|
}
|
2022-03-06 12:24:19 +00:00
|
|
|
await this.deleteMessageService.telegramDeleteMessage(message.id, pair);
|
|
|
|
return await this.onTelegramMessage(message);
|
|
|
|
};
|
2022-03-06 13:07:08 +00:00
|
|
|
|
|
|
|
private onQqFriendRecall = async (event: FriendRecallEvent) => {
|
2022-03-07 10:05:14 +00:00
|
|
|
const pair = this.instance.forwardPairs.find(event.friend);
|
2022-03-07 13:34:46 +00:00
|
|
|
if (!pair) return;
|
2022-03-06 13:07:08 +00:00
|
|
|
await this.deleteMessageService.handleQqRecall(event, pair);
|
|
|
|
};
|
|
|
|
|
|
|
|
private onQqGroupRecall = async (event: GroupRecallEvent) => {
|
2022-03-07 10:05:14 +00:00
|
|
|
const pair = this.instance.forwardPairs.find(event.group);
|
2022-03-07 13:34:46 +00:00
|
|
|
if (!pair) return;
|
2022-03-06 13:07:08 +00:00
|
|
|
await this.deleteMessageService.handleQqRecall(event, pair);
|
|
|
|
};
|
2022-03-06 15:32:31 +00:00
|
|
|
|
2022-03-06 12:24:19 +00:00
|
|
|
}
|