diff --git a/notifications.js b/notifications.js index 386bb76..f14039e 100644 --- a/notifications.js +++ b/notifications.js @@ -234,7 +234,7 @@ function getStatusText(status) { /** * Отправляет сводку о непрочитанных сообщениях в чатах всем пользователям, - * у которых есть такие сообщения (раз в час). + * у которых есть такие сообщения (раз в час, только с 8 до 21 по часовому поясу сервера). */ async function sendChatSummaryNotifications() { const db = getDb(); @@ -243,6 +243,34 @@ async function sendChatSummaryNotifications() { return; } + // Определяем часовой пояс + const timezone = process.env.TIMEZONE || 'Asia/Yekaterinburg'; + const now = new Date(); + // Форматтер для полного времени (логирование) + const fullFormatter = new Intl.DateTimeFormat('ru-RU', { + timeZone: timezone, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }); + // Форматтер только для часа + const hourFormatter = new Intl.DateTimeFormat('ru-RU', { hour: 'numeric', timeZone: timezone }); + const currentHour = parseInt(hourFormatter.format(now)); + + // Логируем текущее время и используемый час + console.log(`📅 Текущее время (${timezone}): ${fullFormatter.format(now)} (час: ${currentHour})`); + + // Проверка рабочего времени (8:00 – 21:00) + if (currentHour < 8 || currentHour >= 21) { + console.log(`🕒 [Чат-сводка] Пропущена: сейчас ${currentHour}:00 (рабочие часы 8-21), время отправки не наступило`); + return; + } + + console.log(`✅ [Чат-сводка] Рабочие часы, отправляем уведомления...`); + // Получаем всех пользователей, у которых включены email уведомления const users = await new Promise((resolve, reject) => { db.all(`