diff --git a/maxapi/__init__.py b/maxapi/__init__.py index ba7a8b8..43afad4 100644 --- a/maxapi/__init__.py +++ b/maxapi/__init__.py @@ -3,8 +3,8 @@ from .dispatcher import Dispatcher, Router from .filters import F __all__ = [ - Bot, - Dispatcher, - F, - Router + 'Bot', + 'Dispatcher', + 'F', + 'Router' ] \ No newline at end of file diff --git a/maxapi/context/__init__.py b/maxapi/context/__init__.py index 8ab930e..49ab968 100644 --- a/maxapi/context/__init__.py +++ b/maxapi/context/__init__.py @@ -1,93 +1,9 @@ -import asyncio - -from typing import Any, Dict, Optional, Union - from ..context.state_machine import State, StatesGroup +from .context import MemoryContext -class MemoryContext: - - """ - Контекст хранения данных пользователя с блокировками. - - Args: - chat_id (int): Идентификатор чата - user_id (int): Идентификатор пользователя - """ - - def __init__(self, chat_id: int, user_id: int): - self.chat_id = chat_id - self.user_id = user_id - self._context: Dict[str, Any] = {} - self._state: State | str | None = None - self._lock = asyncio.Lock() - - async def get_data(self) -> dict[str, Any]: - - """ - Возвращает текущий контекст данных. - - Returns: - Словарь с данными контекста - """ - - async with self._lock: - return self._context - - async def set_data(self, data: dict[str, Any]): - - """ - Полностью заменяет контекст данных. - - Args: - data: Новый словарь контекста - """ - - async with self._lock: - self._context = data - - async def update_data(self, **kwargs): - - """ - Обновляет контекст данных новыми значениями. - - Args: - **kwargs: Пары ключ-значение для обновления - """ - - async with self._lock: - self._context.update(kwargs) - - async def set_state(self, state: Optional[Union[State, str]] = None): - - """ - Устанавливает новое состояние. - - Args: - state: Новое состояние или None для сброса - """ - - async with self._lock: - self._state = state - - async def get_state(self): - - """ - Возвращает текущее состояние. - - Returns: - Текущее состояние или None - """ - - async with self._lock: - return self._state - - async def clear(self): - - """ - Очищает контекст и сбрасывает состояние. - """ - - async with self._lock: - self._state = None - self._context = {} +__all__ = [ + 'State', + 'StatesGroup', + 'MemoryContext' +] \ No newline at end of file