Storages

Storages out of the box

MemoryStorage

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

Default FSM storage; uses a regular dict to store data and does not persist it across restarts.

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

This storage is not recommended for production use, as all data is lost when the 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: ~collections.abc.Callable[[...], ~typing.Any] = <function loads>, json_dumps: ~collections.abc.Callable[[...], str] = <function dumps>)[source]

Redis storage requires the redis package (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: ~collections.abc.Callable[[...], ~typing.Any] = <function loads>, json_dumps: ~collections.abc.Callable[[...], str] = <function dumps>) None[source]
Параметри:
  • redis – instance of Redis connection

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

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

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

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

Create an instance of RedisStorage with the specified connection url

Параметри:
  • url – the connection url (i.e. redis://user:password@host:port/db)

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

  • kwargs – arguments passed to RedisStorage

Повертає:

an instance of RedisStorage

MongoStorage

class aiogram.fsm.storage.pymongo.PyMongoStorage(client: AsyncMongoClient[Any], key_builder: KeyBuilder | None = None, db_name: str = 'aiogram_fsm', collection_name: str = 'states_and_data')[source]

MongoDB storage requires the pymongo package (pip install pymongo).

__init__(client: AsyncMongoClient[Any], key_builder: KeyBuilder | None = None, db_name: str = 'aiogram_fsm', collection_name: str = 'states_and_data') None[source]
Параметри:
  • client – instance of AsyncMongoClient

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

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

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

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

Create an instance of PyMongoStorage with the specified connection url

Параметри:
  • url – the connection url (i.e. mongodb://user:password@host:port)

  • connection_kwargs – see pymongo docs

  • kwargs – arguments passed to PyMongoStorage

Повертає:

an instance of PyMongoStorage

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]

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

DEPRECATED: Use PyMongoStorage instead. This class will be removed in future versions.

Для сховища 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.)