Files
arestools/src/modules/antidelete.js
T

33 lines
1.4 KiB
JavaScript
Raw Normal View History

import { getCachedMessage } from '../core/db.js';
import { logger } from '../core/logger.js';
/**
* Ловит удаления. Telegram в событии deleted_business_messages присылает ТОЛЬКО
* id сообщений и чат — без содержимого. Поэтому восстанавливаем из кэша, который
* наполняет модуль [cache], по паре (chatId, msgId). Нашли — значит это было
* входящее в личке: сохраняем как перехват и уведомляем владельца.
*/
export default {
name: 'antidelete',
description: 'Сохраняет удалённые собеседником сообщения и медиа',
async onDeleted({ chatId, msgIds }, ctx) {
if (!msgIds?.length) return;
for (const id of msgIds) {
const cached = getCachedMessage(chatId, 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 || '?'}`);
}
},
};