add restart storage
This commit is contained in:
@@ -113,25 +113,25 @@ class BotApplication:
|
||||
async def _restore_tasks(self):
|
||||
"""Восстанавливает задачи после перезапуска."""
|
||||
saved_tasks = await self.storage.load_tasks()
|
||||
|
||||
|
||||
if not saved_tasks:
|
||||
logger.info("No tasks to restore")
|
||||
return
|
||||
|
||||
|
||||
restored = 0
|
||||
notify_users: dict = {} # user_id -> chat_id
|
||||
# user_id -> (chat_id, was_paused)
|
||||
notify_users: dict = {}
|
||||
|
||||
for task_id, params in saved_tasks.items():
|
||||
# Завершённые и остановленные — загружаем в память но не запускаем
|
||||
# Завершённые и остановленные — только в память, не запускаем
|
||||
if params.completed or params.stopped:
|
||||
await self.interface.task_manager.add_task(task_id, params)
|
||||
continue
|
||||
|
||||
# Активные задачи ставим на паузу и перезапускаем
|
||||
# Если стрим был оффлайн — сохраняем этот статус
|
||||
params.paused = True
|
||||
was_paused = params.paused # сохраняем намерение пользователя
|
||||
if params.stream_offline:
|
||||
logger.info(f"Task {task_id}: stream was offline, keeping paused")
|
||||
|
||||
await self.interface.task_manager.add_task(task_id, params)
|
||||
|
||||
if params.task_type == "twitch_irc" and params.chat_id:
|
||||
@@ -156,20 +156,19 @@ class BotApplication:
|
||||
restored += 1
|
||||
|
||||
if params.user_id and params.chat_id:
|
||||
notify_users[params.user_id] = params.chat_id
|
||||
notify_users[params.user_id] = (params.chat_id, was_paused)
|
||||
|
||||
# Уведомляем пользователей о рестарте
|
||||
for uid, chat_id in notify_users.items():
|
||||
# Уведомляем пользователей — разные сообщения для паузы и активных задач
|
||||
for uid, (chat_id, was_paused) in notify_users.items():
|
||||
try:
|
||||
await self.bot.send_message(
|
||||
chat_id,
|
||||
"🔄 Бот был перезапущен\n\n"
|
||||
"Ваши задачи приостановлены.\n"
|
||||
"Нажмите ▶️ в списке задач для возобновления."
|
||||
)
|
||||
if was_paused:
|
||||
msg = "🔄 Бот был перезапущен\n\n⏸ Ваша задача остаётся на паузе."
|
||||
else:
|
||||
msg = "🔄 Бот был перезапущен\n\n▶️ Ваши задачи продолжают работу автоматически."
|
||||
await self.bot.send_message(chat_id, msg)
|
||||
except Exception as e:
|
||||
logger.warning(f"Failed to notify user {uid}: {e}")
|
||||
|
||||
|
||||
logger.info(f"🔄 Restored {restored} tasks")
|
||||
|
||||
async def start(self):
|
||||
|
||||
Reference in New Issue
Block a user