ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант

Почему не обрабатывается команда /start?

почему не обрабатывается handler команды /start после установки любого состояния в машине состояний?

# Обработчик команды /start
@dp.message_handler(commands=['start'])
async def start_command(message: types.Message, state: FSMContext):
    print('[[start]]')
    
    await state.set_state(SupportStates.waiting_for_phone)
    await message.answer(get_string(locales, locale, "startMessage"), reply_markup=get_phone_keyboard())


Первый запуск происходит нормально. А когда устанавливается состояние waiting_for_phone(или другое), /start перестаёт выполняться. Обработчик стоит самым первым, других фильтров нет. Или надо обязательно указывать в фильтрах текущий state?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
InternetMaster
@InternetMaster
Интернет
Ну событие (сообщение) попадает в обработчик только когда удовлетворяет условию state. По умолчанию оно отсутствует (а не любое). При запуске у пользователя тоже не установлено значение. Потом когда пользователь делает какой-то шурум-бурум устанавливается state, как ты говоришь waiting_for_phone. А фильтр на конечный автомат (state у твоего обработчика), как я уже сказал отстуствует.

Тут надо уже указывать конкретный state ( waiting_for_phone например) или проще всего сбросить
@dp.message_handler(commands=['start'], state='*')

Но тут попадет любое состояние которое удовлетворяет условию: command start
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
16 мая 2024, в 23:36
200000 руб./за проект
16 мая 2024, в 23:10
12000 руб./за проект