Как изменять текст кнопки по нажатию в Telebot
Я уже несколько дней думаю, в интернете ищу, но никак не могу понять как по нажатию на кнопку изменить ее текст. Работаю, сообственно, с pyTelegramAPI в питоне. Вот кусок кода:
weather = types.InlineKeyboardMarkup(row_width=2)
weather.add(
types.InlineKeyboardButton(text=f'Сейчас', callback_data='weather_now'))
Сверху меню, а при обработке кнопки вот код:
@bot.callback_query_handler(func=lambda call: True)
def handler_call(call):
chat_id = call.message.chat.id
message_id = call.message.message_id
if call.data == 'weather_now':
g = get_weather_now() # Функция для получения погоды
bot.edit_message_text(
chat_id=chat_id,
message_id=message_id,
text=g,
reply_markup=weather,
parse_mode='Markdown')
Если у кого есть идеи, пишите
Ответы (1 шт):
Автор решения: D. Violet
→ Ссылка
определите функцию, которая будет возвращать вам клавиатуру, с аргументом:
def weather_key(text):
weather = types.InlineKeyboardMarkup(row_width=2)
weather.add(
types.InlineKeyboardButton(text=text, callback_data='weather_now'))
return weather
этот аргумент используйте в text= и:
@bot.message_handler(commands=['123'])
def handle_docs_photo(message):
bot.send_message(message.chat.id, 'текст над кнопкой', reply_markup=weather_func('lalala'))
@bot.callback_query_handler(func=lambda call: True)
def handler_call(call):
if call.data == 'weather_now':
bot.edit_message_text(
chat_id=call.message.chat.id,
message_id=call.message.message_id,
text=get_weather_now(),
reply_markup=weather_func('blala'),
parse_mode='Markdown')