Fix parsing phone and add redis storage for FSM in telegram bot

This commit is contained in:
2026-01-17 20:03:33 +03:00
parent a065c6b7be
commit 56870a9c96
14 changed files with 157 additions and 27 deletions

View File

@@ -0,0 +1,16 @@
from .fabric import get_telegram_bot_fsm_storage
from .settings import (
MemoryStorageSettings,
RedisStorageSettings,
StorageSettings,
)
__all__ = (
# fabric
"get_telegram_bot_fsm_storage",
# settings
"MemoryStorageSettings",
"RedisStorageSettings",
"StorageSettings",
)

View File

@@ -0,0 +1,6 @@
import enum
class StorageTypeEnum(str, enum.Enum):
MEMORY = "memory"
REDIS = "redis"

View File

@@ -0,0 +1,20 @@
import redis
from aiogram.fsm.storage.base import BaseStorage
from .enums import StorageTypeEnum
from .settings import StorageSettings
def get_telegram_bot_fsm_storage(settings: StorageSettings) -> BaseStorage:
match settings.type:
case StorageTypeEnum.MEMORY.value:
return MemoryStorage()
case StorageTypeEnum.REDIS.value:
redis_client = redis.Redis(
host=settings.host,
port=settings.port,
db=settings.database,
)
return RedisStorage(redis=redis_client)
case _:
raise ValueError(f"Unsupported telegram bot storage type: {settings.type}")

View File

@@ -0,0 +1,20 @@
from typing import Literal
from pydantic import BaseModel
from .enums import StorageTypeEnum
class StorageSettings(BaseModel):
type: StorageTypeEnum
class MemoryStorageSettings(StorageSettings):
type: Literal[StorageTypeEnum.MEMORY.value] = StorageTypeEnum.MEMORY.value
class RedisStorageSettings(StorageSettings):
type: Literal[StorageTypeEnum.REDIS.value] = StorageTypeEnum.REDIS.value
host: str = "localhost"
port: int = 6379
database: int = 0