Машина состояний для бота телеграм
У меня есть тг-бот с FSM. Сейчас состояния сохраняются в MemoryStorage и при перезапуске бота последнее состояние сбрасывается. Хотелось бы узнать, как:
- Сохранять последнее состояние
- Сделать состояние по умолчанию, которое будет устанавливаться для всех пользователей при перезапуске бота. Также это состояние будет устанавливаться для всех новых пользователей.
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.contrib.fsm_storage.memory import MemoryStorage
dp = Dispatcher(bot, storage=MemoryStorage())
Ответы (1 шт):
В документации aiogram сказано: "This type of storage is not recommended for usage in bots, because you will lost all states after restarting." Соответственно состояние и сбрасывается.
Не используйте MemoryStorage, если вам нужно хранить состояние после перезапуска. Храните состояния в базе данных. В Aiogram реализована поддержка noSQL баз (Redis, Mongo, Rethink), но вы можете написать свою обертку. Пример для SQLAlchemy: https://github.com/nmzgnv/bot-template-aiogram-flask/blob/main/bot/states/SQLAlchemyStorage.py