feat: 增加禁用在 tg 同步撤回消息的 flag

This commit is contained in:
Clansty 2024-01-12 23:29:40 +08:00
parent d6dcdd0bbf
commit 31d9f503f1
No known key found for this signature in database
GPG Key ID: 3A6BE8BAF2EDE134
4 changed files with 22 additions and 14 deletions

View File

@ -2,7 +2,7 @@ import { BigInteger } from 'big-integer';
import { Api, TelegramClient, utils } from 'telegram';
import { ButtonLike, Entity, EntityLike, MessageIDLike } from 'telegram/define';
import WaitForMessageHelper from '../helpers/WaitForMessageHelper';
import { SendMessageParams } from 'telegram/client/messages';
import { EditMessageParams, SendMessageParams } from 'telegram/client/messages';
import { CustomFile } from 'telegram/client/uploads';
import Telegram from './Telegram';
import createPaginatedInlineSelector from '../utils/paginatedInlineSelector';
@ -186,6 +186,10 @@ export default class TelegramChat {
return await this.client.deleteMessages(this.entity, messageId, { revoke: true });
}
public async editMessages(params: EditMessageParams) {
return await this.client.editMessage(this.entity, params);
}
public async inviteMember(member: EntityLike | EntityLike[]) {
if (!Array.isArray(member)) {
member = [member];

View File

@ -2,7 +2,8 @@ enum flags {
DISABLE_Q2TG = 1,
DISABLE_TG2Q = 1 << 1,
DISABLE_JOIN_NOTICE = 1 << 2,
DISABLE_POKE = 1 << 3
DISABLE_POKE = 1 << 3,
NO_DELETE_MESSAGE = 1 << 4,
}
export default flags;

View File

@ -17,8 +17,8 @@ export default class DeleteMessageController {
tgBot.addNewMessageEventHandler(this.onTelegramMessage);
tgBot.addEditedMessageEventHandler(this.onTelegramEditMessage);
tgUser.addDeletedMessageEventHandler(this.onTgDeletedMessage);
oicq.on('notice.friend.recall', this.onQqFriendRecall);
oicq.on('notice.group.recall', this.onQqGroupRecall);
oicq.on('notice.friend.recall', this.onQqRecall);
oicq.on('notice.group.recall', this.onQqRecall);
}
private onTelegramMessage = async (message: Api.Message) => {
@ -42,14 +42,8 @@ export default class DeleteMessageController {
return await this.onTelegramMessage(message);
};
private onQqFriendRecall = async (event: FriendRecallEvent) => {
const pair = this.instance.forwardPairs.find(event.friend);
if (!pair) return;
await this.deleteMessageService.handleQqRecall(event, pair);
};
private onQqGroupRecall = async (event: GroupRecallEvent) => {
const pair = this.instance.forwardPairs.find(event.group);
private onQqRecall = async (event: FriendRecallEvent | GroupRecallEvent) => {
const pair = this.instance.forwardPairs.find('friend' in event ? event.friend : event.group);
if (!pair) return;
await this.deleteMessageService.handleQqRecall(event, pair);
};

View File

@ -7,6 +7,7 @@ import Instance from '../models/Instance';
import { Pair } from '../models/Pair';
import { consumer } from '../utils/highLevelFunces';
import forwardHelper from '../helpers/forwardHelper';
import flags from '../constants/flags';
export default class DeleteMessageService {
private readonly log: Logger;
@ -143,11 +144,19 @@ export default class DeleteMessageService {
instanceId: this.instance.id,
},
});
if (message) {
if (!message) return;
if (pair.flags & flags.NO_DELETE_MESSAGE) {
await pair.tg.editMessages({
message: message.tgMsgId,
text: `<del>${message.tgMessageText}</del>\n<i>此消息已删除</i>`,
parseMode: 'html',
});
}
else {
await pair.tg.deleteMessages(message.tgMsgId);
await db.message.delete({
where: { id: message.id },
});
await pair.tg.deleteMessages(message.tgMsgId);
}
}
catch (e) {