Поправлены импорты
This commit is contained in:
parent
2420e4232e
commit
e1064761e4
@ -3,8 +3,8 @@ from .dispatcher import Dispatcher, Router
|
|||||||
from .filters import F
|
from .filters import F
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
Bot,
|
'Bot',
|
||||||
Dispatcher,
|
'Dispatcher',
|
||||||
F,
|
'F',
|
||||||
Router
|
'Router'
|
||||||
]
|
]
|
@ -1,93 +1,9 @@
|
|||||||
import asyncio
|
|
||||||
|
|
||||||
from typing import Any, Dict, Optional, Union
|
|
||||||
|
|
||||||
from ..context.state_machine import State, StatesGroup
|
from ..context.state_machine import State, StatesGroup
|
||||||
|
from .context import MemoryContext
|
||||||
|
|
||||||
|
|
||||||
class MemoryContext:
|
__all__ = [
|
||||||
|
'State',
|
||||||
"""
|
'StatesGroup',
|
||||||
Контекст хранения данных пользователя с блокировками.
|
'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 = {}
|
|
Loading…
x
Reference in New Issue
Block a user