@i_ikigai

Как раздать отдельным кнопкам в списке разные свойства для кнопок телеграм бота?

Есть 3 кнопки
btn_film = KeyboardButton(text='Найти фильм')
btn_D = KeyboardButton(text='Математические операции')
btn_sql = KeyboardButton(text='Запись в БД')

Тут они собираются
markup_start = ReplyKeyboardMarkup(one_time_keyboard=True,resize_keyboard=True).add(btn_film).add(btn_D).add(btn_sql)

Можно ли вообще сделать так чтобы у кнопки "btn_film" было свойство "one_time_keyboard=True", а у других кнопок оно было "False"?
Или можно 2 пака кнопок соединить в одну?
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Stormx480
Python Backend Developer
Смотри. Насколько я знаю в конструкторе класса ReplyKeyboardMarkup такое не предусмотрено.

Но ты можешь вынести это в обработку логики самой кнопки.

Когда человек нажимает на кнопку (обычную) он отправляет боту текст, который ты ловишь с помощью декоратора-хэндлера, для примера возьмем кнопку "Найти фильм':

@bot.message_handler(regexp = 'Найти фильм')
def find_film(message):
  pass


Далее, нам надо добавить туда логику, что бы убиралась клавиатура после нажатия кнопки.
Для этого есть класс ReplyKeyboardRemove.
Воспользуемся им:

@bot.message_handler(regexp = 'Найти фильм')
def find_film(message):
  markup = telebot.types.ReplyKeyboardRemove()
  bot.send_message(message.chat.id, 'remove keyboard', reply_markup=markup)


Таким образом, логику которую ты не можешь поместить в конструктор класса ReplyKeyboardMarkup - ты можешь вынести в функции обработчики.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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