const db = require("../config/db"); const TelegramBot = require("node-telegram-bot-api"); const util = require('util'); const dbAll = util.promisify(db.all).bind(db); const dbRun = util.promisify(db.run).bind(db); const TOKEN = process.env.TELEGRAM_TOKEN; const STAND_CHAT_ID = process.env.STAND_CHAT_ID; const bot = new TelegramBot(TOKEN, { polling: false }); class Messages { async cleanup_old() { try { // "Зараз мінус 24 години" const oneDayAgo = Date.now() - (24 * 60 * 55 * 1000); // 1. Отримуємо повідомлення, які старші за добу const oldMessages = await dbAll( `SELECT last_message_id FROM sent_messages WHERE created_at < ?`, [oneDayAgo] ); if (!oldMessages || oldMessages.length === 0) { console.log('🧹 Застарілих повідомлень не знайдено.'); return; } console.log(`🧹 Знайдено ${oldMessages.length} повідомлень для видалення...`); // 2. Видаляємо повідомлення з Telegram по черзі for (const msg of oldMessages) { try { await bot.deleteMessage(STAND_CHAT_ID, msg.last_message_id); await new Promise(resolve => setTimeout(resolve, 50)); // пауза 50мс } catch (e) { // Код помилки 400 зазвичай означає, що повідомлення вже видалено вручну // або минуло понад 48 годин console.log(`⚠️ Повідомлення ${msg.last_message_id} не знайдено в Telegram або застаре.`); } } // 3. Видаляємо записи з бази даних одним махом await dbRun(`DELETE FROM sent_messages WHERE created_at < ?`, [oneDayAgo]); console.log(`✅ Очистка завершена.`); } catch (err) { console.error('❌ Помилка під час виконання cleanup_old:', err.message); } } } module.exports = new Messages();