const fs = require("fs"); /** * Middleware для логирования всех действий в боте. */ function logMiddleware(ctx, next) { const logEntry = { timestamp: new Date().toISOString(), user: { id: ctx.from?.id || "unknown", username: ctx.from?.username || "unknown", first_name: ctx.from?.first_name || "unknown", last_name: ctx.from?.last_name || "", }, chat: ctx.chat ? { id: ctx.chat.id, type: ctx.chat.type } : null, type: ctx.updateType, // Тип обновления (message, callback_query и т.д.) data: getDataFromContext(ctx), // Извлечение данных из контекста }; const logString = JSON.stringify(logEntry, null, 2); // Сохраняем лог в файл fs.appendFile('./json/logs.json', logString + "\n", (err) => { if (err) { console.error("Ошибка при записи лога:", err); } }); // Вызываем следующий middleware return next(); } /** * Извлечение данных из контекста (например, текст сообщения или данные кнопки). */ function getDataFromContext(ctx) { if (ctx.message) { return { text: ctx.message.text || "нет текста", message_id: ctx.message.message_id }; } if (ctx.callbackQuery) { return { data: ctx.callbackQuery.data || "нет данных", id: ctx.callbackQuery.id }; } if (ctx.inlineQuery) { return { query: ctx.inlineQuery.query || "пустой запрос" }; } return "неизвестное событие"; } module.exports = logMiddleware;