Storages

Storages out of the box

MemoryStorage

class aiogram.fsm.storage.memory.MemoryStorage[source]

Default FSM storage, stores all data in dict and loss everything on shutdown

Попередження

Is not recommended using in production in due to you will lose all data when your bot restarts

__init__() None[source]

RedisStorage

class aiogram.fsm.storage.redis.RedisStorage(redis: ~redis.asyncio.client.Redis, key_builder: ~aiogram.fsm.storage.base.KeyBuilder | None = None, state_ttl: int | ~datetime.timedelta | None = None, data_ttl: int | ~datetime.timedelta | None = None, json_loads: ~typing.Callable[[...], ~typing.Any] = <function loads>, json_dumps: ~typing.Callable[[...], str] = <function dumps>)[source]

Для сховища Redis потрібен встановлений пакет redis (pip install redis)

__init__(redis: ~redis.asyncio.client.Redis, key_builder: ~aiogram.fsm.storage.base.KeyBuilder | None = None, state_ttl: int | ~datetime.timedelta | None = None, data_ttl: int | ~datetime.timedelta | None = None, json_loads: ~typing.Callable[[...], ~typing.Any] = <function loads>, json_dumps: ~typing.Callable[[...], str] = <function dumps>) None[source]
Параметри:
  • redis – Екземпляр підключення Redis

  • key_builder – конструктор, який допомагає конвертувати контекстний ключ у рядок

  • state_ttl – Час життя (TTL) для записів стану

  • data_ttl – Час життя (TTL) для записів даних

classmethod from_url(url: str, connection_kwargs: Dict[str, Any] | None = None, **kwargs: Any) RedisStorage[source]

Створити екземпляр RedisStorage, вказавши строку підключення

Параметри:
  • url – наприклад redis://user:password@host:port/db

  • connection_kwargs – див. документацію redis

  • kwargs – аргументи, які потрібно передати RedisStorage

Повертає:

an instance of RedisStorage

MongoStorage

class aiogram.fsm.storage.mongo.MongoStorage(client: AsyncIOMotorClient, key_builder: KeyBuilder | None = None, db_name: str = 'aiogram_fsm', collection_name: str = 'states_and_data')[source]

Для сховища MongoDB потрібен встановлений пакет motor (pip install motor)

__init__(client: AsyncIOMotorClient, key_builder: KeyBuilder | None = None, db_name: str = 'aiogram_fsm', collection_name: str = 'states_and_data') None[source]
Параметри:
  • client – Екземпляр AsyncIOMotorClient

  • key_builder – конструктор, який допомагає конвертувати контекстний ключ у рядок

  • db_name – назва бази даних MongoDB для FSM

  • collection_name – назва колекції для зберігання станів і даних FSM

classmethod from_url(url: str, connection_kwargs: Dict[str, Any] | None = None, **kwargs: Any) MongoStorage[source]

Створити екземпляр MongoStorage, вказавши строку підключення

Параметри:
  • url – наприклад mongodb://user:password@host:port

  • connection_kwargs – див. документацію motor

  • kwargs – аргументи, які потрібно передати MongoStorage

Повертає:

екземпляр класу MongoStorage

KeyBuilder

Keys inside Redis and Mongo storages can be customized via key builders:

class aiogram.fsm.storage.base.KeyBuilder[source]

Базовий клас для конструктора ключів.

abstract build(key: StorageKey, part: Literal['data', 'state', 'lock'] | None = None) str[source]

Створити ключ для використання в запитах до бази даних сховища

Параметри:
  • key – контекстний ключ

  • part – частина запису

Повертає:

ключ для використання в запитах до бази даних сховища

class aiogram.fsm.storage.base.DefaultKeyBuilder(*, prefix: str = 'fsm', separator: str = ':', with_bot_id: bool = False, with_business_connection_id: bool = False, with_destiny: bool = False)[source]

Простий конструктор ключів із стандартним префіксом.

Генерує рядок із префіксом, chat_id, user_id, додатковим bot_id, business_connection_id, destiny та полем, розділеними двокрапкою.

Формат:

<prefix>:<bot_id?>:<business_connection_id?>:<chat_id>:<user_id>:<destiny?>:<field?>

build(key: StorageKey, part: Literal['data', 'state', 'lock'] | None = None) str[source]

Створити ключ для використання в запитах до бази даних сховища

Параметри:
  • key – контекстний ключ

  • part – частина запису

Повертає:

ключ для використання в запитах до бази даних сховища

Writing own storages

class aiogram.fsm.storage.base.BaseStorage[source]

Base class for all FSM storages

abstract async set_state(key: StorageKey, state: str | State | None = None) None[source]

Set state for specified key

Параметри:
  • key – storage key

  • state – new state

abstract async get_state(key: StorageKey) str | None[source]

Get key state

Параметри:

key – storage key

Повертає:

current state

abstract async set_data(key: StorageKey, data: Mapping[str, Any]) None[source]

Write data (replace)

Параметри:
  • key – storage key

  • data – new data

abstract async get_data(key: StorageKey) Dict[str, Any][source]

Get current data for key

Параметри:

key – storage key

Повертає:

current data

async update_data(key: StorageKey, data: Mapping[str, Any]) Dict[str, Any][source]

Update date in the storage for key (like dict.update)

Параметри:
  • key – storage key

  • data – partial data

Повертає:

new data

abstract async close() None[source]

Close storage (database connection, file or etc.)