aiogram 3 и FSM: три грабли, на которые я наступил в заказных ботах
whysafe 35 минут назад Краткое содержание статьи aiogram 3 и FSM: три грабли, на которые я наступил в заказных ботах Средний 4 мин 1.3K Python * Мессенджеры * Кейс Из песочницы Большая часть моих заказов на ботов...
Will Anthropic have the best AI model at the end of October 2026?
Вот важная новость с фронта ИИ: whysafe 35 минут назад Краткое содержание статьи aiogram 3 и FSM: три грабли, на которые я наступил в заказных ботах Средний 4 мин 1. 3K Python * Мессенджеры * Кейс Из песочницы Большая часть моих заказов на ботов выглядит одинаково. Человек хочет, чтобы клиент нажал кнопку, ответил на несколько вопросов и заявка упала менеджеру.
Имя, телефон, что нужно, удобное время. Звучит как задача на вечер, и по коду это правда вечер. Проблемы начинаются потом, когда бот уже работает у заказчика.
Технические детали
Ниже три истории, после которых я поменял свой шаблон. Все примеры на aiogram 3. Грабли первая: MemoryStorage в продеВ документации и туториалах почти везде стоит так:from aiogram import Bot, Dispatcher from aiogram.
memory import MemoryStorage dp = Dispatcher(storage=MemoryStorage())Для разработки нормально. Но MemoryStorage держит состояния в оперативке процесса. Перезапустил бота, и все, кто был посреди анкеты, оказались в пустоте.
У меня это вылезло так. Я выкатил правку текста в одном сообщении, сделал docker compose up -d --build, всё поднялось за пару секунд. Через час заказчик пишет: клиент жалуется, что ввёл телефон, а бот молчит.
Отраслевые последствия
Клиент начал анкету до деплоя, закончил после. Бот уже не помнил, что ждёт от него телефон, и просто проигнорировал сообщение. Лечится переездом в Redis:from aiogram.
redis import RedisStorage, DefaultKeyBuilder storage = RedisStorage. from_url( "redis://redis:6379/0", key_builder=DefaultKeyBuilder(with_bot_id=True), state_ttl=60 * 60 * 24, data_ttl=60 * 60 * 24, ) dp = Dispatcher(storage=storage)Зависимость ставится так: pip install "aiogram". with_bot_id=True я включаю всегда.
Бывает, что на одном сервере и одном Redis крутятся два бота одного заказчика, например основной и тестовый. Без bot_id в ключе они делят состояния одного и того же пользователя, и отлаживать это неприятно. TTL тоже не для красоты.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.



