@RG5000

Не получается создать кнопку назад и скрыть другие кнопки?

Сначала код бота телеграм, ниже него 2 вопроса

import telebot
from telebot import types
from telebot.types import ReplyKeyboardMarkup, InlineKeyboardMarkup,InlineKeyboardButton


#ID ТОКЕНА ИЗ GODFATHER
bot = telebot.TeleBot("TOKEN ID")


#ПРИВЕТСТВИЕ И ПОЯВЛЕНИЕ ГЛАВНОГО МЕНЮ
@bot.message_handler(commands=["start"])
def hello(message):

    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("КНОПКА1")
    btn2 = types.KeyboardButton("КНОПКА2")
    markup.add(btn1, btn2)

    bot.send_message(message.chat.id, "Приветствие", reply_markup=markup)

   
#АКТИВАЦИЯ КНОПОК ГЛАВНОГО МЕНЮ
@bot.message_handler(content_types=["text"])
def head_menu_buttons(message):
    
    if message.text == "КНОПКА1":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Кнопка1")
        btn2 = types.KeyboardButton("Кнопка2")
        btn3 = types.KeyboardButton("Кнопка3")
        main_menu = types.KeyboardButton("Главное меню")
        markup.add(btn1, btn2, btn3, main_menu)
        
        bot.send_message(message.from_user.id, "Субменю КНОПКИ1",  reply_markup=markup)

    if message.text == 'КНОПКА2':
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Кнопка1")
        btn2 = types.KeyboardButton("Кнопка2")
        btn3 = types.KeyboardButton("Кнопка3")
        main_menu = types.KeyboardButton("Главное меню")
        markup.add(btn1, btn2, btn3, main_menu)
        
        bot.send_message(message.from_user.id, "Субменю КНОПКИ2", reply_markup=markup)

#АКТИВАЦИЯ КНОПКИ ГЛАВНОЕ МЕНЮ (ВЕРНУТЬСЯ В ГЛАВНОЕ МЕНЮ)
    elif message.text == "Главное меню":
        hello(message)


#АКТИВАЦИЯ КНОПОК СУБМЕНЮ КНОПКИ1
    elif message.text == "Кнопка1":
        markup = types.InlineKeyboardMarkup(row_width=1)
        btn1 = types.InlineKeyboardButton("Инлайн кнопка1", callback_data="inline_button1")
        btn2 = types.InlineKeyboardButton("Инлайн кнопка2", callback_data="inline_button2")
        markup.add(btn1, btn2)

        bot.send_message(message.chat.id, "Инлайновые кнопки Кнопки1", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
   try:
     if call.message:
      if call.data == "inline_button1":
        bot.send_photo(call.message.chat.id, open("/Photo1.jpg", 'rb'), caption="Прикрепленный к фото текст")
      if call.data == "inline_button2":
         bot.send_photo(call.message.chat.id, open("/Photo2.jpg", 'rb'), caption="Прикрепленный к фото текст")

   except Exception as e:
       print(repr(e))
 
#ЗАКРЫВАЕМ
if __name__ == '__main__':
    bot.polling(none_stop = True)


Итак. Вопрос вот в чём. Не могу прийти к логическому заключению, каким образом можно скрыть кнопки клавиатуры.

Запускаю бот. Приветствие и кнопки главного меню. Всё отлично.
63f3cb3cd00d1012306860.jpeg

Нажимаю КНОПКА1 появляется субменю этой кнопки. Всё отлично.
63f3cbb31a58a663677117.jpeg

Теперь. Я нажимаю Кнопку1, появляются инлайн кнопки, всё отлично. Но мне необходимо, чтобы при нажатии одной из трёх Кнопок (1,2,3) они исчезали, а осталось только кнопка Главное меню и появилась кнопка Назад, чтобы возвращаться в субменю КНОПКА1.
В итоге чтобы было вот так:
63f3cd45b320c616019928.png

И второй вопрос, при нажатии кнопки Главное меню меня возвращает к главным кнопкам, всё отлично. Но делаю я это при помощи команды

elif message.text == "Главное меню":
        hello(message)


Тоесть снова запускается Приветствие как при старте. А мне не нужно заново приветствовать, а нужно просто вернуттся в Главное меню.

Вот понятия не имею как эти 2 проблемы решить одновременно.
  • Вопрос задан
  • 753 просмотра
Решения вопроса 1
1-Чтобы удалить клавиатуру, воспользуйтесь методом telebot.types.ReplyKeyboardRemove

2-Чтобы вернуться в главное меню нужно отправлять сообщение, к примеру, с сообщением «Главное меню» и нужной вам клавиатурой
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы