Загрузка...

Я не пойму в одном боте не может быть 2 инлайн клавиатуры?

Тема в разделе Python создана пользователем Hollywood 22 дек 2024. 187 просмотров

  1. Hollywood
    Hollywood Автор темы 22 дек 2024 э 20 248 28 окт 2020
    Или как?
    Проблема та же https://lolz.live/threads/7830232/

    Только теперь у меня 2 инлайн клавиатуры и действие не выполняется, хотя пишет handled
     
  2. ToSa
    ToSa 22 дек 2024 гость, боже, храни кьют-рок. :beer::beer::beer: 24 038 18 дек 2021
    код в студию
     
    1. Посмотреть предыдущие комментарии (2)
    2. ToSa
      Hollywood, а кстати, могу ответить что же все таки было в 1 и почему нужны разные роутеры:

      Python
      @rt.callback_query()
      async def act(callback_query: types.CallbackQuery, state: FSMContext):
      action = callback_query.data
      global hold_meaning
      if action == 'holdon':
      hold_meaning = True
      await callback_query.message.edit_text("Введите продолжительность холда\nДоступные параметры: 'hour', 'day', 'week', 'month'\nПример: 3 day")
      await state.set_state(Form.waiting_for_hold)
      elif action == 'holdoff':
      hold_meaning = False
      await callback_query.message.edit_text(f'Пользователь: lzt.market/members/{user_n}\nВведите сумму в рублях:')
      await state.set_state(Form.waiting_for_amount)

      @rt.callback_query()
      async def sendm(callback_query: types.CallbackQuery):
      action = callback_query.data
      if action == 'approve_':
      response = await market.payments.transfer(user_id=user_n, amount=price_id, currency="rub", transfer_hold=hold_meaning, hold_length_value=hvalue, hold_length_option=hoption, secret_answer="1")
      print(response.json())
      elif action == 'reject_':
      print('stopped')
      так как ни в каком декораторе не указаны фильтры (F.text == "text"), то срабатывает только 1, тот, который выше, поэтому функция со 2 декоратором не работает

      и на самом деле не нужен второй роутер, достаточно использовать фильтры:

      Python
      from aiogram import F

      @rt.callback_query(F.data.in_({"holdon", "holdoff"}))
      async def act(callback_query: types.CallbackQuery, state: FSMContext):
      action = callback_query.data
      global hold_meaning
      if action == 'holdon':
      hold_meaning = True
      await callback_query.message.edit_text("Введите продолжительность холда\nДоступные параметры: 'hour', 'day', 'week', 'month'\nПример: 3 day")
      await state.set_state(Form.waiting_for_hold)
      else:
      hold_meaning = False
      await callback_query.message.edit_text(f'Пользователь: lzt.market/members/{user_n}\nВведите сумму в рублях:')
      await state.set_state(Form.waiting_for_amount)

      @rt.callback_query(F.data.in_({"approve_", "reject_"})
      async def sendm(callback_query: types.CallbackQuery):
      action = callback_query.data
      if action == 'approve_':
      response = await market.payments.transfer(user_id=user_n, amount=price_id, currency="rub", transfer_hold=hold_meaning, hold_length_value=hvalue, hold_length_option=hoption, secret_answer="1")
      print(response.json())
      else:
      print('stopped')
      22 дек 2024 Изменено
    3. Hollywood Автор темы
      ToSa, о, видимо и сейчас также. Завтра попробую
    4. Посмотреть следующие комментарии (1)
  3. Aisan
    Aisan 22 дек 2024 Ничего не продаю и не создаю. Не пишите мне 15 857 26 авг 2020
    Странные вопросы :sueta:
    Ложись спать, завтра переспросишь :babyyoda:
     
Top
Загрузка...