Создание кнопок для телеграмм бота с использованием библиотеки pyTelegramBotAPI
Вступление
Доброго времени суток. Телеграмм - божественный месседж скаченный у каждого на телефонах/компьютерах и не только. После прочтение этой статьи вы научитесь создавать кнопки для вашего телеграмм бота. Желаю удачи, в прочтении!)
Предупреждение
Забыл предупредить, в этой статье не будет сказано о создание бота, получение токена через BotFather. Для этого прочитайте документацию библиотеки или посмотрите ролики на эту тему в ютубе(Для удобство ссылку на документацию на русском языке библиотеки pyTelegramBotAPI оставлю в описании). И так, вернемся к теме.
Создание url кнопки
Url кнопки используются, когда хотим создать кнопку при клике которой, пользователь переходил на сайт. Пример:


нажима на "перейти", телеграмм перекинет его на сайт, который вы оставили при создание url кнопки, но как же собственно создать? Легко!
import telebot
from telebot import types # для указание типов
import config
bot = telebot.TeleBot(config.token) # токен лежит в файле config.py
@bot.message_handler(commands=['start']) #создаем команду
def start(message):
markup = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton("Сайт Хабр", url='https://habr.com/ru/all/')
markup.add(button1)
bot.send_message(message.chat.id, "Привет, {0.first_name}! Нажми на кнопку и перейди на сайт)".format(message.from_user), reply_markup=markup)kup)
bot.polling(none_stop=True)
при создание url-кнопки используется тип InlineKeyboardMarkup, в который мы добавляем кнопку и с помощью reply_markup=markup выводим это в чат(обязательно не забудьте указать это, иначе ваша кнопка просто не будете отображаться).
Создание Reply кнопки
Я не знаю как корректно называются кнопки использующие тип ReplyKeyboardMarkup, но я много практиковался в их создание и покажу вам, как это делается. Вот пример Reply кнопок:



Вот весь код самого бота:
import telebot
from telebot import types # для указание типов
import config
bot = telebot.TeleBot(config.token)
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("? Поздороваться")
btn2 = types.KeyboardButton("❓ Задать вопрос")
markup.add(btn1, btn2)
bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я тестовый бот для твоей статьи для habr.com".format(message.from_user), reply_markup=markup)
@bot.message_handler(content_types=['text'])
def func(message):
if(message.text == "? Поздороваться"):
bot.send_message(message.chat.id, text="Привеет.. Спасибо что читаешь статью!)")
elif(message.text == "❓ Задать вопрос"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Как меня зовут?")
btn2 = types.KeyboardButton("Что я могу?")
back = types.KeyboardButton("Вернуться в главное меню")
markup.add(btn1, btn2, back)
bot.send_message(message.chat.id, text="Задай мне вопрос", reply_markup=markup)
elif(message.text == "Как меня зовут?"):
bot.send_message(message.chat.id, "У меня нет имени..")
elif message.text == "Что я могу?":
bot.send_message(message.chat.id, text="Поздороваться с читателями")
elif (message.text == "Вернуться в главное меню"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = types.KeyboardButton("? Поздороваться")
button2 = types.KeyboardButton("❓ Задать вопрос")
markup.add(button1, button2)
bot.send_message(message.chat.id, text="Вы вернулись в главное меню", reply_markup=markup)
else:
bot.send_message(message.chat.id, text="На такую комманду я не запрограммировал..")
bot.polling(none_stop=True)
И так. Что бы создать Replay кнопку, нужно создать переменную, я назвал ее markup(9 строчка кода) в нее помещаем types.ReplyKeyboardMarkup(resize_keyboard=True). Resize_keybord=True выполняет функцию адаптации(я всегда указываю и вам советую тоже).После этого мы создаем переменную уже с самими кнопками и их текстом(10, 11 строчка) и затем добавляем эти переменные коммандой markup.add(__имя ваших переменных__). Коммандой bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я тестовый бот для твоей статьи для habr.com".format(message.from_user), reply_markup=markup) и обязательно не забывайте добавлять reply_markup=markup, иначе просто кнопки не будут отображаться.
Заключение
Большое спасибо вам за прочтение. Не судите строго, это моя первая статья, рассказал я скорее всего не очень, и только поверхностно. Если хотите углубиться в эту тему, почитайте документацию, кстати, вот документация по pyTelegramBotAPI на русском:
при переходе вниз скролите и вы увидите документацию.
пишите комменты с отзывами, буду рад их прочитать.
Мой телеграмм канал: https://t.me/it_diaryy