@motya88

Как редактировать текст сообщения и саму inline кнопку python?

Добрый вечер! Подскажите, как после нажатия на inline кнопку поменять текст сообщения и саму кнопку. Бота пишу на python и использую telebot
5c801d3cdde49650658057.jpeg
При нажатии на кнопку " Выключить свет" должен изменится текст сообщения и сама кнопка.
Вот так:
5c801d8868c20464258690.jpeg

Сам код:

elif message.text == ' Настройки':
            keyboard = types.InlineKeyboardMarkup()
            callback_button = types.InlineKeyboardButton(text="Включить свет 1", callback_data="test")
            keyboard.add(callback_button)
            callback_button = types.InlineKeyboardButton(text="Выключить свет 2 ", callback_data="test")
            keyboard.add(callback_button)
            callback_button = types.InlineKeyboardButton(text="Выключить  свет 3", callback_data="test")
            keyboard.add(callback_button)
            callback_button = types.InlineKeyboardButton(text="Выключить свет 4", callback_data="test")
            keyboard.add(callback_button)
            bot.send_message(message.chat.id, "Включение/отключение света в помещениях:" +"\n" + "свет 1 выкл "+"\n" + "свет 2 вкл "+"\n" + "свет 3 вкл "+"\n" + "свет 4 вкл ", reply_markup=keyboard)
  • Вопрос задан
  • 9159 просмотров
Пригласить эксперта
Ответы на вопрос 3
@motya88 Автор вопроса
С текстом понятно. А как после нажатия кнопки менять саму кнопку?
Ответ написан
Torrua
@Torrua
А что вам понятно с текстом? Мне вот из вашего кода совсем ничего не понятно, но попробую угадать: вы хотите, чтобы при повторной отправке текста "Настройки", Телеграм учитывал предыдущие нажатия и менял текст кнопок соответственно?

Если да (как и в любом случае, в общем-то), то вам придется где-то фиксировать текущее состояние выключателей (обычно это делается в базе данных) и генерировать текст кнопок, исходя из этих состояний.

Предположим, что вы получили состояние выключателя в boolean переменную light_1_on, тогда код
text="Выключить свет 1" if light_1_on else "Включить свет 1"
callback_button = types.InlineKeyboardButton(text, callback_data="test")
будет менять текст кнопки соответственно состоянию выключателя.

Текст самого сообщения тоже должен генерироваться динамически, исходя из текущего положения выключателей.
Ответ написан
Комментировать
@Sat0shi
ИБ
msg = bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="ТЕКСТ", parse_mode='Markdown')
msg = bot.edit_message_reply_markup(call.from_user.id, call.message.message_id, reply_markup=ModeKeyboard)
Ответ написан
Ваш ответ на вопрос

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

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