Загрузка...

I don’t understand: can’t there be 2 inline keyboards in one bot?

Thread in Python created by Hollywood Dec 22, 2024. 191 view

  1. Hollywood
    Hollywood Topic starter Dec 22, 2024 э 20,248 Oct 28, 2020
    Или как?
    Проблема та же https://lolz.live/threads/7830232/

    Только теперь у меня 2 инлайн клавиатуры и действие не выполняется, хотя пишет handled
     
  2. ToSa
    ToSa Dec 22, 2024 guest, боже, храни кьют-рок. :beer::beer::beer: 24,038 Dec 18, 2021
    код в студию
     
    1. View previous comments (3)
    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')
    3. Hollywood Topic starter
      ToSa, о, видимо и сейчас также. Завтра попробую
    4. Hollywood Topic starter
      ToSa, помогло кстати, спасибо :stitch_love:
  3. Aisan
    Aisan Dec 22, 2024 Ничего не продаю и не создаю. Не пишите мне 15,857 Aug 26, 2020
    Странные вопросы :sueta:
    Ложись спать, завтра переспросишь :babyyoda:
     
Top
Loading...