February 17, 2021

5. Добавляем кнопки

Поскольку основная идея моего приложения - каталог рецептов, который будет отсортирован по категориям, для начала я пробую добавить первые кнопки к своему боту и их обработку.

Получается довольно долго, но получается.

В процессе я сталкиваюсь с проблемами из-за большого количества реализаций подобного кода для старой версии API, где для добавления кнопок использовался список. С версии 2.0, как оказалось, каждая кнопка стала являться отдельным объектом со своими методами и атрибутами, поэтому итоговый код выглядит следующим образом:

import telebot from telebot import types from telebot.types import InlineKeyboardMarkup

import config

bot = telebot.TeleBot(config.TOKEN)

@bot.message_handler(commands=['start']) def welcome(message):

# Создаем панель с кнопками keyboard = types.InlineKeyboardMarkup()

# добавляем кнопки keyboard.add(types.InlineKeyboardButton("Сырники",callback_data="cheesecakes"), types.InlineKeyboardButton("Пироги", callback_data="pies"))

# отправляем сообщение с кнопками

bot.send_message(message.chat.id, 'Давай что-нибудь испечем!', reply_markup=keyboard)

# Обработка нажатой кнопки

@bot.message_handler(content_types=["text"]) def first(message): bot.send_message(message.chat.id, message.text)

@bot.callback_query_handler(func=lambda call: True) def callback(call): if call.message: if call.data == "cheesecakes": bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Сочный сырник") elif call.data == "pies": bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Сладкий пирог")

bot.polling(none_stop=True)

Что ж, начало положено! Идем дальше!