Драфт исчезает только когда бот отправляет реальное сообщение. Ряд путей
завершения операции не закрывал статус, из-за чего последняя показанная
фраза висела в чате до конца TTL драфта и выглядела неактуальной.
- OperationStatus: флаг _closed, finish() принимает None (только снять
статус), finish_if_open() — идемпотентное закрытие, _finished_draft_id
сохраняется до обнуления draft_id
- finish_status(status, text) — хелпер, терпит None: закрывает статус на
любом пути выхода без повторения `if status:`
- закрыты пути без finish: _rebuild_account_profile при переданном статусе,
_process_voice -> _classify_and_respond, успешные выходы _handle_image_message
и transcribe_voice через else-ветку, ранние возвраты /help и проверки подписки
Проверено: 176 тестов OK (4 новых на закрытие статуса).
VERSION: 0.1.0+49 -> 0.1.0+50