Добавлена helper-функция safe_edit_message, которая игнорирует ошибку
'Message is not modified' при повторном редактировании сообщений с тем же
содержимым. Все обработчики удаления сценариев используют эту функцию.
- Add ruff (line-length 88) and ty to dev dependencies
- Fix all ruff linting errors
- Configure ty to ignore nullable type warnings
- Update AGENTS.md with linting instructions
- Add @answer_callback for auto-answering callback queries
- Add @with_user_and_session for injecting user/session
- Add @require_state for state validation
- Reduce handlers.py from ~850 to ~540 lines
- Add all user FSM states (INTRO through CONFIRM_SAVE)
- Add replica re-recording by number (ASK_REPLICA_NUMBER, REPEAT_REPLICA)
- Add admin interface with stats and scenario upload
- Add voice message handling and storage