From 6705bf44929d12bf659b843ca4a3af528615f3a0 Mon Sep 17 00:00:00 2001 From: algizn97 Date: Fri, 3 Oct 2025 14:18:27 +0500 Subject: [PATCH] Added tasks --- app/telegram/tasks/__init__.py | 0 app/telegram/tasks/tasks.py | 77 ++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 app/telegram/tasks/__init__.py create mode 100644 app/telegram/tasks/tasks.py diff --git a/app/telegram/tasks/__init__.py b/app/telegram/tasks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/telegram/tasks/tasks.py b/app/telegram/tasks/tasks.py new file mode 100644 index 0000000..0126e51 --- /dev/null +++ b/app/telegram/tasks/tasks.py @@ -0,0 +1,77 @@ +import asyncio +import logging.config + +from logger_helper.logger_helper import LOGGING_CONFIG + +logging.config.dictConfig(LOGGING_CONFIG) +logger = logging.getLogger("tasks") + +user_start_tasks_merged = {} +user_start_tasks_switch = {} +user_stop_tasks = {} + + +async def add_start_task_merged(user_id: int, task: asyncio.Task): + """Add task to user_start_tasks dict""" + if user_id in user_start_tasks_merged: + old_task = user_start_tasks_merged[user_id] + if not old_task.done(): + old_task.cancel() + try: + await old_task + except asyncio.CancelledError: + pass + user_start_tasks_merged[user_id] = task + + +async def add_start_task_switch(user_id: int, task: asyncio.Task): + """Add task to user_start_tasks dict""" + if user_id in user_start_tasks_switch: + old_task = user_start_tasks_switch[user_id] + if not old_task.done(): + old_task.cancel() + try: + await old_task + except asyncio.CancelledError: + pass + user_start_tasks_switch[user_id] = task + + +async def add_stop_task(user_id: int, task: asyncio.Task): + """Add task to user_stop_tasks dict""" + if user_id in user_stop_tasks: + old_task = user_stop_tasks[user_id] + if not old_task.done(): + old_task.cancel() + try: + await old_task + except asyncio.CancelledError: + pass + user_stop_tasks[user_id] = task + + +def cancel_start_task_merged(user_id: int): + """Cancel task from user_start_tasks dict""" + if user_id in user_start_tasks_merged: + task = user_start_tasks_merged[user_id] + if not task.done(): + task.cancel() + del user_start_tasks_merged[user_id] + + +def cancel_start_task_switch(user_id: int): + """Cancel task from user_start_tasks dict""" + if user_id in user_start_tasks_switch: + task = user_start_tasks_switch[user_id] + if not task.done(): + task.cancel() + del user_start_tasks_switch[user_id] + + +def cancel_stop_task(user_id: int): + """Cancel task from user_stop_tasks dict""" + if user_id in user_stop_tasks: + task = user_stop_tasks[user_id] + if not task.done(): + task.cancel() + del user_stop_tasks[user_id]