3.2 KiB
3.2 KiB
Контекст данных пользователя с поддержкой асинхронных блокировок. Используется для хранения и управления состоянием пользователя в рамках сессии.
При передаче в хендлер события message_chat_created
в качестве атрибута chat_id
идёт идентификатор созданного чата, а user_id
- идентификатора бота!
Класс: MemoryContext
MemoryContext(chat_id: int, user_id: int)
Аргументы:
chat_id
(int
): Идентификатор чата.user_id
(int
): Идентификатор пользователя.
Методы
async def get_data() -> dict[str, Any]
Возвращает текущие данные контекста.
Возвращает:
dict[str, Any]
: Словарь с текущими данными пользователя.
async def set_data(data: dict[str, Any])
Полностью заменяет контекст данных.
Аргументы:
data
(dict[str, Any]
): Новый словарь данных, заменяющий текущий.
async def update_data(**kwargs)
Обновляет текущий контекст, добавляя или изменяя переданные пары ключ-значение.
Аргументы:
**kwargs
: Ключи и значения для обновления контекста.
async def set_state(state: Optional[Union[State, str]] = None)
Устанавливает новое состояние пользователя или сбрасывает его.
Аргументы:
state
(State | str | None
): Новое состояние. ЕслиNone
— состояние будет сброшено.
async def get_state() -> State | None
Возвращает текущее состояние пользователя.
Возвращает:
State | None
: Текущее состояние илиNone
, если не установлено.
async def clear()
Очищает все данные контекста и сбрасывает состояние.
Пример использования
@dp.message_created(Command('clear'))
async def hello(event: MessageCreated, context: MemoryContext):
await context.clear()
await event.message.answer(f"Ваш контекст был очищен!")
@dp.message_created(Command('data'))
async def hello(event: MessageCreated, context: MemoryContext):
data = await context.get_data()
await event.message.answer(f"Ваша контекстная память: {str(data)}")
@dp.message_created(Command('context'))
@dp.message_created(Command('state'))
async def hello(event: MessageCreated, context: MemoryContext):
data = await context.get_state()
await event.message.answer(f"Ваше контекстное состояние: {str(data)}")