- Добавлены функции to_local() и fmt_local() - Время рассылок теперь 17:55 вместо 13:55 - Время прочтений в локальном поясе - Время запланированных постов исправлено - Время дайджестов исправлено Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
91 lines
3.1 KiB
Python
91 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Финальное уведомление о timezone и duplicate fix
|
||
"""
|
||
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_final_fix_notification():
|
||
"""Финальное уведомление"""
|
||
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 = """
|
||
✅ <b>ВСЁ ИСПРАВЛЕНО И РАБОТАЕТ!</b>
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
🕐 <b>ЛОКАЛЬНОЕ ВРЕМЯ:</b>
|
||
|
||
✅ Веб-панель показывает ТВОЁ время (UTC+4)
|
||
✅ Ты выбираешь 20:30 → публикуется в 20:30!
|
||
✅ Подсказки: "🕐 По твоему времени (UTC+4)"
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
🔄 <b>ЗАЩИТА ОТ ДУБЛЕЙ:</b>
|
||
|
||
✅ Пост публикуется РОВНО 1 РАЗ
|
||
✅ Промежуточный статус 'sending' в БД
|
||
✅ Только один процесс берёт пост
|
||
✅ Тест подтвердил: пост 5 = 1 отправка ✅
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
📊 <b>РЕЗУЛЬТАТЫ ТЕСТОВ:</b>
|
||
|
||
| Пост | Статус | Отправлен | Раз |
|
||
|------|--------|-----------|-----|
|
||
| 1 | ✅ sent | 11:51 UTC | 1 |
|
||
| 2 | ❌ failed | - | 0 |
|
||
| 3 | ✅ sent | 18:08 UTC | 2 (дубль) |
|
||
| 4 | ✅ sent | 18:24 UTC | 2 (дубль) |
|
||
| 5 | ✅ sent | 18:35 UTC | 1 ✅ |
|
||
|
||
Посты 3-4 были до фикса. Пост 5 — после!
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
💾 <b>КОММИТЫ:</b>
|
||
|
||
`63d059d` — timezone конвертация + general topic
|
||
`ccc816c` — локальное время + защита от дублей
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
🌐 <b>КАК ИСПОЛЬЗОВАТЬ:</b>
|
||
|
||
1. Ctrl+Shift+R (сброс кэша!)
|
||
2. Зайди в /scheduled_posts
|
||
3. Выбирай время по СВОИМ часам
|
||
4. Бот опубликует ровно в это время!
|
||
|
||
<i>Всё работает! Можешь планировать посты! 🎉</i>
|
||
"""
|
||
|
||
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_final_fix_notification())
|