как сохранить кнопку, нажатую как строку, с помощью встроенной клавиатуры для telegram bot python - PullRequest
0 голосов
/ 20 апреля 2020
  markup.add(types.InlineKeyboardButton(text='option 1', callback_data='1'))
  markup.add(types.InlineKeyboardButton(text='option 2', callback_data='2'))
  bot.send_message(message.chat.id, f"text: {message.text}\n\nnow please choose a label",reply_markup=markup)
  quuery = Update.callback_query.inline_message_id.text
print(quuery)

Я получаю сообщение об ошибке: AttributeError: тип объекта «Обновление» не имеет атрибута «callback_query»

Ожидаемый вывод: Печать текста любой нажатой кнопки

https://python-telegram-bot.readthedocs.io/en/stable/telegram.callbackquery.html

Я считаю, что мой случай inline_message_id, поскольку кнопки прикреплены к сообщению бота.

Спасибо.

1 Ответ

0 голосов
/ 20 апреля 2020

Я отвечаю на свой вопрос только для того, чтобы я мог помочь другим людям.

сначала

@bot.message_handler(func=lambda msg: text)
def get_title(message):
    data['text'] = message.text
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton(text='A', callback_data='option1'))
    markup.add(types.InlineKeyboardButton(text='B', callback_data='option2'))
    bot.send_message(message.chat.id, f"text: {message.text}\n\nFinally, choose the label that fits the best",reply_markup=markup)

, затем нам нужна другая функция, которая обрабатывает обратный вызов

@bot.callback_query_handler(func=lambda call: True)
def callback_handler(call):
    store_button_clicked = call.data ##call.data gets the the text of a button clicked 'A' or 'B'

##do something with store_button_clicked

Я надеюсь, что предоставил достаточно информации

Спасибо,

...