#!/usr/bin/env python3
"""
Уведомление о исправлении часового пояса и защите от дублей
"""
import asyncio
import sys
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent
sys.path.insert(0, str(BASE_DIR))
from aiogram import Bot
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from aiogram.client.session.aiohttp import AiohttpSession
from config import BOT_TOKEN, ADMIN_USER_ID, get_proxy_url
async def send_timezone_and_duplicate_fix():
"""Уведомление об исправлениях"""
proxy_url = get_proxy_url()
if proxy_url:
session = AiohttpSession(proxy=proxy_url)
bot = Bot(token=BOT_TOKEN, session=session, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
else:
bot = Bot(token=BOT_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
message = """
✅ ДВА ИСПРАВЛЕНИЯ!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🕐 1. ЛОКАЛЬНОЕ ВРЕМЯ (UTC+4)
✅ Что изменилось:
❌ Было:
• Время в веб-панели показывалось в UTC
• Ты выбирал 20:30 → сохранялось как 20:30 UTC
• Реально публиковалось в 00:30 по Ульяновску!
✅ Стало:
• В веб-панели показывает ТВОЁ время (UTC+4)
• Ты выбираешь 20:30 → сохраняется как 16:30 UTC
• Публикуется ровно в 20:30 по Ульяновску! 🎯
📋 Подсказки в форме:
"🕐 По твоему времени (UTC+4)"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔄 2. ЗАЩИТА ОТ ДУБЛИРОВАНИЯ
✅ Что было:
• Пост публиковался ДВАЖДЫ в чат
• Несколько процессов scheduler работали одновременно
✅ Что стало:
• Добавлена блокировка (_scheduled_posts_lock)
• Только ОДИН процесс может публиковать посты
• Остальные пропускают обработку
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🧪 ТЕСТ:
Создан тестовый пост (ID=4)
Время: через 5 минут от сейчас
Должен опубликоваться ОДИН раз ✅
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🌐 ПРОВЕРЬ В ВЕБ-ПАНЕЛИ:
1. Зайди в http://localhost:8000/scheduled_posts
2. Нажми Ctrl+Shift+R (сброс кэша!)
3. Посмотри на список постов
4. Время должно быть ПО ТВОЕМУ! (UTC+4)
Жду 5 минут и проверю что тестовый пост опубликовался 1 раз!
"""
try:
await bot.send_message(ADMIN_USER_ID, message)
print("✅ Уведомление отправлено!")
except Exception as e:
print(f"❌ Ошибка: {e}")
finally:
await bot.session.close()
if __name__ == '__main__':
asyncio.run(send_timezone_and_duplicate_fix())