@Undertekov

Callback query в aiogram работает только после перезагрузки бота, что делать?

Пишу бота а-ля Дайвинчик для ВУЗа, и возникла такая проблема, что при добавлении новой кнопки она срабатывает только в том случае, если сначала получить сообщение с этой кнопкой, а потом перезапустить бота, так как без перезагрузки получается только так:
INFO:aiogram.contrib.middlewares.logging:Received callback query [ID:802645636563504548] from user [ID:6629331444] for message [ID:1502] in chat [private:6629331444] with data: male_anket_create originally posted by user [ID:7069842116]
INFO:aiogram.contrib.middlewares.logging:Unhandled callback query [ID:802645636563504548] from user [ID:6629331444] for message [ID:1502] in chat [private:6629331444] with data: male_anket_create originally posted by user [ID:7069842116]

Проблем не было ни с одной из кнопок, которые я добавлял. Лишь эта почему то не работает со своей копией. Вот нерабочая кнопка:
# Обработчик нажатия кнопки ‍♀️
@dp.callback_query_handler(lambda call: call.data == 'female_anket_create')
async def process_callback_set_female(callback_query: CallbackQuery):
    user_id = callback_query.from_user.id
    file_path = os.path.join(GENDER_DIR, f"{user_id}.txt")

    with open(file_path, 'w') as file:
        file.write('female\n')
    await bot.send_message(callback_query.from_user.id, "Ваш пол установлен как женский")
    await bot.send_message(callback_query.from_user.id, text="Теперь выберем кто тебя интересует.", reply_markup=types.InlineKeyboardMarkup(
                                           inline_keyboard=[
                                               [types.InlineKeyboardButton(text="‍♂️", callback_data=f"male_interest_form_create"), types.InlineKeyboardButton(text="️‍♀️", callback_data=f"female_interest_form_create"), types.InlineKeyboardButton(text="‍♂️‍♀️",callback_data=f"both_interest_form_create")]

                                               ]))
    await callback_query.message.delete()
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
@flstamn
Можешь воспользоваться FSM и отрабатывать каждый стейт в новом хендлере,аля при клике на нужную кнопку переходить в новый хендлер

P.S :если хочешь сделать бота по-типу дайвинчика,используй роутинг и онион архитектуру,тебе будет самому приятней читать код и вносить правки
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы