Files
arestools/src/modules/antidelete.js
T

34 lines
1.4 KiB
JavaScript
Raw Normal View History

import { getCachedMessage } from '../core/db.js';
import { logger } from '../core/logger.js';
/**
* Ловит удаления. MTProto в событии удаления присылает ТОЛЬКО id сообщений —
* без содержимого и (в личных чатах) без чата. Поэтому восстанавливаем из кэша,
* который наполняет модуль [cache]. Нашли в кэше — значит это было входящее
* в личке: сохраняем как перехват и уведомляем владельца.
*/
export default {
name: 'antidelete',
description: 'Сохраняет удалённые собеседником сообщения и медиа',
async onDeleted(event, ctx) {
const ids = event.deletedIds ?? [];
if (!ids.length) return;
for (const id of ids) {
const cached = getCachedMessage(id);
if (!cached) continue; // не наше/не кэшировали — пропускаем
await ctx.capture('deleted', {
chatId: cached.chat_id,
senderId: cached.sender_id,
sender: cached.sender,
text: cached.text,
mediaKind: cached.media_kind,
mediaPath: cached.media_path,
});
logger.info(`antidelete: восстановлено удалённое сообщение ${id} от ${cached.sender || '?'}`);
}
},
};