Files
Solo_bot/core/tasks/loop_tasks.py
T
2026-04-14 07:19:14 +00:00

66 lines
2.0 KiB
Python

import asyncio
from logger import logger
async def notifications_loop(bot, sessionmaker) -> None:
from handlers.notifications.general_notifications import periodic_notifications
await periodic_notifications(bot, sessionmaker=sessionmaker)
async def scheduled_broadcasts_loop_task(bot, _sessionmaker) -> None:
from handlers.admin.sender.scheduled_service import scheduled_broadcasts_loop
await scheduled_broadcasts_loop(bot)
async def backup_loop(bot, _sessionmaker) -> None:
from config import BACKUP_TIME
from utils.backup import backup_database
if BACKUP_TIME <= 0:
await asyncio.Event().wait()
return
while True:
error = await backup_database(bot_instance=bot)
if error:
logger.error("[Backup] Ошибка: {}", error)
await asyncio.sleep(BACKUP_TIME)
def backup_thread_loop(stop_event, _bot, _sessionmaker) -> None:
from aiogram import Bot
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from config import API_TOKEN, BACKUP_TIME
from utils.backup import backup_database
if BACKUP_TIME <= 0:
stop_event.wait()
return
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
backup_bot = Bot(token=API_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
try:
while not stop_event.is_set():
error = loop.run_until_complete(backup_database(bot_instance=backup_bot))
if error:
logger.error("[Backup] Ошибка: {}", error)
if stop_event.wait(BACKUP_TIME):
break
finally:
loop.run_until_complete(backup_bot.session.close())
loop.close()
async def server_checks_loop(_bot, sessionmaker) -> None:
from config import PING_TIME
from servers import check_servers
if PING_TIME <= 0:
await asyncio.Event().wait()
return
await check_servers(sessionmaker=sessionmaker)