Storages¶
Storages out of the box¶
MemoryStorage¶
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
redispackage (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
RedisStoragewith the specified connection url- Параметри:
url – the connection url (i.e.
redis://user:password@host:port/db)connection_kwargs – див. документацію
rediskwargs – 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
pymongopackage (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
PyMongoStoragewith the specified connection url- Параметри:
url – the connection url (i.e.
mongodb://user:password@host:port)connection_kwargs – see
pymongodocskwargs – 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
PyMongoStorageinstead. 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:portconnection_kwargs – див. документацію
motorkwargs – аргументи, які потрібно передати
MongoStorage
- Повертає:
екземпляр класу
MongoStorage
KeyBuilder¶
Keys inside Redis and Mongo storages can be customized via key builders:
- 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?>
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