Storages¶
Storages out of the box¶
MemoryStorage¶
- class litegram.fsm.storage.memory.MemoryStorage[исходный код]¶
Default FSM storage, stores all data in
dictand loss everything on shutdownПредупреждение
Is not recommended using in production in due to you will lose all data when your bot restarts
- __init__() None[исходный код]¶
RedisStorage¶
- class litegram.fsm.storage.redis.RedisStorage(redis: Redis, key_builder: KeyBuilder | None = None, state_ttl: ExpiryT | None = None, data_ttl: ExpiryT | None = None, json_loads: _JsonLoads = <function loads>, json_dumps: _JsonDumps = <function dumps>)[исходный код]¶
Для хранилища MongoDB нужен установленный пакет
motor(pip install motor)- __init__(redis: Redis, key_builder: KeyBuilder | None = None, state_ttl: ExpiryT | None = None, data_ttl: ExpiryT | None = None, json_loads: _JsonLoads = <function loads>, json_dumps: _JsonDumps = <function dumps>) None[исходный код]¶
- Параметры:
redis – Экземпляр Redis
key_builder – конструктор, который кпомагае конвертувати контекстный ключ в строку
state_ttl – TTL for state records
data_ttl – TTL for data records
- classmethod from_url(url: str, connection_kwargs: dict[str, Any] | None = None, **kwargs: Any) RedisStorage[исходный код]¶
Создать экземпляр
RedisStorage, указав строку подключения- Параметры:
url – например
redis://user:password@host:portconnection_kwargs – див. документацию
rediskwargs – аргументы, которые нужно передать
RedisStorage
- Результат:
экземпляр класса
RedisStorage
MongoStorage¶
- class litegram.fsm.storage.pymongo.PyMongoStorage(client: pymongo.AsyncMongoClient.typing.Any, key_builder: KeyBuilder | None = None, db_name: str = 'litegram_fsm', collection_name: str = 'states_and_data')[исходный код]¶
Для хранилища MongoDB нужен установленный пакет
motor(pip install motor)- __init__(client: pymongo.AsyncMongoClient.typing.Any, key_builder: KeyBuilder | None = None, db_name: str = 'litegram_fsm', collection_name: str = 'states_and_data') None[исходный код]¶
- Параметры:
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) PyMongoStorage[исходный код]¶
Создать экземпляр
PyMongoStorage, указав строку подключения- Параметры:
url – например
mongodb://user:password@host:portconnection_kwargs – див. документацию
motorkwargs – аргументы, которые нужно передать
PyMongoStorage
- Результат:
экземпляр класса
PyMongoStorage
- class litegram.fsm.storage.mongo.MongoStorage(client: motor.motor_asyncio.AsyncIOMotorClient, key_builder: KeyBuilder | None = None, db_name: str = 'litegram_fsm', collection_name: str = 'states_and_data')[исходный код]¶
Предупреждение
DEPRECATED: Use
PyMongoStorageinstead. This class will be removed in future versions.Для хранилища MongoDB нужен установленный пакет
motor(pip install motor)- __init__(client: motor.motor_asyncio.AsyncIOMotorClient, key_builder: KeyBuilder | None = None, db_name: str = 'litegram_fsm', collection_name: str = 'states_and_data') None[исходный код]¶
- Параметры:
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[исходный код]¶
Создать экземпляр
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 litegram.fsm.storage.base.KeyBuilder[исходный код]¶
Базовый класс для конструктора ключей.
- abstractmethod build(key: StorageKey, part: Literal['data', 'state', 'lock'] | None = None) str[исходный код]¶
Создать ключ для использования в запросах к базе данных хранилища
- Параметры:
key – контекстный ключ
part – часть записи
- Результат:
ключ для использования в запросах к базе данных хранилища
- class litegram.fsm.storage.base.DefaultKeyBuilder(*, prefix: str = 'fsm', separator: str = ':', with_bot_id: bool = False, with_business_connection_id: bool = False, with_destiny: bool = False)[исходный код]¶
Простой конструктор ключей из стандартным префиксом.
Генерирует строку с префиксом, 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[исходный код]¶
Создать ключ для использования в запросах к базе данных хранилища
- Параметры:
key – контекстный ключ
part – часть записи
- Результат:
ключ для использования в запросах к базе данных хранилища
Writing own storages¶
- class litegram.fsm.storage.base.BaseStorage[исходный код]¶
Base class for all FSM storages
- abstractmethod async set_state(key: StorageKey, state: str | State | None = None) None[исходный код]¶
Set state for specified key
- Параметры:
key – storage key
state – new state
- abstractmethod async get_state(key: StorageKey) str | None[исходный код]¶
Get key state
- Параметры:
key – storage key
- Результат:
current state
- abstractmethod async set_data(key: StorageKey, data: Mapping[str, Any]) None[исходный код]¶
Write data (replace)
- Параметры:
key – storage key
data – new data
- abstractmethod async get_data(key: StorageKey) dict[str, Any][исходный код]¶
Get current data for key
- Параметры:
key – storage key
- Результат:
current data
- async update_data(key: StorageKey, data: Mapping[str, Any]) dict[str, Any][исходный код]¶
Update date in the storage for key (like dict.update)
- Параметры:
key – storage key
data – partial data
- Результат:
new data
- abstractmethod async close() None[исходный код]¶
Close storage (database connection, file or etc.)