@sachok7878

Как вызвать функции зависимо от колбека?

Есть 3 функции:

  1. send_docs_shop1()
  2. send_docs_shop2()
  3. send_docs_shop3()

Как вызвать их зависимо от callback_query. Например если callback_query=='shop1, вызвать send_docs_shop1() или callback_query=='shop2 вызвать send_docs_shop2() и тд.

Сейчас делаю так:

@bot.callback_query_handler(func=lambda call:call.data=='shop1')
def get_select_button_shop1(call: types.CallbackQuery):
markup_inline_item=types.InlineKeyboardMarkup()
markup_inline_item.add()
bot.edit_message_text(chat_id=call.message.chat.id,message_id=call.message.id,text="Вы вызвали 
shop1:",reply_markup=markup_inline_item)

@bot.message_handler()
def message_handler(message: types.Message):
if message.text in shop1:
    shop1.send_docs_shop1(message)
else:
    shop1.send_query_shop1(message)

@bot.callback_query_handler(func=lambda call:call.data=='shop2')
def get_select_button_shop2(call: types.CallbackQuery):
markup_inline_item=types.InlineKeyboardMarkup()
markup_inline_item.add()
bot.edit_message_text(chat_id=call.message.chat.id,message_id=call.message.id,text='Вы вызвали 
shop2:',reply_markup=markup_inline_item)

@bot.message_handler()
def message_handler(message: types.Message):
if message.text in shop2:
    shop2.send_docs_shop2(message)
else:
    shop2.send_query_shop2(message)

 @bot.callback_query_handler(func=lambda call:call.data=='shop3')
def get_select_button_shop3(call: types.CallbackQuery):
markup_inline_item=types.InlineKeyboardMarkup()
markup_inline_item.add()
bot.edit_message_text(chat_id=call.message.chat.id,message_id=call.message.id,text='Вы вызвали 
shop2:',reply_markup=markup_inline_item)

@bot.message_handler()
def message_handler(message: types.Message):
if message.text in shop3:
    shop3.send_docs_shop3(message)
else:
    shop3.send_query_shop3(message)

но независимо от колбека, вызывается только shop1 Прошу помочь с вопросом, уже 3 день мучаюсь, пробовала разные варианты, но результата 0.
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
У объекта call (тип CallbackQuery) есть свойство data. Ты его можешь задать при создании кнопки (которое почему-то опущено в коде), тогда оно будет иметь значение, соответствующее нажатой кнопке. А дальше просто сравниваешь это значение с желаемым.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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