Как изменить инлайн клавиатуру telebot?
Использую inline клавиатуру хочу сделать так чтобы, после нажатия кнопки сообщение и клавиатура изменялась в зависимости от выбранной кнопки.
Приложил фотографию как сейчас всё работает. То есть всё оставить также, только избавится от нового сообщения и сделать инлайн клавиатуру в одном сообщении!
Видел команду edit_message_reply_markup, но так и не понял как с ней разобраться, вот код:
elif (call.data == 'menu'):
keyboard = types.InlineKeyboardMarkup()
b1 = types.InlineKeyboardButton(text='Магазины', callback_data='magazin')
b2 = types.InlineKeyboardButton(text='Оставить отзыв⭐', callback_data='otziv')
b3 = types.InlineKeyboardButton(text='Поддержка⚙', callback_data='podderzhka')
b4 = types.InlineKeyboardButton(text='Инструкция', callback_data='instrukciya')
keyboard.add(b1)
keyboard.add(b2)
keyboard.add(b3)
keyboard.add(b4)
bot.send_message(call.message.chat.id,
f"...",
reply_markup=keyboard)
elif (call.data == 'magazin'):
keyboard = types.InlineKeyboardMarkup()
b1 = types.InlineKeyboardButton(text="Одежда и обувь", callback_data='o')
b2 = types.InlineKeyboardButton(text="Кино", callback_data='k')
b3 = types.InlineKeyboardButton(text="Доставка", callback_data='d')
b4 = types.InlineKeyboardButton(text="Маркетплейсы", callback_data='m')
b5 = types.InlineKeyboardButton(text="Такси", callback_data='t')
b6 = types.InlineKeyboardButton(text="Музыка", callback_data='mu')
b7 = types.InlineKeyboardButton(text="Хобби", callback_data='hob')
b8 = types.InlineKeyboardButton(text="Электроника⚡", callback_data='elec')
b9 = types.InlineKeyboardButton(text="Спорттовары⚽", callback_data='sport')
b10 = types.InlineKeyboardButton(text="Аптека", callback_data='apt')
b11 = types.InlineKeyboardButton(text="Красота", callback_data='kra')
b12 = types.InlineKeyboardButton(text="Цветы", callback_data='cvety')
b13 = types.InlineKeyboardButton(text="Детские товары", callback_data='det')
keyboard.add(b1)
keyboard.add(b2)
keyboard.add(b3)
keyboard.add(b4)
keyboard.add(b5)
keyboard.add(b6)
keyboard.add(b7)
keyboard.add(b8)
keyboard.add(b9)
keyboard.add(b10)
keyboard.add(b11)
keyboard.add(b12)
keyboard.add(b13)
bot.send_message(call.message.chat.id,
text="Выберите категорию промокодов:\n",
reply_markup=keyboard)
Ответы (1 шт):
Автор решения: oleksandrigo
→ Ссылка
Вместо bot.send_message делаешь так
@bot.message_handler(commands=['start'])
def start(msg: types.Message):
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton("Кнопка 1", callback_data="but_1"))
bot.send_message(chat_id=msg.chat.id, text="Жми кнопку", reply_markup=markup)
@bot.callback_query_handler(func=lambda call: call.data == "but_1")
def but1_pressed(call: types.CallbackQuery):
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton("Кнопка 2", callback_data="but_2"))
bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.id, reply_markup=markup)
PS.
А еще не стоит просто так брать условие в скобки (call.data == 'magazin') это не имеет никакого смысла, и мешает нормально воспринимать код
