Как на Python для телеграмм-бота привязать готовую функцию к кнопке?

Рейтинг: 1Ответов: 1Опубликовано: 23.06.2023

Уже готова функция - определение погоды в любом городе. Но мне надо привязать функцию к кнопке. Т.е. кнопка при запуске бота появляется под сообщением, нажимаешь, и бот предлагает узнать погоду.

button1 = types.InlineKeyboardButton(...?)
markup.row(button1)

Таким образом можно сделать? Если да, то как?

Ответы

▲ 0

Можно сделать так:

button1 = types.InlineKeyboardButton(text="Текст кнопки", callback_data="weather_button") # замените Текст кнопки на свой
markup.row(button1) # в этой строке ничего не изменилось

Потом, ниже в коде, написать обработчик:

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    if call.data == 'weather_button':
       # тут вызываете всё что нужно, например, если функция называется
       # weather, то вызываете weather(), а если нужно передать message, используйте weather(call.message)
       # или если просто нужно использовать message, то используйте call.message

Частично взято из ответа @Violet здесь.