чат Asia/Yekaterinburg
This commit is contained in:
@@ -234,7 +234,7 @@ function getStatusText(status) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Отправляет сводку о непрочитанных сообщениях в чатах всем пользователям,
|
* Отправляет сводку о непрочитанных сообщениях в чатах всем пользователям,
|
||||||
* у которых есть такие сообщения (раз в час).
|
* у которых есть такие сообщения (раз в час, только с 8 до 21 по часовому поясу сервера).
|
||||||
*/
|
*/
|
||||||
async function sendChatSummaryNotifications() {
|
async function sendChatSummaryNotifications() {
|
||||||
const db = getDb();
|
const db = getDb();
|
||||||
@@ -243,6 +243,34 @@ async function sendChatSummaryNotifications() {
|
|||||||
return;
|
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 уведомления
|
// Получаем всех пользователей, у которых включены email уведомления
|
||||||
const users = await new Promise((resolve, reject) => {
|
const users = await new Promise((resolve, reject) => {
|
||||||
db.all(`
|
db.all(`
|
||||||
|
|||||||
Reference in New Issue
Block a user