// Скрипт для проверки работы callback-хэндлеров и уведомлений require('dotenv').config(); const TelegramBot = require('node-telegram-bot-api'); const { Pool } = require('pg'); // Создаем пул соединений const pool = new Pool({ user: process.env.DB_USERNAME, host: process.env.DB_HOST, database: process.env.DB_NAME, password: process.env.DB_PASSWORD, port: parseInt(process.env.DB_PORT || '5432') }); // Функция для имитации callback-запроса к боту async function testCallback() { try { console.log('Начинаем тестирование callback-хэндлеров и уведомлений...'); // Используем последнего пользователя из базы данных const userResult = await pool.query(` SELECT * FROM users ORDER BY last_active_at DESC NULLS LAST LIMIT 1 `); if (userResult.rows.length === 0) { console.error('❌ Пользователи не найдены в базе данных'); return; } const user = userResult.rows[0]; console.log(`Выбран тестовый пользователь: ${user.first_name || 'Без имени'} (ID: ${user.telegram_id})`); // Получаем токен бота из переменных окружения const token = process.env.TELEGRAM_BOT_TOKEN; if (!token) { console.error('❌ Токен бота не найден в переменных окружения'); return; } // Создаем экземпляр бота const bot = new TelegramBot(token); // Отправляем тестовое уведомление пользователю console.log(`Отправляем тестовое уведомление пользователю ID: ${user.telegram_id}...`); try { const result = await bot.sendMessage( user.telegram_id, `🔔 *Тестовое уведомление*\n\nЭто проверка работы уведомлений и callback-хэндлеров.\n\nВаш премиум-статус: ${user.premium ? '✅ Активен' : '❌ Не активен'}`, { parse_mode: 'Markdown', reply_markup: { inline_keyboard: [ [ { text: '🔔 Уведомления', callback_data: 'notification_settings' }, { text: '❤️ Профиль', callback_data: 'view_profile' } ], [ { text: '⚙️ Настройки', callback_data: 'settings' } ] ] } } ); console.log('✅ Тестовое сообщение успешно отправлено!'); console.log('Информация о сообщении:', JSON.stringify(result, null, 2)); } catch (error) { console.error('❌ Ошибка при отправке тестового сообщения:', error.message); if (error.response && error.response.body) { console.error('Детали ошибки:', JSON.stringify(error.response.body, null, 2)); } } } catch (error) { console.error('❌ Ошибка при тестировании:', error); } finally { await pool.end(); console.log('Соединение с базой данных закрыто'); console.log('Тестирование завершено!'); } } // Запускаем тестирование testCallback();