Найти в Дзене
Django | Python

6. Добавим клавиатуру и научим Telegram бота рассказывать анекдоты.

ReplyKeyboard — это обычная клавиатура с кнопками которая располагается в чате Telegram внизу окна. Импортируем модуль разметки клавиатуры ReplyKeyboardMarkup и создадаем клавиатуру. Разметка клавиатуры (меню) — это просто список в списке с названием кнопок. И каждый новый список — это новый ряд кнопок. Кнопка посылает в чат текст, который на ней написан. Переименуем одну из кнопок на «Начать». При ее нажатии будет отправляться слово «Начать», так как это текст а не команда, его обрабатывает функция parrot. Для того чтобы выполнялось некое действие при нажатии кнопки, напишем обработчик для проверки текста. Обратите внимание, при каждом изменении кода необходимо перезапускать бота. Обучим Telegram бота присылать анекдот при нажатии пользователем на кнопку "Анекдот" или при отправке слова Анекдот. Анекдоты будем брать с тематического сайта из интернета. Для этого нам потребуется библиотека requests и BeautifulSoup.  — requests — стандартная библиотека для составления HTTP-запросов. — B

ReplyKeyboard — это обычная клавиатура с кнопками которая располагается в чате Telegram внизу окна.

Импортируем модуль разметки клавиатуры ReplyKeyboardMarkup и создадаем клавиатуру.

-2

Разметка клавиатуры (меню) — это просто список в списке с названием кнопок. И каждый новый список — это новый ряд кнопок.

-3

Кнопка посылает в чат текст, который на ней написан. Переименуем одну из кнопок на «Начать». При ее нажатии будет отправляться слово «Начать», так как это текст а не команда, его обрабатывает функция parrot.

-4

Для того чтобы выполнялось некое действие при нажатии кнопки, напишем обработчик для проверки текста. Обратите внимание, при каждом изменении кода необходимо перезапускать бота.

-5

Обучим Telegram бота присылать анекдот при нажатии пользователем на кнопку "Анекдот" или при отправке слова Анекдот. Анекдоты будем брать с тематического сайта из интернета. Для этого нам потребуется библиотека requests и BeautifulSoup. 

— requests — стандартная библиотека для составления HTTP-запросов.

— BeautifulSoup — библиотека для парсинга HTML и XML документов.

В терминале PyCharm с помощью команд pip install requests и pip install bs4 устанавливаем нужные нам библиотеки. Обратите внимание на виртуальное окружение, оно должно быть активировано.

-6

Далее:

1. Импортируем скаченные библиотеки в файл с кодом;

2. Создадим кнопку с названием «Анекдот», при нажатии которой Telegram бот будет присылать анекдот в чат; 

3. Напишем обработчик слова «Анекдот»;

4. Создадим функцию get_anecdote().

-7

Перезапускаем код и проверяем нажатием на кнопку «Анекдот» или отправкой сообщением «Анекдот». Готово, Telegram бот умеет рассказывать анекдоты.

-8

Если обратили внимание в телефонной версии Telegram приложения, кнопки занимают очень много места. Telegram позволяет автоматически уменьшить размер, для этого передадим в инициализатор класса ReplyKeyboardMarkup параметр resize_keyboard значение True. После изменений кода перезапустите бота и в чате Telegram очистите историю.

-9

Добавляем изменения программы в Git репозиторий и по необходимости выкладываем на сайт GitHub. Написанный код в этой статье можно скачать (скопировать) на GitHub.

Предыдущие статьи из серии Python Telegram Bot:

5. Выкладываем код Telegram бота на GitHub.

4. Учим Telegram бота обрабатывать текстовые сообщения.

3. Научим Telegram бота сообщать о его запуске и здороваться.

2. Создаем и регистрируем бота в BotFather.

1. Создаем проект и настраиваем Git репозиторий.