Что такое res=False и reply_markup=keyboard?

Рейтинг: 0Ответов: 1Опубликовано: 29.01.2023

Иногда замечаю что в ботах для телеграмма на python пишут res=False и reply_markup=keyboard, к примеру:

@bot.message_handler(commands=['start', 'help'])
def send_welcome(message, res=False):
    welcome_text = """
    Привет! Я умею рассказывать стихи, знаю много интересных фактов и могу показать милых котиков!
    """
    keyboard = telebot.types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True, one_time_keyboard=False)
    button1 = telebot.types.KeyboardButton("Факт")
    button2 = telebot.types.KeyboardButton("Стихотворение")
    button3 = telebot.types.KeyboardButton("Котики")
    button4 = telebot.types.KeyboardButton("Стикер")
    keyboard.add(button1, button2, button3, button4)
    audio = open(r'happy.mp3', 'rb')
    bot.send_audio(message.chat.id, audio)
    audio.close()

    bot.send_message(message.chat.id, welcome_text, reply_markup=keyboard)

Можете объяснить что они делают?

Ответы

▲ 0Принят

У ботов есть функция замены стандартной клавиатуры на кнопочную. Для этого у всех функций есть опциональный аргумент reply_markup. ReplyKeyboardMarkup – и есть та самая клавиатура. Метод row() создает ряд (максимум 12) из кнопок, передаваемых в качестве аргумента. Также есть особенная клавиатура types.ReplyMarkupRemove(), которая меняет клавиатуру на стандартную. Пример:

from telebot import types

@bot.message_handler(commands=['start'])
def start(message):
  markup = types.ReplyKeyboardMarkup()
  buttonA = types.KeyboardButton('A')
  buttonB = types.KeyboardButton('B')
  buttonC = types.KeyboardButton('C')

  markup.row(buttonA, buttonB)
  markup.row(buttonC)

  bot.send_message(message.chat.id, 'It works!', reply_markup=markup)

введите сюда описание изображения

Можно создавать клавиатуру для отдельного сообщения. Передавать его нужно так же в аргумент reply_markup:

from telebot import types

@bot.message_handler(commands=['start'])
def start(message):
  markup = types.InlineKeyboardMarkup()
  buttonA = types.InlineKeyboardButton('A', callback_data='a')
  buttonB = types.InlineKeyboardButton('B', callback_data='b')
  buttonC = types.InlineKeyboardButton('C', callback_data='c')

  markup.row(buttonA, buttonB)
  markup.row(buttonC)

  bot.send_message(message.chat.id, 'It works!', reply_markup=markup)