чат Asia/Yekaterinburg

This commit is contained in:
2026-04-07 00:50:13 +05:00
parent 73ace950fa
commit cdfe2f5a0a

View File

@@ -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(`